Bets API
whapi · Media
The Bets API methods are used to place single, multiple and complex bets and to retrieve a customer’s bet history. When retrieving a customer’s bet history you can organize the bets from the betting history in terms of date, bet type and whether the bet is settled or not. You can also specify what fields to be included/excluded or return a list of all default fields the method returns. The Bets API will also generate a bet delay if you’re placing a single/multiple bet in-Play by cre
Authentication
Sample Requests
Retrieves the customer’s bet history. Options are available to organise the history in terms of date, bet type and settled and unsettled bets. The maximum number of bets and bet history pages retrieved can also be set.
Hover any highlighted part to learn what it does
| apiKey | example |
| apiSecret | example |
| apiTicket | example |
curl -X GET "https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/history?page=1&sort=transDateTime%2Casc&dateTo=example&fields=example&exclude=example&include=example&settled=true&dateFrom=example&pageSize=100" \ -H "apiKey: example" \ -H "apiSecret: example" \ -H "apiTicket: example"
import requests
params = {
"page": "1",
"sort": "transDateTime,asc",
"dateTo": "example",
"fields": "example",
"exclude": "example",
"include": "example",
"settled": "true",
"dateFrom": "example",
"pageSize": "100"
}
headers = {
"apiKey": "example",
"apiSecret": "example",
"apiTicket": "example"
}
response = requests.get(
"https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/history",
params=params,
headers=headers,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/history');
url.searchParams.set('page', '1');
url.searchParams.set('sort', 'transDateTime,asc');
url.searchParams.set('dateTo', 'example');
url.searchParams.set('fields', 'example');
url.searchParams.set('exclude', 'example');
url.searchParams.set('include', 'example');
url.searchParams.set('settled', 'true');
url.searchParams.set('dateFrom', 'example');
url.searchParams.set('pageSize', '100');
const response = await fetch(url, {
headers: {
'apiKey': 'example',
'apiSecret': 'example',
'apiTicket': 'example'
},
});
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/history")
q := baseURL.Query()
q.Set("page", "1")
q.Set("sort", "transDateTime,asc")
q.Set("dateTo", "example")
q.Set("fields", "example")
q.Set("exclude", "example")
q.Set("include", "example")
q.Set("settled", "true")
q.Set("dateFrom", "example")
q.Set("pageSize", "100")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
req.Header.Set("apiKey", "example")
req.Header.Set("apiSecret", "example")
req.Header.Set("apiTicket", "example")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/history")
uri.query = URI.encode_www_form({
"page" => "1",
"sort" => "transDateTime,asc",
"dateTo" => "example",
"fields" => "example",
"exclude" => "example",
"include" => "example",
"settled" => "true",
"dateFrom" => "example",
"pageSize" => "100"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
req["apiKey"] = "example"
req["apiSecret"] = "example"
req["apiTicket"] = "example"
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/history?" . http_build_query([
"page" => "1",
"sort" => "transDateTime,asc",
"dateTo" => "example",
"fields" => "example",
"exclude" => "example",
"include" => "example",
"settled" => "true",
"dateFrom" => "example",
"pageSize" => "100"
]);
$opts = ["http" => [
"method" => "GET",
"header" => implode("\r\n", [
"apiKey: example",
"apiSecret: example",
"apiTicket: example"
]),
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Retrieves the current free bets available for a customer.
Hover any highlighted part to learn what it does
| apiKey | example |
| apiSecret | example |
| apiTicket | example |
curl -X GET "https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/freebets?fields=example&exclude=example&include=example" \ -H "apiKey: example" \ -H "apiSecret: example" \ -H "apiTicket: example"
import requests
params = {
"fields": "example",
"exclude": "example",
"include": "example"
}
headers = {
"apiKey": "example",
"apiSecret": "example",
"apiTicket": "example"
}
response = requests.get(
"https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/freebets",
params=params,
headers=headers,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/freebets');
url.searchParams.set('fields', 'example');
url.searchParams.set('exclude', 'example');
url.searchParams.set('include', 'example');
const response = await fetch(url, {
headers: {
'apiKey': 'example',
'apiSecret': 'example',
'apiTicket': 'example'
},
});
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/freebets")
q := baseURL.Query()
q.Set("fields", "example")
q.Set("exclude", "example")
q.Set("include", "example")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
req.Header.Set("apiKey", "example")
req.Header.Set("apiSecret", "example")
req.Header.Set("apiTicket", "example")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/freebets")
uri.query = URI.encode_www_form({
"fields" => "example",
"exclude" => "example",
"include" => "example"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
req["apiKey"] = "example"
req["apiSecret"] = "example"
req["apiTicket"] = "example"
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/freebets?" . http_build_query([
"fields" => "example",
"exclude" => "example",
"include" => "example"
]);
$opts = ["http" => [
"method" => "GET",
"header" => implode("\r\n", [
"apiKey: example",
"apiSecret: example",
"apiTicket: example"
]),
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Organises the betslip when one or more selections are made. It returns a bet slip structure organised by betting opportunities.
Hover any highlighted part to learn what it does
| apiKey | example |
| apiSecret | example |
curl -X POST "https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/betslips?expanded=example" \ -H "apiKey: example" \ -H "apiSecret: example"
import requests
params = {
"expanded": "example"
}
headers = {
"apiKey": "example",
"apiSecret": "example"
}
response = requests.post(
"https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/betslips",
params=params,
headers=headers,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/betslips');
url.searchParams.set('expanded', 'example');
const response = await fetch(url, {
method: 'POST',
headers: {
'apiKey': 'example',
'apiSecret': 'example'
},
});
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/betslips")
q := baseURL.Query()
q.Set("expanded", "example")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("POST", targetURL, nil)
req.Header.Set("apiKey", "example")
req.Header.Set("apiSecret", "example")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/betslips")
uri.query = URI.encode_www_form({
"expanded" => "example"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Post.new(uri)
req["apiKey"] = "example"
req["apiSecret"] = "example"
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/betslips?" . http_build_query([
"expanded" => "example"
]);
$opts = ["http" => [
"method" => "POST",
"header" => implode("\r\n", [
"apiKey: example",
"apiSecret: example"
]),
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Postman Setup Guide
- See official documentation for authentication and setup.
What can you build with Bets API?
Bets API is a Media API. Developers commonly use media APIs for:
- storing and delivering images, video, and audio
- building digital asset management and media libraries
- transcoding and optimising media for the web
- adding video streaming and playback to your app
- automating content tagging and metadata extraction
No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Bets API is free to use, making it a low-risk choice to experiment with.
New to APIs? Read our beginner's guide · Learn about API keys · What is REST?