Developers · API
The AuthGuard API for integrators: overview and conventions
The AuthGuard API serves each organization's address (for example https://<slug>.authguard.pt). Integrators use four surfaces: approval requests (intents), webhooks, OpenID Connect/SAML and SCIM. Organization administration is not an integration API: it requires a human session with a recent passkey.
Which surfaces are there?
| Surface | Purpose | Authentication |
|---|---|---|
/v1/machine/token, /v1/intents | Ask people for approvals | Machine client, Bearer token |
| Webhooks | Receive decisions | HMAC (Standard Webhooks) |
/.well-known/openid-configuration, /oauth2/* | Application sign-in (OIDC) | OIDC client |
/saml/<organization>/* | Application sign-in (SAML) | Metadata and certificate |
/scim/v2 | Provisioning from Entra ID or Okta | SCIM token |
/v1/meta | Features served (public) | None |
Conventions
- JSON in UTF-8; bodies up to each route's limit.
- Errors in one envelope:
{"error":{"code":"…","message":"…","field":"…"}}. Always use thecode, never the text. See Errors and limits. - Idempotency: creations take
Idempotency-Key; repeating with the same key and body returns the original result (Idempotent-Replayed: true); the same key with another body is409. - Cursor pagination: lists return an opaque cursor; a stale cursor gives
invalid_cursorand the read restarts. - Limits:
429 rate_limitedand503 service_busycarryRetry-After; wait that long. - Resource versions: administrative writes use
expectedRevision; a stale revision gives409.
The contract
The full contract is the OpenAPI 3.1 document docs/openapi/authguard-v1.yaml. See OpenAPI.
SDKs
There are SDKs for TypeScript, Python, Java, .NET and Go. See SDKs.
Error codes in this article
Was this page helpful?
Thank you. Your answer stays in this browser; nothing is sent.
Sorry about that. Try:
- searching for the exact text of the message or the error code
- the error code index
- asking your organization's administrator