Support

A person reads
every ticket.

32 answers are one click below and take seconds. If yours is not there, open a ticket and someone who can query your account and the archive replies. Not a macro, not a bot.

2 daysAnswered within, at the latest
32Questions answered below
One threadNever an email chain
A real threadAnswered
SD
A customer14:12

checkout_darts is null on every 2006 match though the scores are there. Is it missing for whole seasons?

da
Darts API16:40 · 2h 28m later

Depth varies by era rather than by season. Televised finals from 2006 carry checkout detail; qualifiers from the same year rarely do, because it was never published. The field stays null rather than us inventing one, and coverage is stated per competition so you can check before you build.

We are in Thailand, so European mornings are usually answered the same day

Answered before you ask

Every answer carries a real figure or a real behaviour. Search, or narrow to a topic. Opening one expands it in place.

/ 32 questions

Getting started 5

How do I get a key?
Sign in with Google and one is issued immediately. No card, no sales call, no waiting for approval.
What does the free key reach?
Nine of the forty endpoints, on results at least seven days old: players, competitions, the calendar, finished matches, head to head and coverage. Sixty calls a minute and five hundred a day, which is enough to build something real before deciding whether to pay.
What is the base URL?
https://api.dartsapi.com/v1. Every answer is JSON, and https://api.dartsapi.com/ answers without a key if you only want to check you can reach it.
How do I send my key?
As an Authorization: Bearer da_live_… header. Not a query string, because those end up in logs, proxies and screenshots.
Is there a sandbox?
The free key is the sandbox. Same archive, same response shapes, just delayed, so nothing you build against it behaves differently when you upgrade.

Keys and plans 5

Why is my 402 naming a plan?
The endpoint exists, your plan does not reach it. Every refusal names the plan it needs and links to pricing, rather than a bare status leaving you guessing.
Can I change plan mid-month?
Moving up takes effect immediately and the difference goes on your next invoice. Moving down also applies immediately, with the unused part credited against the next invoice. Both are in Manage billing.
How do I rotate a key?
From your dashboard. The old key stops the moment the new one is issued, so change it in your code first. Rotation needs the confirmation box ticked, because there is no undo.
Can I have more than one key?
One key per account today, which you can rotate from your dashboard at any moment. Separate staging and production keys are coming to paid plans, and usage stays counted per account, so a second key never means a second allowance.
What happens if I cancel?
Access continues to the end of the period you have paid for, then the same key drops to free-plan reach rather than dying. Your integration degrades instead of breaking.

Billing 6

Do you offer refunds?
Not automatically, and we say so on the refunds page rather than burying it. Cancel any time and keep access to the end of the period. If a charge looks wrong, the form on that page opens a review and a person answers it.
Will I be billed for going over a limit?
Never. A call past your limit gets a 429 with Retry-After and a sentence saying when to come back, and there is no overage bill. Calls we refuse for plan or parameters never count against you either.
What payment methods work?
Card, through Stripe. We never see or store your card details.
Is annual cheaper?
Yes. Annual is twelve months at ten months’ price on every paid plan.
Can invoices carry our VAT number?
Add it in Manage billing and it appears on every invoice from then on. Stripe holds the billing details, so you edit them there rather than asking us.
How do I cancel?
Manage billing in your dashboard, one click, no notice period and nothing to send us. Your dashboard then shows the date access runs to.

The data 6

How far back does the archive go?
To 2000. It currently holds more than 115,000 matches across 2,900 events and 11,800 players, and it is still filling as older seasons are read in.
Where does the data come from?
Published results and statistics, compiled and checked by us, plus our own calculations on top of them. We do not republish anyone else’s feed.
How often does it change?
The archive is checked for new results every few minutes and updates as they are published. Every response carries data_as_of, so you always know how old an answer is. The free key sees results once they are seven days old.
Why is a field null on some matches?
Because we do not hold it, and inventing a value would be worse. Coverage varies by era: a 2003 televised final carries far more detail than a 2003 qualifier.
Do you cover women’s and youth events?
Yes. Youth darts is covered in depth, with 309 Junior Darts Corporation events held, and women’s events are held wherever their results are published. Every player follows the same rule: results and averages from the first match, and the full set of statistics once they reach 25 matches or play a major. /v1/coverage gives the measured figures by season.
Can I download the whole archive as a file?
No. Bulk export is not offered. /v1/matches with a cursor walks the whole set as fast as you can consume it.

