# Autousers > REST API, webhooks, and SDK reference for autousers.ai — AI-driven UX evaluation. ## Docs - [Approve an access request](https://docs.autousers.ai/api-reference/access-requests/approve-an-access-request.md) - [Decline an access request](https://docs.autousers.ai/api-reference/access-requests/decline-an-access-request.md) - [Get the caller's outstanding access request](https://docs.autousers.ai/api-reference/access-requests/get-the-callers-outstanding-access-request.md) - [Inbox of pending access requests](https://docs.autousers.ai/api-reference/access-requests/inbox-of-pending-access-requests.md): Returns access requests across all evaluations the caller administers. Cursor-paginated. - [List access requests for an evaluation](https://docs.autousers.ai/api-reference/access-requests/list-access-requests-for-an-evaluation.md) - [Request access to an evaluation](https://docs.autousers.ai/api-reference/access-requests/request-access-to-an-evaluation.md) - [Withdraw / delete an access request](https://docs.autousers.ai/api-reference/access-requests/withdraw-delete-an-access-request.md) - [List API keys](https://docs.autousers.ai/api-reference/api-keys/list-api-keys.md): Returns metadata only — the plain-text token is shown exactly once at creation time. **Session auth only**: bearer-auth on this route is rejected. - [Mint an API key](https://docs.autousers.ai/api-reference/api-keys/mint-an-api-key.md): Returns the plain-text bearer token in the `token` field — the only time the value is exposed. **Session auth only**: bearer-auth on this route is rejected. - [Rename or rescope an API key](https://docs.autousers.ai/api-reference/api-keys/rename-or-rescope-an-api-key.md) - [Revoke an API key](https://docs.autousers.ai/api-reference/api-keys/revoke-an-api-key.md) - [Identity fan-in](https://docs.autousers.ai/api-reference/auth/identity-fan-in.md): Returns the principal behind the current request — useful for CLI / TUI start-screens that need to confirm who they're acting as. - [Create a rubric](https://docs.autousers.ai/api-reference/autousers/create-a-rubric.md) - [Create an autouser persona](https://docs.autousers.ai/api-reference/autousers/create-an-autouser-persona.md) - [Delete a rubric](https://docs.autousers.ai/api-reference/autousers/delete-a-rubric.md) - [Delete an autouser persona](https://docs.autousers.ai/api-reference/autousers/delete-an-autouser-persona.md) - [Draft an autouser from a natural-language prompt](https://docs.autousers.ai/api-reference/autousers/draft-an-autouser-from-a-natural-language-prompt.md): Returns a `SuggestedRubric` + `AutouserDraft` shape that the caller can refine and POST to `/api/v1/autousers`. - [Duplicate an autouser persona](https://docs.autousers.ai/api-reference/autousers/duplicate-an-autouser-persona.md) - [Extract an autouser persona from unstructured input](https://docs.autousers.ai/api-reference/autousers/extract-an-autouser-persona-from-unstructured-input.md) - [Freeze the calibrated rubric](https://docs.autousers.ai/api-reference/autousers/freeze-the-calibrated-rubric.md): Freezing locks the calibrated rubric for production use. Subsequent rating runs reference the frozen version regardless of further calibration cycles. - [Get a rubric](https://docs.autousers.ai/api-reference/autousers/get-a-rubric.md) - [Get an autouser persona](https://docs.autousers.ai/api-reference/autousers/get-an-autouser-persona.md) - [Get calibration status](https://docs.autousers.ai/api-reference/autousers/get-calibration-status.md) - [List autouser personas](https://docs.autousers.ai/api-reference/autousers/list-autouser-personas.md): Includes both team-scoped and system autousers by default. Cursor-paginated. - [List rubrics](https://docs.autousers.ai/api-reference/autousers/list-rubrics.md) - [Optimize calibration parameters](https://docs.autousers.ai/api-reference/autousers/optimize-calibration-parameters.md) - [Start calibration](https://docs.autousers.ai/api-reference/autousers/start-calibration.md) - [Trigger a calibration cycle](https://docs.autousers.ai/api-reference/autousers/trigger-a-calibration-cycle.md) - [Update a rubric](https://docs.autousers.ai/api-reference/autousers/update-a-rubric.md) - [Update an autouser persona](https://docs.autousers.ai/api-reference/autousers/update-an-autouser-persona.md) - [Create a builder-chat conversation](https://docs.autousers.ai/api-reference/conversations/create-a-builder-chat-conversation.md) - [Delete a conversation](https://docs.autousers.ai/api-reference/conversations/delete-a-conversation.md) - [Extract structured fields from a conversation](https://docs.autousers.ai/api-reference/conversations/extract-structured-fields-from-a-conversation.md) - [Get a conversation](https://docs.autousers.ai/api-reference/conversations/get-a-conversation.md) - [List builder-chat conversations](https://docs.autousers.ai/api-reference/conversations/list-builder-chat-conversations.md) - [Materialize a conversation into an evaluation](https://docs.autousers.ai/api-reference/conversations/materialize-a-conversation-into-an-evaluation.md): Promotes a chat-built draft into a real Evaluation row, transferring autousers, dimensions, and stimuli atomically. - [Post a message (returns SSE stream)](https://docs.autousers.ai/api-reference/conversations/post-a-message-returns-sse-stream.md): Posts a user message and streams the assistant response back as SSE. Long-lived; treat as a streaming RPC rather than a request/response. - [Update a conversation](https://docs.autousers.ai/api-reference/conversations/update-a-conversation.md) - [Create a dimension (deprecated — use /templates)](https://docs.autousers.ai/api-reference/dimensions-deprecated/create-a-dimension-deprecated-—-use-templates.md) - [Delete a dimension (deprecated — use /templates/{id})](https://docs.autousers.ai/api-reference/dimensions-deprecated/delete-a-dimension-deprecated-—-use-templates-.md) - [Duplicate a dimension (deprecated)](https://docs.autousers.ai/api-reference/dimensions-deprecated/duplicate-a-dimension-deprecated.md) - [Get a dimension (deprecated — use /templates/{id})](https://docs.autousers.ai/api-reference/dimensions-deprecated/get-a-dimension-deprecated-—-use-templates-.md) - [Get a specific dimension version (deprecated)](https://docs.autousers.ai/api-reference/dimensions-deprecated/get-a-specific-dimension-version-deprecated.md) - [List dimension versions (deprecated)](https://docs.autousers.ai/api-reference/dimensions-deprecated/list-dimension-versions-deprecated.md) - [List dimensions (deprecated — use /templates)](https://docs.autousers.ai/api-reference/dimensions-deprecated/list-dimensions-deprecated-—-use-templates.md) - [Revert a dimension (deprecated)](https://docs.autousers.ai/api-reference/dimensions-deprecated/revert-a-dimension-deprecated.md) - [Snapshot a new dimension version (deprecated)](https://docs.autousers.ai/api-reference/dimensions-deprecated/snapshot-a-new-dimension-version-deprecated.md) - [Update a dimension (deprecated — use /templates/{id})](https://docs.autousers.ai/api-reference/dimensions-deprecated/update-a-dimension-deprecated-—-use-templates-.md) - [Cancel running autouser runs](https://docs.autousers.ai/api-reference/evaluations/cancel-running-autouser-runs.md) - [Create a public rater](https://docs.autousers.ai/api-reference/evaluations/create-a-public-rater.md) - [Create an evaluation](https://docs.autousers.ai/api-reference/evaluations/create-an-evaluation.md) - [Delete a comparison](https://docs.autousers.ai/api-reference/evaluations/delete-a-comparison.md) - [Delete an autouser run](https://docs.autousers.ai/api-reference/evaluations/delete-an-autouser-run.md) - [Delete an evaluation](https://docs.autousers.ai/api-reference/evaluations/delete-an-evaluation.md) - [Dual-lookup by id or shareToken](https://docs.autousers.ai/api-reference/evaluations/dual-lookup-by-id-or-sharetoken.md): Accepts either an evaluation cuid or a public `shareToken` in the path; useful for clients that have an opaque link and want to fan out to the canonical resource. - [Enqueue autouser runs](https://docs.autousers.ai/api-reference/evaluations/enqueue-autouser-runs.md): Spawns one autouser run per `(autouserId, comparisonId)` pairing. Returns the list of newly-enqueued run ids; runs progress asynchronously and emit `autouser_run.completed` / `autouser_run.failed` webhooks (Phase 4). - [Export ratings as CSV / JSON](https://docs.autousers.ai/api-reference/evaluations/export-ratings-as-csv-json.md) - [Get a comparison](https://docs.autousers.ai/api-reference/evaluations/get-a-comparison.md) - [Get aggregated results](https://docs.autousers.ai/api-reference/evaluations/get-aggregated-results.md): Returns rating aggregates, agreement summary, and per-comparison breakdowns for a finalised evaluation. - [Get AI agreement narrative](https://docs.autousers.ai/api-reference/evaluations/get-ai-agreement-narrative.md) - [Get AI insights summary](https://docs.autousers.ai/api-reference/evaluations/get-ai-insights-summary.md) - [Get an evaluation by id](https://docs.autousers.ai/api-reference/evaluations/get-an-evaluation-by-id.md) - [Get autouser run detail](https://docs.autousers.ai/api-reference/evaluations/get-autouser-run-detail.md) - [Get per-turn telemetry](https://docs.autousers.ai/api-reference/evaluations/get-per-turn-telemetry.md) - [Get per-turn telemetry for a run](https://docs.autousers.ai/api-reference/evaluations/get-per-turn-telemetry-for-a-run.md) - [Inter-rater agreement](https://docs.autousers.ai/api-reference/evaluations/inter-rater-agreement.md): Krippendorff α and Cohen κ summaries comparing autousers vs. humans, broken down by dimension. - [List evaluations](https://docs.autousers.ai/api-reference/evaluations/list-evaluations.md): Returns evaluations the caller has access to via team membership or direct share. Cursor-paginated using `starting_after` / `ending_before`. - [List public raters](https://docs.autousers.ai/api-reference/evaluations/list-public-raters.md) - [List run artifacts](https://docs.autousers.ai/api-reference/evaluations/list-run-artifacts.md): Returns signed URLs for screenshots, traces, and other artifacts captured during the run. URLs expire; do not cache. - [Regenerate AI agreement narrative](https://docs.autousers.ai/api-reference/evaluations/regenerate-ai-agreement-narrative.md) - [Regenerate AI insights](https://docs.autousers.ai/api-reference/evaluations/regenerate-ai-insights.md) - [Server-Sent Events progress stream](https://docs.autousers.ai/api-reference/evaluations/server-sent-events-progress-stream.md): Long-lived SSE stream of autouser-run progress events. Heartbeat every 15s. Prefer webhooks (Phase 4) for production integrations. - [Snapshot of autouser-run status](https://docs.autousers.ai/api-reference/evaluations/snapshot-of-autouser-run-status.md) - [Transfer ownership](https://docs.autousers.ai/api-reference/evaluations/transfer-ownership.md): Move an evaluation to another team the caller administers. - [Update a comparison](https://docs.autousers.ai/api-reference/evaluations/update-a-comparison.md) - [Update an evaluation](https://docs.autousers.ai/api-reference/evaluations/update-an-evaluation.md) - [Wizard autosave](https://docs.autousers.ai/api-reference/evaluations/wizard-autosave.md): Patches the evaluation draft state. Used by the in-product wizard for autosave; safe for clients to call repeatedly. - [Get a single event](https://docs.autousers.ai/api-reference/events/get-a-single-event.md): Full event detail rendered as the same Stripe-style envelope the dispatcher POSTs. Cross-team access returns 404. - [List webhook events for the team](https://docs.autousers.ai/api-reference/events/list-webhook-events-for-the-team.md): Cursor-paginated event log for the caller's team, newest first. Returns the same Stripe-style envelope the dispatcher POSTs to receivers — polling consumers and push consumers share parsing code. Filter by `type` (exact match) or `object_id` (the primary object the event is about, e.g. an evaluation… - [Confirm a direct upload completed](https://docs.autousers.ai/api-reference/files/confirm-a-direct-upload-completed.md): Marks an `UploadedFile` row as `uploaded` after the client's PUT to GCS succeeded. Verifies object metadata and persists the final size. - [Delete an uploaded file](https://docs.autousers.ai/api-reference/files/delete-an-uploaded-file.md) - [GCS configuration self-test](https://docs.autousers.ai/api-reference/files/gcs-configuration-self-test.md): Diagnoses the GCS bucket + service-account configuration. Used by `autousers files doctor` and the support team. - [Multipart upload (small files)](https://docs.autousers.ai/api-reference/files/multipart-upload-small-files.md): Multipart `multipart/form-data` upload for small stimuli (<25 MB images). For larger files prefer the 3-step signed-URL flow (`/files/signed-url` → direct PUT → `/files/confirm`). - [Read an uploaded file (signed redirect)](https://docs.autousers.ai/api-reference/files/read-an-uploaded-file-signed-redirect.md): Performs a permission check then 302-redirects to a short-lived signed GCS URL. Do not cache. - [Request a signed PUT URL for direct GCS upload](https://docs.autousers.ai/api-reference/files/request-a-signed-put-url-for-direct-gcs-upload.md) - [Accept an invite (cookie session required)](https://docs.autousers.ai/api-reference/invites/accept-an-invite-cookie-session-required.md) - [Delete an invite](https://docs.autousers.ai/api-reference/invites/delete-an-invite.md) - [Preview an invite (no auth)](https://docs.autousers.ai/api-reference/invites/preview-an-invite-no-auth.md): The opaque `token` itself authenticates this read. Returns enough metadata to render an accept-invite page (evaluation name, owner, expiry). - [Resend invite email](https://docs.autousers.ai/api-reference/invites/resend-invite-email.md) - [Update an invite](https://docs.autousers.ai/api-reference/invites/update-an-invite.md) - [URL → thumbnail (Figma-plugin helper)](https://docs.autousers.ai/api-reference/link-preview/url-→-thumbnail-figma-plugin-helper.md): SSRF-guarded fetch + 24h cache. Used by the Figma plugin to render thumbnails for design-link references. - [List notifications for the caller](https://docs.autousers.ai/api-reference/notifications/list-notifications-for-the-caller.md) - [Mark a notification as read](https://docs.autousers.ai/api-reference/notifications/mark-a-notification-as-read.md) - [Mark all notifications as read](https://docs.autousers.ai/api-reference/notifications/mark-all-notifications-as-read.md) - [List OAuth-connected apps](https://docs.autousers.ai/api-reference/oauth/list-oauth-connected-apps.md): Returns the OAuth 2.1 client authorizations the caller has granted. Session auth only. - [Revoke an OAuth client authorization](https://docs.autousers.ai/api-reference/oauth/revoke-an-oauth-client-authorization.md) - [Bulk delete ratings](https://docs.autousers.ai/api-reference/ratings/bulk-delete-ratings.md) - [List ratings](https://docs.autousers.ai/api-reference/ratings/list-ratings.md) - [Submit a rating](https://docs.autousers.ai/api-reference/ratings/submit-a-rating.md): Upserts on `(evaluationId, comparisonId, userId)` so re-submission updates the existing record. - [Delete the caller's BYOK key](https://docs.autousers.ai/api-reference/settings/delete-the-callers-byok-key.md) - [Get the caller's BYOK settings](https://docs.autousers.ai/api-reference/settings/get-the-callers-byok-settings.md) - [Probe a BYOK key without persisting](https://docs.autousers.ai/api-reference/settings/probe-a-byok-key-without-persisting.md) - [Save a BYOK key](https://docs.autousers.ai/api-reference/settings/save-a-byok-key.md): Rate-limited to 5 requests / minute / user. - [Test the saved BYOK key end-to-end](https://docs.autousers.ai/api-reference/settings/test-the-saved-byok-key-end-to-end.md) - [Toggle BYOK on/off](https://docs.autousers.ai/api-reference/settings/toggle-byok-onoff.md) - [Create an evaluation share](https://docs.autousers.ai/api-reference/shares/create-an-evaluation-share.md) - [Delete an evaluation share](https://docs.autousers.ai/api-reference/shares/delete-an-evaluation-share.md) - [List evaluation shares](https://docs.autousers.ai/api-reference/shares/list-evaluation-shares.md) - [Update an evaluation share](https://docs.autousers.ai/api-reference/shares/update-an-evaluation-share.md) - [Create a team](https://docs.autousers.ai/api-reference/teams/create-a-team.md) - [Delete a team](https://docs.autousers.ai/api-reference/teams/delete-a-team.md) - [Get a team](https://docs.autousers.ai/api-reference/teams/get-a-team.md) - [Invite a member by email](https://docs.autousers.ai/api-reference/teams/invite-a-member-by-email.md) - [Leave a team](https://docs.autousers.ai/api-reference/teams/leave-a-team.md) - [List team members](https://docs.autousers.ai/api-reference/teams/list-team-members.md) - [List teams the caller belongs to](https://docs.autousers.ai/api-reference/teams/list-teams-the-caller-belongs-to.md) - [Remove a member](https://docs.autousers.ai/api-reference/teams/remove-a-member.md) - [Transfer the Owner role](https://docs.autousers.ai/api-reference/teams/transfer-the-owner-role.md) - [Update a member's role](https://docs.autousers.ai/api-reference/teams/update-a-members-role.md) - [Update a team](https://docs.autousers.ai/api-reference/teams/update-a-team.md) - [Create a question template](https://docs.autousers.ai/api-reference/templates/create-a-question-template.md) - [Delete a question template](https://docs.autousers.ai/api-reference/templates/delete-a-question-template.md) - [Draft a template from a natural-language prompt](https://docs.autousers.ai/api-reference/templates/draft-a-template-from-a-natural-language-prompt.md) - [Duplicate a template](https://docs.autousers.ai/api-reference/templates/duplicate-a-template.md) - [Get a question template](https://docs.autousers.ai/api-reference/templates/get-a-question-template.md) - [Get a specific template version](https://docs.autousers.ai/api-reference/templates/get-a-specific-template-version.md) - [List question templates](https://docs.autousers.ai/api-reference/templates/list-question-templates.md): Templates are the canonical product noun for question sets shown to evaluators. The legacy `/api/v1/dimensions/*` family is kept as an alias and is marked `Deprecation: true` with `Sunset: 2027-04-04`. - [List template versions](https://docs.autousers.ai/api-reference/templates/list-template-versions.md) - [Revert a template to a prior version](https://docs.autousers.ai/api-reference/templates/revert-a-template-to-a-prior-version.md) - [Snapshot the current template state into a new version](https://docs.autousers.ai/api-reference/templates/snapshot-the-current-template-state-into-a-new-version.md) - [Update a question template](https://docs.autousers.ai/api-reference/templates/update-a-question-template.md) - [Aggregated usage + plan + remaining quota](https://docs.autousers.ai/api-reference/usage/aggregated-usage-+-plan-+-remaining-quota.md): Returns the caller's plan tier, current period window, used/limit/remaining counters per quota dimension. Phase 2 of the public-API plan extends this with monthly autouser-rating + human-rating + evaluation counters. - [Create a webhook endpoint](https://docs.autousers.ai/api-reference/webhooks/create-a-webhook-endpoint.md): Register a new webhook endpoint. The plaintext signing `secret` is returned ONCE in the response body (`whsec_*`, ~38 chars) and is not recoverable later — persist it immediately or call `POST /v1/webhooks/{id}/rotate-secret` to mint a new one. Admin role or higher; `webhooks:write` scope. - [Delete a webhook endpoint](https://docs.autousers.ai/api-reference/webhooks/delete-a-webhook-endpoint.md): Hard-delete the endpoint. Pending and historical deliveries cascade-delete with the endpoint; events on the team survive (they're independent of any single endpoint). Admin role or higher. - [Get a single webhook delivery](https://docs.autousers.ai/api-reference/webhooks/get-a-single-webhook-delivery.md): Returns the full delivery row including the captured `response_body` (truncated to 4KB at write time) and the linked `event_id`. Cross-team access returns 404. - [Get a webhook endpoint](https://docs.autousers.ai/api-reference/webhooks/get-a-webhook-endpoint.md): Returns the endpoint detail. Plaintext secret is NOT included — only `secret_prefix`. Cross-team access returns 404 to avoid leaking endpoint existence. - [List deliveries for an endpoint](https://docs.autousers.ai/api-reference/webhooks/list-deliveries-for-an-endpoint.md): Cursor-paginated delivery log for this endpoint, newest first. Filter by `status` to inspect only failed / pending / delivered / abandoned attempts. Defaults to 25 rows per page; `limit` caps at 100. - [List webhook endpoints](https://docs.autousers.ai/api-reference/webhooks/list-webhook-endpoints.md): List the webhook endpoints registered on the caller's team. Newest first. The plaintext signing `secret` is NEVER returned here — only `secret_prefix`. Returns `503 feature_not_available` until `AUTOUSERS_WEBHOOKS_ENABLED` is set. - [Replay a failed delivery](https://docs.autousers.ai/api-reference/webhooks/replay-a-failed-delivery.md): Enqueue a NEW delivery row pointing at the same event + endpoint, `attempt=1`, `scheduled_for=now`. The original row is preserved for audit; the worker drains the new row on its next tick. Pending rows are rejected (the worker hasn't tried yet). Disabled endpoints are rejected. - [Rotate the signing secret](https://docs.autousers.ai/api-reference/webhooks/rotate-the-signing-secret.md): Atomically replace the endpoint's signing secret. The new plaintext `secret` is returned ONCE — same UX as create. Receivers that need a graceful rotation window should temporarily verify against both the old and the new secret; the verifier in `lib/webhooks/signing.ts` already supports multiple `v1… - [Send a synthetic test event](https://docs.autousers.ai/api-reference/webhooks/send-a-synthetic-test-event.md): Enqueue a `webhook.test` event and a single matching delivery on this endpoint, regardless of the endpoint's `enabled_events` filter. Useful for smoke-testing connectivity and signature verification without waiting for a real evaluation to finish. Disabled endpoints are rejected — re-enable first. - [Update a webhook endpoint](https://docs.autousers.ai/api-reference/webhooks/update-a-webhook-endpoint.md): Partial update of `url`, `description`, `enabled_events`, `api_version`, or `status`. Disabling does not delete deliveries — set `status: "disabled"` to pause dispatch and `"enabled"` to resume. Admin role or higher. - [Authentication](https://docs.autousers.ai/authentication.md): Four auth paths, thirteen scopes, one rule: bearer wins. - [Changelog](https://docs.autousers.ai/changelog.md): Every API-affecting change, dated, in plain English. - [AI insights](https://docs.autousers.ai/concepts/ai-insights.md): Synthesised narratives over your ratings. Generated on demand, cached, regeneratable. - [Autousers](https://docs.autousers.ai/concepts/autousers.md): AI personas that drive a real browser, follow a calibrated rubric, and emit structured ratings. - [Calibration](https://docs.autousers.ai/concepts/calibration.md): Measure and improve how closely an autouser's ratings agree with your human raters using Cohen's Kappa, then freeze the rubric when agreement is strong. - [Evaluations](https://docs.autousers.ai/concepts/evaluations.md): The study container. SSE for a single design, SxS for a comparison. Lifecycle: Draft → Running → Ended. - [Files & stimuli](https://docs.autousers.ai/concepts/files.md): Three-step signed-URL upload. Direct-to-GCS, never through our origin. - [Concepts](https://docs.autousers.ai/concepts/overview.md): How Autousers thinks. Read this before writing your first integration. - [Ratings & agreement](https://docs.autousers.ai/concepts/ratings-and-agreement.md): Per-rater verdicts and the reliability math that aggregates them. - [Teams & permissions](https://docs.autousers.ai/concepts/teams-and-permissions.md): The ownership boundary. One resource, one team, four roles. - [Templates](https://docs.autousers.ai/concepts/templates.md): Reusable question sets composed of dimensions. The canonical noun. - [Errors](https://docs.autousers.ai/errors.md): One envelope, six error types, every response carries X-Request-Id. - [Idempotency](https://docs.autousers.ai/idempotency.md): Safe retries on billable POSTs. One key per logical request, 24-hour TTL. - [Chrome extension](https://docs.autousers.ai/integrations/chrome-extension.md): Live-rate the URL in your tab. Smoke tests in seconds. - [CLI](https://docs.autousers.ai/integrations/cli.md): @autousers/cli — every /v1 route from your terminal, in CI, in a Makefile. - [Figma plugin](https://docs.autousers.ai/integrations/figma-plugin.md): Queue an autouser pass on a frame without leaving Figma. - [MCP server](https://docs.autousers.ai/integrations/mcp-server.md): The Autousers MCP server exposes 39 tools so you can create evaluations, run autousers, and read results directly from any MCP-aware AI client. - [Integrations](https://docs.autousers.ai/integrations/overview.md): Six first-party clients, all built on the same /v1 surface. - [Recipes](https://docs.autousers.ai/integrations/recipes.md): Slack notifications, GitHub Actions gates, Linear tickets, Looker sync. - [Introduction](https://docs.autousers.ai/introduction.md): REST API, webhooks, and SDKs for AI-driven UX evaluation. - [Pagination](https://docs.autousers.ai/pagination.md): Stripe-style cursor pagination — stable across writes, no offsets, no skipped rows. - [Quickstart](https://docs.autousers.ai/quickstart.md): Mint a key, make your first call, dry-run an evaluation. Five minutes. - [Rate limits & quotas](https://docs.autousers.ai/rate-limits.md): Per-tier RPM, monthly quotas, and the headers you need to respect. - [Versioning](https://docs.autousers.ai/versioning.md): What's stable, what's safe to add, and how we sunset what's not. - [Event reference](https://docs.autousers.ai/webhooks/events.md): Every v1 event, when it fires, what it carries. - [Webhooks overview](https://docs.autousers.ai/webhooks/overview.md): Stop polling. Subscribe to events. Verify signatures. Retry deterministically. - [Signature verification](https://docs.autousers.ai/webhooks/signature-verification.md): HMAC-SHA256 over `${timestamp}.${raw_body}`. Stripe-style. Five-minute replay window. - [Testing webhooks](https://docs.autousers.ai/webhooks/testing.md): Send synthetic events. Tunnel localhost. Replay deliveries. ## OpenAPI Specs - [openapi](https://app.autousers.ai/api/v1/openapi.json)