Find an API

Search public APIs with auth details & Postman guides

← All APIs

Bets API

whapi · Media

Media No Auth Free & Open entertainment

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

No authentication requiredFree to use with no key needed.

Sample Requests

GET Retrieves the customer’s bet history.

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.

https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/history?page=1&sort=transDateTime,asc&dateTo=example&fields=example&exclude=example&include=example&settled=true&dateFrom=example&pageSize=100

Hover any highlighted part to learn what it does

Headers — extra info sent with the request
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));
GET Returns available free bets

Retrieves the current free bets available for a customer.

https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/freebets?fields=example&exclude=example&include=example

Hover any highlighted part to learn what it does

Headers — extra info sent with the request
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));
POST validateBetslip

Organises the betslip when one or more selections are made. It returns a bet slip structure organised by betting opportunities.

https://api.apis.guru/v2/specs/whapi.com/bets/2.0.0/betslips?expanded=example

Hover any highlighted part to learn what it does

Headers — extra info sent with the request
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

Get Postman ↗
  1. 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?

Open documentation ↗