Using the API 5

My ids look odd, pl_7Q2M9?
That is correct. Ids carry their type, so a player id passed where a match belongs fails loudly instead of quietly returning the wrong thing. Raw integers are refused.
Should I use page or cursor?
page for a UI pager, cursor for walking the whole set. A cursor pages by sort position, so page 10,000 is as fast as page 1 and a new match arriving cannot shift the boundary under you.
Is there an OpenAPI spec?
Not yet. An OpenAPI spec, a Postman collection and an MCP server are being built, all generated from the one registry that runs the API itself, so none of them can drift from what the endpoints actually do. Until then, the endpoint pages on this site give every parameter and response shape.
What are the rate limits?
Free key: 60 a minute and 500 a day. Live and Archive: 120 a minute and 250,000 a month. Complete: 180 a minute and 600,000 a month. Analyst: 240 a minute and 1,000,000 a month. Every response tells you where you stand in X-RateLimit-Remaining for the minute and X-Allowance-Remaining for the day or month, and /v1/usage gives the full picture.
Do ids ever change?
No. Stable ids are a promise in the terms, not an implementation detail. A rebuild maps everything back to the same ids.

Live and delivery 5

How live is /v1/live?
It carries every match in play with the score as it stands and each player’s average, refreshed every five minutes. Every response states when it was taken in captured_at and how old that is in age_seconds, so a score can be a few minutes behind the board but never passes for newer than it is. If the feed falls more than twenty minutes behind, the response says so. Live is on paid plans.
Is there a WebSocket stream?
Not switched on, and we say so plainly rather than listing an endpoint that does not answer. The change feed and webhooks cover the same ground without a socket to keep alive.
How do webhooks sign their payloads?
Stripe-shaped, deliberately: t=<unix>,v1=<hmac>, so verification code you already have works unchanged.
What happens if my endpoint is down?
Delivery retries with backoff over about three days. Repeated failures disable the endpoint and write it to your activity log, so it fails loudly rather than silently.
Do you publish fixtures?
Yes, on the free key. /v1/fixtures lists the whole published draw of each tournament under way, not just the next few matches, filtered by date, competition or player. A date the organiser has fixed is marked confirmed, and one not yet fixed is marked unconfirmed rather than guessed. Players carry the same ids as everywhere else, and a qualifier the archive does not yet know is named with no id.
Nothing matches that.

Which is worth knowing. Searches that find nothing are written down and become the next answers on this page, so you are not the last person to hit it.

Noted, and added to the writing queue

Open a ticket

One thing per ticket, and be specific. A request id gets a real answer in minutes rather than a round trip asking for one.

Something wrong with the data A key or plan question Billing or an invoice I cannot sign inno account A bug in the API Something else

I cannot sign in sends without an account. Someone locked out is exactly the person who needs support, and a sign-in wall turns them away at the worst possible moment.

Up to 4,000 characters. Never paste your API key. Your account is already attached to this ticket.

You will be asked to sign in unless you picked “I cannot sign in”. Your draft comes back with you.

Before you send

1
Check your activity logYour dashboard lists every plan change, renewal, failed payment and key rotation, with dates. It answers most billing questions on its own.
2
Bring a request idEvery response carries one in meta.request_id. With it we find your exact call in seconds.
3
Coverage is publishedA null field is usually answered by the coverage figures for that competition and era before anyone needs to reply.
4
We are in ThailandEuropean mornings are usually answered the same day. Overnight questions are answered when we wake up, not in three days.
Sign in to see your tickets

They are tied to your account, so a ticket is only ever shown to the person who opened it.

Sign in →

Still stuck?

Open a ticket. It goes to a person, not a queue that forwards it to another queue.