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>"
}Get Market
Get detailed market information by market ID
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
Get API key via https://developers.jup.ag/portal
Path Parameters
Market identifier
1Response
Market data
Market fields are returned flat (there is no nested metadata object).
Market identifier
Current market status
open, closed, cancelled Market result. null until resolved, then "yes" or "no"
yes, no Unix timestamp (seconds) when the market opens
Unix timestamp (seconds) when the market closes
When the market resolved. null while open; returned as an ISO 8601 string once resolved
Parent event identifier
Market data provider
polymarket, gx, bisonfi Market title
Public key of the market result account
Market image URL
Primary resolution rules
Secondary resolution rules
Outcome labels for the market
Selectable options for team or multi-outcome markets
Show child attributes
Show child attributes
Underlying CLOB token IDs (provider-specific)
True for team or sports markets
Team metadata, present for team markets
Sports line or handicap, when applicable
Sports market type, when applicable
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.
Token program that owns outcomeMint. Jupiter Forecast uses Token-2022 (TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb).
On-chain market account (Jupiter Forecast / bisonfi).
Outcome side for Jupiter Forecast markets (up or down).
Whether this Jupiter Forecast side can be traded right now. The Discover example filters on this field.
Jupiter Forecast trading lifecycle: open, resolving after the close time, or settled after issuer resolution. Only open is tradable.
open, resolving, settled Show child attributes
Show child attributes
Was this page helpful?
