Skip to main content
POST
/
models
/
{handle}
/
traits
/
discover
cURL
curl -X POST https://u22a8.ai/v1/models/acme.support-tone/traits/discover \
  -H "Authorization: Bearer $U22A8_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"effort": "medium"}'
{
  "state": "<string>",
  "run_id": "<string>"
}

Documentation Index

Fetch the complete documentation index at: https://u22a8-police-sweep-2026-06-01.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Derives intrinsic traits from the model’s samples and attaches them. Draft-only and asynchronous: it returns 202 with a run id, the model enters busy, and the new traits appear on GET …/traits once it returns to draft. Poll GET …/models/{handle} for the state — there is no run resource to fetch.

Authorizations

Authorization
string
header
required

API key issued in the platform console, sent as Authorization: Bearer <key>.

Path Parameters

handle
string
required

Model handle, e.g. 'u22a8.technical-writing'.

Example:

"u22a8.technical-writing"

Body

application/json

POST /v1/models/{handle}/traits/discover body. Effort-only.

Draft-only. Pools the model's labelled samples, derives intrinsic trait axes, and attaches them as intrinsic traits. Responds like train — 202 + run id on enqueue, 409 + X-Run-Id on a matching in-flight run.

effort
string | null

How much cost and time to spend on discovery: low|medium|high|xhigh|max. Higher levels consider more candidate traits. Omit to use the default.

Response

Successful Response

Response from POST /v1/models/{handle}/train.

state
string
required

Current model state after the call.

Examples:

"busy"

"ready"

run_id
string | null

Newly enqueued run id, or the matching existing run id on an idempotent hit. null when state == 'ready' and no re-optimization was requested (no run was queued).