batchwatch

batchwatch › Terms of Service

Terms of Service

Version 1.0 · 31 August 2026 · applies to batchwatch.dev, www.batchwatch.dev and api.batchwatch.dev.

Version 1.0 · 31 August 2026 · applies to batchwatch.dev, www.batchwatch.dev and api.batchwatch.dev.


1. Who we are

batchwatch is operated by Stenager Consulting ApS, CVR 44456923, Stenagervaenget 45, 7100 Vejle, Denmark. Contact: hello@batchwatch.dev.

Referred to below as "we", "us", "batchwatch". "You" means the person or organisation using the service.

2. What the service is

batchwatch measures how long jobs actually take on large-language-model batch APIs — the /v1/batches endpoints at OpenAI, Anthropic, Google and similar — and publishes the distribution of those waits.

Two things follow from that, and they are the most important terms here:

3. No accounts

There are no user accounts. We do not ask for an email address, we do not issue passwords, and there is nothing to log in to.

What exists instead is an API key — a bearer token you can create with a single unauthenticated request:

curl -X POST https://batchwatch.dev/v1/keys -d '{"label":"my pipeline"}'

The token is shown once. We store only a SHA-256 hash of it, so we cannot recover or resend it. If you lose it, create a new one.

The optional label is your own note, so you can tell your keys apart. It is never shown to anyone else. Do not put personal data in it — see PRIVACY.md.

Key creation is limited to 5 keys per IP address per day. That is a noise limit against a runaway loop, not a security control, and it is stated as such in the code. A key does not by itself carry weight in the published statistics, which is why we do not gate it behind an email we would not verify.

DELETE /v1/keys/current revokes the key you authenticate with. There is no route to revoke somebody else's key, because without accounts there is no way to decide who would be entitled to.

4. Access tiers

TierHow you get itDelay on figuresRead quota
Anonymousno key15 minutes20 free trial calls
Freea key, not currently contributing15 minutes20 free trial calls
Contributor5 completed measurements in the last 7 dayslive, no delay5,000 calls / 7 days
Verified contributora contributor with a confirmed emaillive, no delay10,000 calls / 7 days
Paidlegacy, no longer offeredlive, no delay1,000,000 calls / 7 days

Nothing on this table is for sale. The whole dataset is readable by anyone at the 15-minute delay, and live access is earned by contributing measurements.

These numbers are configuration, not commitments. They are read from environment variables at request time and can be changed without a deployment. The pricing model is not decided. See §9 on how we will handle changes.

Contributor status is derived from your data, not from a flag on your key: a call counts if it has status = 'completed', a server end timestamp, and started within the last 7 days. You cannot mark yourself a contributor. "Paid" is the one thing we assign.

Which routes are open to everyone

Open, subject only to the delay for your tier:

/v1/curve is deliberately open because the model picker on the front page calls it on every click; gating it would spend a visitor's free calls just for browsing.

The dashboard is free for everyone, with no account. We do not intend to change that.

Which routes need contribution or a trial call

GET /v1/should-i-batch, GET /v1/estimate-batchtime, GET /v1/conditions and GET /v1/distribution.

Submitting measurements

POST /v1/calls followed by PATCH /v1/calls/{id} is open to everyone, with or without a key. We put no obstacle in the way of contributing, because without contributions there is no dataset.

POST /v1/calls/complete — the bulk history import — requires a key. That path takes your own timestamps, so nothing can be verified against our clock. See ACCEPTABLE-USE.md §3 for why.

5. The free trial

Twenty calls to the gated routes, with no key, no account and no card.

6. Quotas

Contributor and paid quotas run on a rolling seven-day window kept in daily buckets, not a calendar week. The window moves with you, so usage frees up gradually rather than resetting at a fixed moment.

Exceeding the quota returns 429 with the limit, your usage and the window in the body. It does not affect your ability to submit measurements — ingest is never quota-limited.

7. Your measurements: what you keep and what we get

This is stated up front rather than buried, because the data comes from infrastructure you may not personally own and you should be able to justify sending it to whoever does.

You keep:

We get:

