Skip to main content
Every request to /api/v0/** carries two headers.
Keep your secret server-side. Never ship it in browser or mobile code, and never commit it to source control.

Permissions

Each key carries permissions that gate which endpoints it can reach. A valid key that lacks the required permission is rejected with 400 VALIDATION_ERROR — not 403.

Failure modes

Authentication fails closed, and deliberately does not tell you which part was wrong.
Your credentials were rejected
A header is missing or blank, the key is unknown, the secret is wrong, or the partner is inactive. All four are indistinguishable by design.
Endl could not verify right now
Endl could not reach the credential store. Your key may be perfectly valid, so retry with backoff. This is deliberately not a 401.
Treat 401 as a configuration problem to fix and 503 as a transient fault to retry. Retrying a 401 will never succeed.