Stridee
Stridee Platform Docs

Errors & rate limits

Status codes, what an error looks like, the limits that exist, and what is safe to retry.

An error is a status code and a plain-text sentence saying what went wrong and, usually, what to do about it:

Branch on the status, log the sentence, and show neither to your users — the wording can change.

Every signed request gets a request-id header, error or not. It is the id of that call's row in request logs, refused calls included — quote it in Discord and we can see exactly what happened.

409 Conflict
HTTP/1.1 409 Conflict
request-id: 8f3d1b47-6a2e-4c90-b5d8-0e71fa3c26b9
content-type: text/plain; charset=utf-8

https://app.yourapp.com/webhooks is still sealing deliveries to this key. Assign that endpoint another key first.

Status codes

StatusMeaningRetry?
400The request is malformedNo — fix the call
401The signature was refused — see Signing requestsNo — fix the signature
404No such resource, or not yoursNo
409Conflicts with current stateAfter re-reading
413The body is over the limit: 1 MiB, or about 14 MB on /v1/routes for a route fileNo — send less
422Valid, but not possible — e.g. a workout push to a provider without oneNo
429Rate limitedYes, after a minute
5xxOur sideYes, with backoff

Rate limits

API reads are not metered. The limits that exist protect a third party:

WhatLimit
Pings and resends to one webhook endpoint10 per minute
stridee trigger ping per listener10 per minute
Workout and route pushes to devices, together60 per minute

Device pushes are capped because providers rate-limit us across every customer at once. If you are polling to stay current, webhooks cost you nothing and arrive sooner.

Retrying safely

  • GET is always safe to retry. So is DELETE — a repeat gets a 404, which is the state you wanted.
  • POST /v1/connect is safe too: the same external_user_id returns the same user.
  • For other writes, read back before retrying a request whose response you never saw.

Something wrong or missing on this page? Tell us in Discord. Need something the API doesn’t do yet? Request it on the roadmap.