Skip to main content
GET
/
markets
/
{marketId}
cURL
curl --request GET \
  --url https://api.jup.ag/prediction/v1/markets/{marketId} \
  --header 'x-api-key: <api-key>'
import requests

url = "https://api.jup.ag/prediction/v1/markets/{marketId}"

headers = {"x-api-key": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};

fetch('https://api.jup.ag/prediction/v1/markets/{marketId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.jup.ag/prediction/v1/markets/{marketId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.jup.ag/prediction/v1/markets/{marketId}"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("x-api-key", "<api-key>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.jup.ag/prediction/v1/markets/{marketId}")
.header("x-api-key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.jup.ag/prediction/v1/markets/{marketId}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'

response = http.request(request)
puts response.read_body
{
  "marketId": "<string>",
  "openTime": 123,
  "closeTime": 123,
  "resolveAt": "<string>",
  "eventId": "<string>",
  "title": "<string>",
  "marketResultPubkey": "<string>",
  "imageUrl": "<string>",
  "rulesPrimary": "<string>",
  "rulesSecondary": "<string>",
  "outcomes": [
    "<string>"
  ],
  "marketOptions": [
    {
      "label": "<string>",
      "buyYes": true
    }
  ],
  "clobTokenIds": [
    "<string>"
  ],
  "isTeamMarket": true,
  "team": {},
  "sportsLine": 123,
  "sportsMarketType": "<string>",
  "outcomeMint": "<string>",
  "outcomeTokenProgram": "<string>",
  "marketPda": "<string>",
  "outcomeSide": "<string>",
  "tradable": true,
  "pricing": {
    "buyYesPriceUsd": 123,
    "buyNoPriceUsd": 123,
    "sellYesPriceUsd": 123,
    "sellNoPriceUsd": 123,
    "volume": 123
  }
}
{
"message": "<string>",
"request_id": "<string>",
"code": "<string>",
"param": "<string>",
"doc_url": "<string>"
}

Authorizations

x-api-key
string
header
required

Path Parameters

marketId
string
required

Market identifier

Minimum string length: 1

Response

Market data

Market fields are returned flat (there is no nested metadata object).

marketId
string
required

Market identifier

status
enum<string>
required

Current market status

Available options:
open,
closed,
cancelled
result
enum<string> | null
required

Market result. null until resolved, then "yes" or "no"

Available options:
yes,
no
openTime
number
required

Unix timestamp (seconds) when the market opens

closeTime
number
required

Unix timestamp (seconds) when the market closes

resolveAt
required

When the market resolved. null while open; returned as an ISO 8601 string once resolved

eventId
string

Parent event identifier

provider
enum<string>

Market data provider

Available options:
polymarket,
gx,
bisonfi
title
string

Market title

marketResultPubkey
string | null

Public key of the market result account

imageUrl
string<uri> | null

Market image URL

rulesPrimary
string

Primary resolution rules

rulesSecondary
string

Secondary resolution rules

outcomes
string[]

Outcome labels for the market

marketOptions
object[]

Selectable options for team or multi-outcome markets

clobTokenIds
string[]

Underlying CLOB token IDs (provider-specific)

isTeamMarket
boolean

True for team or sports markets

team
object | null

Team metadata, present for team markets

sportsLine
number | null

Sports line or handicap, when applicable

sportsMarketType
string | null

Sports market type, when applicable

outcomeMint
string | null

Outcome token mint for this market side (Jupiter Forecast / bisonfi). Buying the market gives you this token; it can also be traded directly through the Swap API.

outcomeTokenProgram
string | null

Token program that owns outcomeMint. Jupiter Forecast uses Token-2022 (TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb).

marketPda
string | null

On-chain market account (Jupiter Forecast / bisonfi).

outcomeSide
string | null

Outcome side for Jupiter Forecast markets (up or down).

tradable
boolean

Whether this Jupiter Forecast side can be traded right now. The Discover example filters on this field.

lifecycleStatus
enum<string>

Jupiter Forecast trading lifecycle: open, resolving after the close time, or settled after issuer resolution. Only open is tradable.

Available options:
open,
resolving,
settled
pricing
object