curl --request POST \
--url https://api.fieldfunded.com/v1/bets/check \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"selections": [
{
"event_id": "87654321",
"market": "Match Winner",
"outcome": "Home",
"odds": 1.85,
"stake": 10,
"market_id": 340168,
"selection_id": 1824650
},
{
"event_id": "87654321",
"market": "Over/Under 2.5",
"outcome": "Over 2.5",
"odds": 1.6,
"stake": 15
},
{
"event_id": "87654322",
"market": "Match Winner",
"outcome": "Away",
"odds": 3.2,
"stake": 5
}
]
}
'import requests
url = "https://api.fieldfunded.com/v1/bets/check"
payload = { "selections": [
{
"event_id": "87654321",
"market": "Match Winner",
"outcome": "Home",
"odds": 1.85,
"stake": 10,
"market_id": 340168,
"selection_id": 1824650
},
{
"event_id": "87654321",
"market": "Over/Under 2.5",
"outcome": "Over 2.5",
"odds": 1.6,
"stake": 15
},
{
"event_id": "87654322",
"market": "Match Winner",
"outcome": "Away",
"odds": 3.2,
"stake": 5
}
] }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
selections: [
{
event_id: '87654321',
market: 'Match Winner',
outcome: 'Home',
odds: 1.85,
stake: 10,
market_id: 340168,
selection_id: 1824650
},
{
event_id: '87654321',
market: 'Over/Under 2.5',
outcome: 'Over 2.5',
odds: 1.6,
stake: 15
},
{
event_id: '87654322',
market: 'Match Winner',
outcome: 'Away',
odds: 3.2,
stake: 5
}
]
})
};
fetch('https://api.fieldfunded.com/v1/bets/check', 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.fieldfunded.com/v1/bets/check",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'selections' => [
[
'event_id' => '87654321',
'market' => 'Match Winner',
'outcome' => 'Home',
'odds' => 1.85,
'stake' => 10,
'market_id' => 340168,
'selection_id' => 1824650
],
[
'event_id' => '87654321',
'market' => 'Over/Under 2.5',
'outcome' => 'Over 2.5',
'odds' => 1.6,
'stake' => 15
],
[
'event_id' => '87654322',
'market' => 'Match Winner',
'outcome' => 'Away',
'odds' => 3.2,
'stake' => 5
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fieldfunded.com/v1/bets/check"
payload := strings.NewReader("{\n \"selections\": [\n {\n \"event_id\": \"87654321\",\n \"market\": \"Match Winner\",\n \"outcome\": \"Home\",\n \"odds\": 1.85,\n \"stake\": 10,\n \"market_id\": 340168,\n \"selection_id\": 1824650\n },\n {\n \"event_id\": \"87654321\",\n \"market\": \"Over/Under 2.5\",\n \"outcome\": \"Over 2.5\",\n \"odds\": 1.6,\n \"stake\": 15\n },\n {\n \"event_id\": \"87654322\",\n \"market\": \"Match Winner\",\n \"outcome\": \"Away\",\n \"odds\": 3.2,\n \"stake\": 5\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fieldfunded.com/v1/bets/check")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"selections\": [\n {\n \"event_id\": \"87654321\",\n \"market\": \"Match Winner\",\n \"outcome\": \"Home\",\n \"odds\": 1.85,\n \"stake\": 10,\n \"market_id\": 340168,\n \"selection_id\": 1824650\n },\n {\n \"event_id\": \"87654321\",\n \"market\": \"Over/Under 2.5\",\n \"outcome\": \"Over 2.5\",\n \"odds\": 1.6,\n \"stake\": 15\n },\n {\n \"event_id\": \"87654322\",\n \"market\": \"Match Winner\",\n \"outcome\": \"Away\",\n \"odds\": 3.2,\n \"stake\": 5\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fieldfunded.com/v1/bets/check")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"selections\": [\n {\n \"event_id\": \"87654321\",\n \"market\": \"Match Winner\",\n \"outcome\": \"Home\",\n \"odds\": 1.85,\n \"stake\": 10,\n \"market_id\": 340168,\n \"selection_id\": 1824650\n },\n {\n \"event_id\": \"87654321\",\n \"market\": \"Over/Under 2.5\",\n \"outcome\": \"Over 2.5\",\n \"odds\": 1.6,\n \"stake\": 15\n },\n {\n \"event_id\": \"87654322\",\n \"market\": \"Match Winner\",\n \"outcome\": \"Away\",\n \"odds\": 3.2,\n \"stake\": 5\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"event_id": "87654321",
"market": "Match Winner",
"outcome": "Home",
"odds": 1.85,
"stake": 10,
"result": "won",
"event_status": "ended",
"score": {
"home": 2,
"away": 1
},
"matched_market": "Match Winner",
"matched_market_id": 340168,
"matched_outcome": "Home",
"matched_selection_id": 1824650,
"payout_multiplier": 1.85,
"payout": 18.5
},
{
"event_id": "87654321",
"market": "Over/Under 2.5",
"outcome": "Over 2.5",
"odds": 1.6,
"stake": 15,
"result": "won",
"event_status": "ended",
"score": {
"home": 2,
"away": 1
},
"matched_market": "Over/Under 2.5",
"matched_market_id": 340172,
"matched_outcome": "Over 2.5",
"matched_selection_id": 1824658,
"payout_multiplier": 1.6,
"payout": 24
},
{
"event_id": "87654322",
"market": "Match Winner",
"outcome": "Away",
"odds": 3.2,
"stake": 5,
"result": "pending",
"event_status": "live",
"score": {
"home": 1,
"away": 1
},
"reason": "Event not yet settled"
}
],
"summary": {
"total": 3,
"settled": 2,
"won": 2,
"lost": 0,
"refunded": 0,
"pending": 1
}
}{
"error": "bad_request",
"message": "Selection at index 0 has invalid 'odds'. Use a decimal number >= 1 when provided."
}{
"error": "unauthorized",
"message": "Invalid or missing API key. Visit docs.fieldfunded.com for access."
}{
"error": "rate_limited",
"message": "Rate limit exceeded. Upgrade your plan for higher limits."
}{
"error": "server_error",
"message": "Internal server error"
}{
"error": "service_unavailable",
"message": "Data store temporarily unavailable",
"component": "realtime_data"
}Check Bets
Submit your users’ bet selections and check their resolution status — the API automatically determines if each bet won, lost, refund, or is still pending. Each selection is matched by
market name and outcome label (with smart alias handling for common variants like
“Match Winner” / “1X2” / “Moneyline”).
Team names and final scores are included in the response. Process settlements promptly — poll regularly after the game ends to capture all market resolutions as they arrive gradually.
Each selection requires: event_id, market (name), and outcome (label).
For guaranteed accuracy, include market_id and selection_id (primary identification — from /events or /settlements) to match by ID instead of name.
Optionally include odds to get payout_multiplier and stake to get calculated payout in the response.
The stake field is currency-agnostic — send any numeric amount in your platform’s currency.
The response includes matched_market_id and matched_selection_id for your records.
Request body supports:
- batch mode:
{ selections: [...] } - single mode:
{ selection: {...} } - single shortcut:
{ event_id, market, outcome, odds?, stake? }
curl --request POST \
--url https://api.fieldfunded.com/v1/bets/check \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"selections": [
{
"event_id": "87654321",
"market": "Match Winner",
"outcome": "Home",
"odds": 1.85,
"stake": 10,
"market_id": 340168,
"selection_id": 1824650
},
{
"event_id": "87654321",
"market": "Over/Under 2.5",
"outcome": "Over 2.5",
"odds": 1.6,
"stake": 15
},
{
"event_id": "87654322",
"market": "Match Winner",
"outcome": "Away",
"odds": 3.2,
"stake": 5
}
]
}
'import requests
url = "https://api.fieldfunded.com/v1/bets/check"
payload = { "selections": [
{
"event_id": "87654321",
"market": "Match Winner",
"outcome": "Home",
"odds": 1.85,
"stake": 10,
"market_id": 340168,
"selection_id": 1824650
},
{
"event_id": "87654321",
"market": "Over/Under 2.5",
"outcome": "Over 2.5",
"odds": 1.6,
"stake": 15
},
{
"event_id": "87654322",
"market": "Match Winner",
"outcome": "Away",
"odds": 3.2,
"stake": 5
}
] }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
selections: [
{
event_id: '87654321',
market: 'Match Winner',
outcome: 'Home',
odds: 1.85,
stake: 10,
market_id: 340168,
selection_id: 1824650
},
{
event_id: '87654321',
market: 'Over/Under 2.5',
outcome: 'Over 2.5',
odds: 1.6,
stake: 15
},
{
event_id: '87654322',
market: 'Match Winner',
outcome: 'Away',
odds: 3.2,
stake: 5
}
]
})
};
fetch('https://api.fieldfunded.com/v1/bets/check', 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.fieldfunded.com/v1/bets/check",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'selections' => [
[
'event_id' => '87654321',
'market' => 'Match Winner',
'outcome' => 'Home',
'odds' => 1.85,
'stake' => 10,
'market_id' => 340168,
'selection_id' => 1824650
],
[
'event_id' => '87654321',
'market' => 'Over/Under 2.5',
'outcome' => 'Over 2.5',
'odds' => 1.6,
'stake' => 15
],
[
'event_id' => '87654322',
'market' => 'Match Winner',
'outcome' => 'Away',
'odds' => 3.2,
'stake' => 5
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fieldfunded.com/v1/bets/check"
payload := strings.NewReader("{\n \"selections\": [\n {\n \"event_id\": \"87654321\",\n \"market\": \"Match Winner\",\n \"outcome\": \"Home\",\n \"odds\": 1.85,\n \"stake\": 10,\n \"market_id\": 340168,\n \"selection_id\": 1824650\n },\n {\n \"event_id\": \"87654321\",\n \"market\": \"Over/Under 2.5\",\n \"outcome\": \"Over 2.5\",\n \"odds\": 1.6,\n \"stake\": 15\n },\n {\n \"event_id\": \"87654322\",\n \"market\": \"Match Winner\",\n \"outcome\": \"Away\",\n \"odds\": 3.2,\n \"stake\": 5\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fieldfunded.com/v1/bets/check")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"selections\": [\n {\n \"event_id\": \"87654321\",\n \"market\": \"Match Winner\",\n \"outcome\": \"Home\",\n \"odds\": 1.85,\n \"stake\": 10,\n \"market_id\": 340168,\n \"selection_id\": 1824650\n },\n {\n \"event_id\": \"87654321\",\n \"market\": \"Over/Under 2.5\",\n \"outcome\": \"Over 2.5\",\n \"odds\": 1.6,\n \"stake\": 15\n },\n {\n \"event_id\": \"87654322\",\n \"market\": \"Match Winner\",\n \"outcome\": \"Away\",\n \"odds\": 3.2,\n \"stake\": 5\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fieldfunded.com/v1/bets/check")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"selections\": [\n {\n \"event_id\": \"87654321\",\n \"market\": \"Match Winner\",\n \"outcome\": \"Home\",\n \"odds\": 1.85,\n \"stake\": 10,\n \"market_id\": 340168,\n \"selection_id\": 1824650\n },\n {\n \"event_id\": \"87654321\",\n \"market\": \"Over/Under 2.5\",\n \"outcome\": \"Over 2.5\",\n \"odds\": 1.6,\n \"stake\": 15\n },\n {\n \"event_id\": \"87654322\",\n \"market\": \"Match Winner\",\n \"outcome\": \"Away\",\n \"odds\": 3.2,\n \"stake\": 5\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"event_id": "87654321",
"market": "Match Winner",
"outcome": "Home",
"odds": 1.85,
"stake": 10,
"result": "won",
"event_status": "ended",
"score": {
"home": 2,
"away": 1
},
"matched_market": "Match Winner",
"matched_market_id": 340168,
"matched_outcome": "Home",
"matched_selection_id": 1824650,
"payout_multiplier": 1.85,
"payout": 18.5
},
{
"event_id": "87654321",
"market": "Over/Under 2.5",
"outcome": "Over 2.5",
"odds": 1.6,
"stake": 15,
"result": "won",
"event_status": "ended",
"score": {
"home": 2,
"away": 1
},
"matched_market": "Over/Under 2.5",
"matched_market_id": 340172,
"matched_outcome": "Over 2.5",
"matched_selection_id": 1824658,
"payout_multiplier": 1.6,
"payout": 24
},
{
"event_id": "87654322",
"market": "Match Winner",
"outcome": "Away",
"odds": 3.2,
"stake": 5,
"result": "pending",
"event_status": "live",
"score": {
"home": 1,
"away": 1
},
"reason": "Event not yet settled"
}
],
"summary": {
"total": 3,
"settled": 2,
"won": 2,
"lost": 0,
"refunded": 0,
"pending": 1
}
}{
"error": "bad_request",
"message": "Selection at index 0 has invalid 'odds'. Use a decimal number >= 1 when provided."
}{
"error": "unauthorized",
"message": "Invalid or missing API key. Visit docs.fieldfunded.com for access."
}{
"error": "rate_limited",
"message": "Rate limit exceeded. Upgrade your plan for higher limits."
}{
"error": "server_error",
"message": "Internal server error"
}{
"error": "service_unavailable",
"message": "Data store temporarily unavailable",
"component": "realtime_data"
}Authorizations
Your FieldFunded API Key
Body
Batch mode (optional when using single mode)
50Show child attributes
Show child attributes
Single selection mode
Show child attributes
Show child attributes
Root-level single shortcut (requires market and outcome)
x >= 1x >= 0.01