Round-robin fixture schedule (each team plays once per round)
Creates a round-robin schedule where every team plays every other team, round by round (twice with double_round).
Request
JSON object. Required: teams.
Request Body
Edit the values below to test different scenarios.
Parameters and body structure are inherited from this endpoint's definition. Changes here only apply to this test run.
1curl --request POST \
2 --url https://sports-tools.p.apihiver.com/v1/fixtures/round-robin \
3 --header 'Accept: application/json' \
4 --header 'Content-Type: application/json' \
5 --header 'X-API-Key: YOUR_API_KEY' \
6 --data '{
7 "teams": [
8 "A",
9 "B",
10 "C",
11 "D"
12 ]
13}'Round-robin fixture schedule (each team plays once per round): Sports & Cricket Tools API reference
Creates a round-robin schedule where every team plays every other team, round by round (twice with `double_round`). This endpoint is part of the Sports & Cricket Tools API: Tournament fixtures, league tables, Elo ratings and cricket net run rate / required run rate calculators.
Round-robin fixture schedule (each team plays once per round): example requests in every language
POST /v1/fixtures/round-robin in Shell (cURL)
curl --request POST \
--url https://sports-tools.p.apihiver.com/v1/fixtures/round-robin \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{
"teams": [
"A",
"B",
"C",
"D"
]
}'POST /v1/fixtures/round-robin in Shell (HTTPie)
echo '{
"teams": [
"A",
"B",
"C",
"D"
]
}' | \
http POST https://sports-tools.p.apihiver.com/v1/fixtures/round-robin \
Accept:application/json \
Content-Type:application/json \
X-API-Key:YOUR_API_KEYPOST /v1/fixtures/round-robin in Shell (Wget)
wget --quiet \
--method POST \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--body-data '{\n "teams": [\n "A",\n "B",\n "C",\n "D"\n ]\n}' \
--output-document \
- https://sports-tools.p.apihiver.com/v1/fixtures/round-robinPOST /v1/fixtures/round-robin in Node.js (http)
const http = require('https');
const options = {
method: 'POST',
hostname: 'sports-tools.p.apihiver.com',
port: null,
path: '/v1/fixtures/round-robin',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({teams: ['A', 'B', 'C', 'D']}));
req.end();POST /v1/fixtures/round-robin in Node.js (Request)
const request = require('request');
const options = {
method: 'POST',
url: 'https://sports-tools.p.apihiver.com/v1/fixtures/round-robin',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
body: {teams: ['A', 'B', 'C', 'D']},
json: true
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});POST /v1/fixtures/round-robin in Node.js (Unirest)
const unirest = require('unirest');
const req = unirest('POST', 'https://sports-tools.p.apihiver.com/v1/fixtures/round-robin');
req.headers({
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
});
req.type('json');
req.send({
teams: [
'A',
'B',
'C',
'D'
]
});
req.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});POST /v1/fixtures/round-robin in Node.js (Axios)
const axios = require('axios').default;
const options = {
method: 'POST',
url: 'https://sports-tools.p.apihiver.com/v1/fixtures/round-robin',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
data: {teams: ['A', 'B', 'C', 'D']}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/fixtures/round-robin in Node.js (Fetch)
const fetch = require('node-fetch');
const url = 'https://sports-tools.p.apihiver.com/v1/fixtures/round-robin';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
body: '{"teams":["A","B","C","D"]}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/fixtures/round-robin in JavaScript (XMLHttpRequest)
const data = JSON.stringify({
teams: [
'A',
'B',
'C',
'D'
]
});
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener('readystatechange', function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open('POST', 'https://sports-tools.p.apihiver.com/v1/fixtures/round-robin');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Accept', 'application/json');
xhr.setRequestHeader('X-API-Key', 'YOUR_API_KEY');
xhr.send(data);POST /v1/fixtures/round-robin in JavaScript (Axios)
import axios from 'axios';
const options = {
method: 'POST',
url: 'https://sports-tools.p.apihiver.com/v1/fixtures/round-robin',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
data: {teams: ['A', 'B', 'C', 'D']}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/fixtures/round-robin in JavaScript (Fetch)
const url = 'https://sports-tools.p.apihiver.com/v1/fixtures/round-robin';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
body: '{"teams":["A","B","C","D"]}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}POST /v1/fixtures/round-robin in JavaScript (jQuery)
const settings = {
async: true,
crossDomain: true,
url: 'https://sports-tools.p.apihiver.com/v1/fixtures/round-robin',
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
'X-API-Key': 'YOUR_API_KEY'
},
processData: false,
data: '{\n "teams": [\n "A",\n "B",\n "C",\n "D"\n ]\n}'
};
$.ajax(settings).done(function (response) {
console.log(response);
});POST /v1/fixtures/round-robin in Python (http.client)
import http.client
conn = http.client.HTTPSConnection("sports-tools.p.apihiver.com")
payload = "{\n \"teams\": [\n \"A\",\n \"B\",\n \"C\",\n \"D\"\n ]\n}"
headers = {
'Content-Type': "application/json",
'Accept': "application/json",
'X-API-Key': "YOUR_API_KEY"
}
conn.request("POST", "/v1/fixtures/round-robin", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))POST /v1/fixtures/round-robin in Python (Requests)
import requests
url = "https://sports-tools.p.apihiver.com/v1/fixtures/round-robin"
payload = { "teams": ["A", "B", "C", "D"] }
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "YOUR_API_KEY"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())POST /v1/fixtures/round-robin in PHP (cURL)
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sports-tools.p.apihiver.com/v1/fixtures/round-robin",
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([
'teams' => [
'A',
'B',
'C',
'D'
]
]),
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Content-Type: application/json",
"X-API-Key: YOUR_API_KEY"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}POST /v1/fixtures/round-robin in PHP (Guzzle)
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://sports-tools.p.apihiver.com/v1/fixtures/round-robin', [
'body' => '{
"teams": [
"A",
"B",
"C",
"D"
]
}',
'headers' => [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY',
],
]);
echo $response->getBody();POST /v1/fixtures/round-robin in PHP (PECL HTTP v1)
<?php
$request = new HttpRequest();
$request->setUrl('https://sports-tools.p.apihiver.com/v1/fixtures/round-robin');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders([
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY'
]);
$request->setContentType('application/json');
$request->setBody(json_encode([
'teams' => [
'A',
'B',
'C',
'D'
]
]));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}POST /v1/fixtures/round-robin in PHP (PECL HTTP v2)
<?php
$client = new http\Client;
$request = new http\Client\Request;
$body = new http\Message\Body;
$body->append(json_encode([
'teams' => [
'A',
'B',
'C',
'D'
]
]));
$request->setRequestUrl('https://sports-tools.p.apihiver.com/v1/fixtures/round-robin');
$request->setRequestMethod('POST');
$request->setBody($body);
$request->setHeaders([
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-API-Key' => 'YOUR_API_KEY'
]);
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();POST /v1/fixtures/round-robin in Java (AsyncHttp)
AsyncHttpClient client = new DefaultAsyncHttpClient();
client.prepare("POST", "https://sports-tools.p.apihiver.com/v1/fixtures/round-robin")
.setHeader("Content-Type", "application/json")
.setHeader("Accept", "application/json")
.setHeader("X-API-Key", "YOUR_API_KEY")
.setBody("{\n \"teams\": [\n \"A\",\n \"B\",\n \"C\",\n \"D\"\n ]\n}")
.execute()
.toCompletableFuture()
.thenAccept(System.out::println)
.join();
client.close();POST /v1/fixtures/round-robin in Java (java.net.http)
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://sports-tools.p.apihiver.com/v1/fixtures/round-robin"))
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.method("POST", HttpRequest.BodyPublishers.ofString("{\n \"teams\": [\n \"A\",\n \"B\",\n \"C\",\n \"D\"\n ]\n}"))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());POST /v1/fixtures/round-robin in Java (OkHttp)
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"teams\": [\n \"A\",\n \"B\",\n \"C\",\n \"D\"\n ]\n}");
Request request = new Request.Builder()
.url("https://sports-tools.p.apihiver.com/v1/fixtures/round-robin")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();POST /v1/fixtures/round-robin in Java (Unirest)
HttpResponse<String> response = Unirest.post("https://sports-tools.p.apihiver.com/v1/fixtures/round-robin")
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.body("{\n \"teams\": [\n \"A\",\n \"B\",\n \"C\",\n \"D\"\n ]\n}")
.asString();POST /v1/fixtures/round-robin in C# (HttpClient)
using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://sports-tools.p.apihiver.com/v1/fixtures/round-robin"),
Headers =
{
{ "Accept", "application/json" },
{ "X-API-Key", "YOUR_API_KEY" },
},
Content = new StringContent("{\n \"teams\": [\n \"A\",\n \"B\",\n \"C\",\n \"D\"\n ]\n}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}POST /v1/fixtures/round-robin in C# (RestSharp)
var client = new RestClient("https://sports-tools.p.apihiver.com/v1/fixtures/round-robin");
var request = new RestRequest("", Method.Post);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Accept", "application/json");
request.AddHeader("X-API-Key", "YOUR_API_KEY");
request.AddParameter("application/json", "{\n \"teams\": [\n \"A\",\n \"B\",\n \"C\",\n \"D\"\n ]\n}", ParameterType.RequestBody);
var response = client.Execute(request);POST /v1/fixtures/round-robin in Go (NewRequest)
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sports-tools.p.apihiver.com/v1/fixtures/round-robin"
payload := strings.NewReader("{\n \"teams\": [\n \"A\",\n \"B\",\n \"C\",\n \"D\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Accept", "application/json")
req.Header.Add("X-API-Key", "YOUR_API_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}POST /v1/fixtures/round-robin in Ruby (net::http)
require 'uri'
require 'net/http'
url = URI("https://sports-tools.p.apihiver.com/v1/fixtures/round-robin")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request["Accept"] = 'application/json'
request["X-API-Key"] = 'YOUR_API_KEY'
request.body = "{\n \"teams\": [\n \"A\",\n \"B\",\n \"C\",\n \"D\"\n ]\n}"
response = http.request(request)
puts response.read_bodyPOST /v1/fixtures/round-robin in Swift (NSURLSession)
import Foundation
let headers = [
"Content-Type": "application/json",
"Accept": "application/json",
"X-API-Key": "YOUR_API_KEY"
]
let parameters = ["teams": ["A", "B", "C", "D"]] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://sports-tools.p.apihiver.com/v1/fixtures/round-robin")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()POST /v1/fixtures/round-robin in Objective-C (NSURLSession)
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"Content-Type": @"application/json",
@"Accept": @"application/json",
@"X-API-Key": @"YOUR_API_KEY" };
NSDictionary *parameters = @{ @"teams": @[ @"A", @"B", @"C", @"D" ] };
NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://sports-tools.p.apihiver.com/v1/fixtures/round-robin"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];POST /v1/fixtures/round-robin in Kotlin (OkHttp)
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"teams\": [\n \"A\",\n \"B\",\n \"C\",\n \"D\"\n ]\n}")
val request = Request.Builder()
.url("https://sports-tools.p.apihiver.com/v1/fixtures/round-robin")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.addHeader("X-API-Key", "YOUR_API_KEY")
.build()
val response = client.newCall(request).execute()POST /v1/fixtures/round-robin in C (libcurl)
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://sports-tools.p.apihiver.com/v1/fixtures/round-robin");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "X-API-Key: YOUR_API_KEY");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"teams\": [\n \"A\",\n \"B\",\n \"C\",\n \"D\"\n ]\n}");
CURLcode ret = curl_easy_perform(hnd);POST /v1/fixtures/round-robin in Clojure (clj-http)
(require '[clj-http.client :as client])
(client/post "https://sports-tools.p.apihiver.com/v1/fixtures/round-robin" {:headers {:X-API-Key "YOUR_API_KEY"}
:content-type :json
:form-params {:teams ["A" "B" "C" "D"]}
:accept :json})POST /v1/fixtures/round-robin in OCaml (CoHTTP)
open Cohttp_lwt_unix
open Cohttp
open Lwt
let uri = Uri.of_string "https://sports-tools.p.apihiver.com/v1/fixtures/round-robin" in
let headers = Header.add_list (Header.init ()) [
("Content-Type", "application/json");
("Accept", "application/json");
("X-API-Key", "YOUR_API_KEY");
] in
let body = Cohttp_lwt_body.of_string "{\n \"teams\": [\n \"A\",\n \"B\",\n \"C\",\n \"D\"\n ]\n}" in
Client.call ~headers ~body `POST uri
>>= fun (res, body_stream) ->
(* Do stuff with the result *)POST /v1/fixtures/round-robin in R (httr)
library(httr)
url <- "https://sports-tools.p.apihiver.com/v1/fixtures/round-robin"
payload <- "{\n \"teams\": [\n \"A\",\n \"B\",\n \"C\",\n \"D\"\n ]\n}"
encode <- "json"
response <- VERB("POST", url, body = payload, add_headers('X-API-Key' = 'YOUR_API_KEY'), content_type("application/json"), accept("application/json"), encode = encode)
content(response, "text")POST /v1/fixtures/round-robin in PowerShell (Invoke-WebRequest)
$headers=@{}
$headers.Add("Content-Type", "application/json")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "YOUR_API_KEY")
$response = Invoke-WebRequest -Uri 'https://sports-tools.p.apihiver.com/v1/fixtures/round-robin' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"teams": [
"A",
"B",
"C",
"D"
]
}'POST /v1/fixtures/round-robin in PowerShell (Invoke-RestMethod)
$headers=@{}
$headers.Add("Content-Type", "application/json")
$headers.Add("Accept", "application/json")
$headers.Add("X-API-Key", "YOUR_API_KEY")
$response = Invoke-RestMethod -Uri 'https://sports-tools.p.apihiver.com/v1/fixtures/round-robin' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"teams": [
"A",
"B",
"C",
"D"
]
}'POST /v1/fixtures/round-robin in HTTP (HTTP/1.1)
POST /v1/fixtures/round-robin HTTP/1.1
Content-Type: application/json
Accept: application/json
X-Api-Key: YOUR_API_KEY
Host: sports-tools.p.apihiver.com
Content-Length: 55
{
"teams": [
"A",
"B",
"C",
"D"
]
}Example response (200, application/json)
Success.
1{
2 "teams": 4,
3 "rounds": 3,
4 "schedule": [
5 {
6 "round": 1,
7 "matches": [
8 {
9 "away": "D",
10 "home": "A"
11 },
12 {
13 "away": "C",
14 "home": "B"
15 }
16 ]
17 },
18 {
19 "round": 2,
20 "matches": [
21 {
22 "away": "A",
23 "home": "C"
24 },
25 {
26 "away": "B",
27 "home": "D"
28 }
29 ]
30 },
31 {
32 "round": 3,
33 "matches": [
34 {
35 "away": "B",
36 "home": "A"
37 },
38 {
39 "away": "D",
40 "home": "C"
41 }
42 ]
43 }
44 ],
45 "total_matches": 6
46}Errors
- 400 — A required parameter is missing or a value has the wrong format.
1{ 2 "error": { 3 "code": "INVALID_INPUT", 4 "message": "teams: Field required" 5 } 6}
Gateway errors (missing key, no subscription, rate limits) are listed in Error codes.
Other Sports & Cricket Tools API endpoints
- POSTLeague points table from match results
- POSTElo rating update after a game
- POSTCricket net run rate (NRR) for a tournament
- POSTRuns and balls left, current and required run rate in a chase
Sports & Cricket Tools API pricing →·Sports & Cricket Tools API overview →