curl --request GET \
--url https://core.api.dev.predictstreet.sde.adifoundation.ai/api/platform/contractsimport requests
url = "https://core.api.dev.predictstreet.sde.adifoundation.ai/api/platform/contracts"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://core.api.dev.predictstreet.sde.adifoundation.ai/api/platform/contracts', 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://core.api.dev.predictstreet.sde.adifoundation.ai/api/platform/contracts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://core.api.dev.predictstreet.sde.adifoundation.ai/api/platform/contracts"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://core.api.dev.predictstreet.sde.adifoundation.ai/api/platform/contracts")
.asString();require 'uri'
require 'net/http'
url = URI("https://core.api.dev.predictstreet.sde.adifoundation.ai/api/platform/contracts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"chainId": 99999,
"rpcUrl": "https://rpc.ab.testnet.adifoundation.ai/",
"vaultFactory": "<string>",
"usdc": "<string>",
"wrappedCollateral": "<string>",
"ctfExchange": "<string>",
"ctfExchangeNegRisk": "<string>",
"negRiskAdapter": "<string>",
"conditionalTokens": "<string>",
"depositLimitRegistry": "<string>",
"depositLimitRegistryProxy": "<string>",
"oracle": "<string>",
"negRiskOracle": "<string>",
"multicallExecutor": "<string>",
"usdcEip712": {
"name": "USD Coin",
"version": "2"
},
"ccipBridge": {
"destChainSelector": "<string>"
},
"generatedAt": "2023-11-07T05:31:56Z"
}{
"status": 404,
"error": {
"code": "<string>",
"message": "<string>",
"trace_id": "<string>",
"retryAfterSec": 123,
"retryable": true,
"details": {}
}
}{
"status": 404,
"error": {
"code": "<string>",
"message": "<string>",
"trace_id": "<string>",
"retryAfterSec": 123,
"retryable": true,
"details": {}
}
}Get contract addresses
Contract addresses and chain settings for the environment this API serves: the chain id and a public RPC URL, the two exchanges you sign orders against (ctfExchange for binary markets, ctfExchangeNegRisk for neg-risk markets), the USDC collateral token and its EIP-712 permit domain, the vault factory, the outcome-token contract, both oracles, and the executor you name as spender in a gasless-deposit permit. The values come from the live deployment’s configuration, so read them at startup instead of hardcoding addresses. See Environments for a sample response and Addresses for the per-environment table.
Public, no authentication. Rate limit: 60 requests per minute per IP, on top of the 600 per minute per IP that notices, status, contracts and fee-config share. Cacheable for 30 seconds.
curl --request GET \
--url https://core.api.dev.predictstreet.sde.adifoundation.ai/api/platform/contractsimport requests
url = "https://core.api.dev.predictstreet.sde.adifoundation.ai/api/platform/contracts"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://core.api.dev.predictstreet.sde.adifoundation.ai/api/platform/contracts', 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://core.api.dev.predictstreet.sde.adifoundation.ai/api/platform/contracts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://core.api.dev.predictstreet.sde.adifoundation.ai/api/platform/contracts"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://core.api.dev.predictstreet.sde.adifoundation.ai/api/platform/contracts")
.asString();require 'uri'
require 'net/http'
url = URI("https://core.api.dev.predictstreet.sde.adifoundation.ai/api/platform/contracts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"chainId": 99999,
"rpcUrl": "https://rpc.ab.testnet.adifoundation.ai/",
"vaultFactory": "<string>",
"usdc": "<string>",
"wrappedCollateral": "<string>",
"ctfExchange": "<string>",
"ctfExchangeNegRisk": "<string>",
"negRiskAdapter": "<string>",
"conditionalTokens": "<string>",
"depositLimitRegistry": "<string>",
"depositLimitRegistryProxy": "<string>",
"oracle": "<string>",
"negRiskOracle": "<string>",
"multicallExecutor": "<string>",
"usdcEip712": {
"name": "USD Coin",
"version": "2"
},
"ccipBridge": {
"destChainSelector": "<string>"
},
"generatedAt": "2023-11-07T05:31:56Z"
}{
"status": 404,
"error": {
"code": "<string>",
"message": "<string>",
"trace_id": "<string>",
"retryAfterSec": 123,
"retryable": true,
"details": {}
}
}{
"status": 404,
"error": {
"code": "<string>",
"message": "<string>",
"trace_id": "<string>",
"retryAfterSec": 123,
"retryable": true,
"details": {}
}
}Response
OK
Contract addresses and chain settings for this environment. Every address is a 0x-prefixed 20-byte hex string.
EVM chain id of the network the contracts are deployed on — 99999 on the ADI testnet.
99999
Public JSON-RPC URL for read-only on-chain calls.
"https://rpc.ab.testnet.adifoundation.ai/"
VaultFactory — vaultOf(wallet) returns a wallet's vault address. The platform calls deployVault for you.
USDC collateral token (ERC-20). On testnet this is mUSDC, which exposes a public mint(address,uint256).
Optional WrappedCollateral helper. null when the environment has none, as on the current testnet.
Exchange for binary markets — the verifyingContract of the EIP-712 domain you sign binary-market orders against.
Exchange for neg-risk markets — the verifyingContract for neg-risk orders. Not the same address as ctfExchange.
NegRiskAdapter — multi-outcome (neg-risk) support on top of ConditionalTokens. See NegRiskAdapter.
ConditionalTokens — the ERC-1155 contract that holds outcome tokens.
DepositLimitRegistry address as configured for this environment. It can be the same address as depositLimitRegistryProxy, as on the current testnet; send your calls to depositLimitRegistryProxy.
DepositLimitRegistry transparent proxy — the address to call from clients.
Oracle for binary markets. Disputes on a binary market are filed here with challengeOutcome(conditionId).
Oracle for neg-risk markets. Disputes on a neg-risk group are filed here with challengeOutcome(negRiskMarketId), not on oracle. null when the environment has no neg-risk oracle.
Executor contract for gasless deposits. Name it as the spender of the USDC EIP-2612 Permit you sign for POST /api/deposits/relay — not the account that pays the gas. The relay rebuilds the permit with this spender, so a permit signed for any other spender is refused as permit_signer_mismatch.
name and version of the USDC contract's EIP-712 domain. Use exactly these values when you build the Permit for a gasless deposit; any other values recover a different signer and the relay answers permit_signer_mismatch.
Show child attributes
Show child attributes
Cross-chain withdrawal bridge (Chainlink CCIP). null when the environment has no bridge configured — cross-chain withdrawals are then unavailable.
Show child attributes
Show child attributes
ISO-8601 — when this response was generated. Not a deploy timestamp: compare the addresses between reads to detect a redeploy.