/api/v0/** carries two headers.
Permissions
Each key carries permissions that gate which endpoints it can reach —quotes, recipients, accounts, webhooks, and events among them.
A valid key that lacks the required permission is rejected with 400 VALIDATION_ERROR, not 403. If a well-formed call fails validation for no apparent reason, check the key’s permissions before you check the body.
Failure modes
Your credentials were rejected
A header is missing or blank, the key is unknown, the secret is wrong, or the partner is inactive. These are indistinguishable by design. Retrying will not help — fix the configuration.
Endl could not reach the credential store. Your key may be perfectly valid, so retry with backoff. This is deliberately not a
401.Webhook endpoints use these same two headers. See webhooks authentication for the
webhooks and events permissions specifically.