Skip to main content
The Agnes API is a REST API over HTTPS. Every endpoint is documented in the API reference section of this site, auto-rendered from sdk/openapi/openapi.json with an interactive playground for every operation. This page gives you the orientation: base URL, auth, content negotiation, and the four cross-cutting concerns that have their own pages: rate limiting, pagination, idempotency, and errors.

Authentication

Content negotiation

  • Request bodies are JSON. Set Content-Type: application/json.
  • Responses are JSON. The Content-Type is application/json; charset=utf-8.
  • Errors use the canonical envelope; see Errors.
  • Empty bodies (e.g. 204 No Content for a delete) carry no payload.

URL path conventions

  • All product endpoints live under /api/v1/.
  • Resource collections use plural nouns (/api/v1/policies/, /api/v1/yara-rules/, /api/v1/api-keys/).
  • Resource items live under their collection (/api/v1/policies/{policy_id}).
  • The hero call is POST /api/v1/analyze/. Note the trailing slash.

Versioning

The API is versioned by date, currently 2026-04-16. Pin with the Agnes-Version HTTP header to immunize against future minor changes:
See Authentication and Versioning for the policy.

Cross-cutting headers

Cross-cutting concerns

Tags

The OpenAPI document organizes operations into tags. The most customer-relevant tags: The auto-generated reference is grouped by tag in the left navigation; each operation has an interactive playground that uses your bearer token.

Authentication recipes

Postman / Insomnia

  1. Add a new request to your collection.
  2. Auth tab → Bearer Token → paste an ak_test_… (sandbox) or ak_live_… (production) key.
  3. Headers → add Agnes-Version: 2026-04-16.
  4. Send.

curl

httpie

Where SDKs help

Most teams should reach for the SDKs rather than HTTP-by-hand:
  • They translate canonical analyzer names ↔ server keys.
  • They parse the error envelope into typed exceptions.
  • They retry 5xx / 429 / analyzer_unavailable automatically.
  • They iterate paginated endpoints transparently.
  • They surface request_id on every response and exception.
See Python SDK and TypeScript SDK.

Next