v1 gets additive changes only — new endpoints and new response fields, never a removal or
a rename. Treat unknown fields as forward compatibility rather than an error.
Not available yet
Stated plainly so you don’t design around something that isn’t there.Webhooks
Webhooks
No outbound event delivery. Poll
GET /v1/submissions?status=evaluated&since=…, or
poll a submission’s report until evaluated is true. Every 30–60 seconds is plenty.Idempotency-Key
Idempotency-Key
The header is accepted and ignored, so a retried
POST can create a duplicate —
retrying a timed-out invitation may invite the candidate twice. Guard retries on your
side: record the invitation id you got back, and check before retrying.PDF reports
PDF reports
?format=pdf returns 400. JSON only for now.Inviting team members
Inviting team members
GET /v1/members reads the roster, but there’s no endpoint to invite a teammate.
Invite from the dashboard.Re-running an evaluation
Re-running an evaluation
No endpoint to re-grade a submission. Contact us if you need one re-run.
Sorting
Sorting
No
sort parameter. Listings are newest-first; cursor pagination depends on that
ordering. Filter server-side, sort client-side.SDKs
SDKs
REST only. The OpenAPI spec works with
standard generators in the meantime.
Browser calls (CORS)
Browser calls (CORS)
No CORS headers, so the API can’t be called directly from a browser. It’s designed for
server-to-server use — which is also the right place for a key that can read candidate
reports.
Changes
August 2026 — first public release
The full hiring loop: challenges, assessments, invitations, submissions, reports, events, members and account. Also in this release:- Test mode.
sk_test_keys served from a deterministic sandbox, with documented inputs for reproducing404and402. See Test mode. - Key expiry and rotation. Keys can expire after 30, 90 or 365 days; an expired key behaves exactly like a revoked one.
Retry-Afteron429, plusX-RateLimit-*andX-Request-Idon every response.- OpenAPI 3.1 spec at
/api/v1/openapi.json, generated from the code that serves the API.
A malformed id now returns
404 rather than 500. Previously a non-UUID id reached
the database and surfaced as a server error. It’s now indistinguishable from an unknown
id, which is also what tenant isolation requires.