Skip to main content
The twin API creates a synthetic twin of an agent trace. A twin replaces every value that identifies a person, a private organisation, an account or a secret with a consistent synthetic value of the same kind, at every occurrence. Structure and format match the trace. Each trace is twinned independently. Once created, a twin completes unless its input causes a failure, such as a trace that is not text. Errors on our side are retried automatically. If the organization’s balance runs out, the twin or batch pauses and resumes once credit is added. Only completed twins are charged.

Quickstart

Create a twin, wait for status: completed, and download its content.
Poll with backoff, or use webhooks.

Base URL

Requests and responses are JSON, except uploads (multipart/form-data) and twin content (the file). The OpenAPI document is at https://api.metaphi.ai/v1/kennet/openapi.json, with no authentication.

Authentication

Authenticate with your secret key as a bearer token:
Owners and admins create organization keys in the console, or with kennet keys create. A key without twin access gets 403 insufficient_scope. Keys with delivery access also call the deliveries endpoints.

Versioning

The current version is 2026-10-11. Responses include the Metaphi-Version header, and events include api_version. To pin a version, send the Metaphi-Version header; an unknown value returns 400 unknown_api_version. Without the header, requests use the current version.

Test mode

Test keys create real twins at no charge, with these limits:
  • Files up to 2 MiB.
  • 5 twins per organization per 24 hours. Further creates return 403 test_quota_exhausted.
  • Objects have "livemode": false.
  • Test and live objects (twins, files, batches, webhook endpoints, idempotency keys) are separate.

Limits

There is no limit on concurrent twins. Each twin is queued and starts as capacity allows.

Going to production

  • Batch many traces. A batch takes up to 10,000 traces with no pacing required.
  • Use webhooks. Events report each twin and batch status change. If you poll, poll batches, not twins.
  • Send an Idempotency-Key on every create. Reuse it on retries. See Idempotency.
  • Handle errors by code. Retry only retryable errors, after Retry-After. See Errors.