And the licence is terminable — you can end it going forward. This is the important change, and it is stated plainly rather than buried: the aggregate licence above is not perpetual. You can end it at any time by writing to hello@batchwatch.dev from the key whose measurements you want withdrawn, and once we have acted on that request we stop using those measurements in new aggregates. Absent such a request, the licence runs for a defined term of the operating life of the service rather than forever.

The one thing termination cannot do is recall a number that is already out. Aggregates we already published before you withdrew — a percentile already served, a distribution already charted by a reader — stand: they were true when they were computed, and a statistic that can be un-published backwards is not a statistic. Withdrawal is forward-looking, and that boundary is set out in DATA-PROCESSING.md §9. This is separate from a data-protection erasure request under PRIVACY.md §7, which is handled there.

We never get:

How we license what we publish. The aggregate statistics we publish openly — the measured percentiles, distributions, verdicts and counts on the open pages and the open API — are made available under Creative Commons Attribution 4.0 International (CC BY 4.0). Anyone may reuse them, including commercially, on the one condition of crediting batchwatch and linking back to https://batchwatch.dev. The onward licence rests on the aggregate licence above: we publish aggregates openly, and we license those aggregates onward under CC BY. Because a withdrawal is forward-looking, an aggregate already published under CC BY stays published — the CC BY grant on a released figure is itself irrevocable, which is one more reason withdrawal cannot run backwards. It covers the published aggregates only — never an individual submission, which we never publish. The full statement, the ready-to-paste attribution and the copy-paste snippets are on the licence page.

The open/live boundary. CC BY 4.0 applies to the open, delayed aggregates. Live, undelayed access is governed by these Terms, not by CC BY: a live feed is not open data, and licensing it CC BY would let anyone republish it with the delay stripped off — which is the one thing the delay exists to prevent. The boundary is drawn on the FRESHNESS of the data, not on how a caller came by it, so it covers live access earned by contributing exactly as it covered live access that was bought.

8. What we do not receive

The client library reads timing and token counts off your batch job and nothing else. It never touches the payload. We do not receive, hash or sample your prompts, your completions, your system prompts, your tool definitions, or your provider API keys. The full field list is in PRIVACY.md §2, checked against the database schema.

The client library is open source. Reading the ~90 lines that do the sending is the point of publishing them.

9. These terms will change

Saying otherwise before there is a business would be a promise made at the moment of least information, and we would rather not make one we might have to break.

What we do commit to:

Notice will be given on the dashboard and in this repository. Continuing to use the service after a change takes effect means you accept it. If you do not accept it, stop using the service; that has no effect on data you have already received.

10. No warranty

The service is provided "as is", without warranty of any kind, express or implied, including merchantability, fitness for a particular purpose and non-infringement.

Specifically and without limiting the above:

You remain responsible for your own deadlines. Do not build a system whose failure mode is "batchwatch said it would be fast".

11. Limitation of liability

To the maximum extent permitted by law, we are not liable for indirect, incidental, special, consequential or punitive damages, or for lost profits, lost revenue, lost data or business interruption, arising out of or in connection with the service — including any decision to use a batch API rather than a synchronous one, or the reverse.

For paid plans, our total aggregate liability is limited to the amount you paid us in the 12 months preceding the event giving rise to the claim. For free use, it is limited to [AMOUNT — e.g. DKK 1,000].

Nothing here excludes liability that cannot lawfully be excluded, including liability for death or personal injury caused by negligence, for fraud, or under mandatory Danish consumer law where it applies.

12. Acceptable use

Use of the service is subject to ACCEPTABLE-USE.md. The most important rule there is that every measurement you submit must be one you actually observed.

13. Suspension and termination

We may revoke a key, exclude a key's history from the published aggregate, or block access, if the acceptable use rules are breached. Where we can, we will say why.

Revoking a key stops it authenticating. Measurements already submitted under it remain in the dataset by default — they were true when they were taken, and a record that can be deleted backwards is not a record. This default is separate from a data-protection erasure request, which is handled under PRIVACY.md §7.

You may stop using the service at any time. DELETE /v1/keys/current revokes your key.

14. Governing law and venue

These terms are governed by Danish law, excluding its conflict-of-law rules. Disputes go to the courts of [VENUE — e.g. Retten i Kolding], unless mandatory consumer-protection rules give you the right to sue elsewhere.

15. Contact

hello@batchwatch.dev for anything, including the export and deletion requests described above.