Start here
Push your first batch
Register a source, push a batch of observations, read the canonical fixture back — five minutes, one key.
Create a secret key in the dashboard (API keys → Create key) and register a source key under Sources. Every observation names the source it came from; a push from an unregistered source is refused with a problem document that says so.
1 · Push
Send a batch to POST /v1/observations. The Idempotency-Key header makes retries safe: replaying a batch with the same key returns the original receipt instead of applying twice. Validation is per observation — one bad record costs that record, not the batch.
curl https://api.sidelineexchange.com/v1/observations \
-H "Authorization: Bearer sk_test_…" \
-H "Idempotency-Key: first-push-0001" \
-H "Content-Type: application/json" \
-d @batch.json2 · The receipt
A 202 receipt tells you what was accepted and, per rejected observation, the JSON pointer and message. Processing is asynchronous: the workers resolve each observation to a canonical entity and apply it under the conflict policy.
3 · Read it back
List fixtures by team, competition or venue. Every response carries an ETag; send it back as If-None-Match and an unchanged answer costs a 304. The provenance object on each fixture names the observation behind every field — including yours.
curl "https://api.sidelineexchange.com/v1/fixtures?competition=cmp_…&limit=50" \
-H "Authorization: Bearer sk_test_…"