> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.aventure.vc/api-reference/harness/create-harness-run/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.aventure.vc/_mcp/server. # Research a Company or Person by URL POST https://api.aventure.vc/v1/harness/runs Content-Type: application/json Queues a run that researches the company, Product, Service, or person at url and writes its aVenture profile, owned by the caller. A url a current record owns enriches that record; any other url researches a new one, so this is how to add a subject that POST /v1/lookup answers NO\_MATCH (CLI: lookup). Send name when known. A new run spends one `company` or `person` research unit; a run already queued or running for the same subject is returned instead, uncharged. A url that matches more than one record answers 409, and a spent allowance 429. Check progress with GET /v1/harness/runs/\{runId} (CLI: harness runs get); the caller is notified when the run completes. Without an admin credential a caller may set only url, name, model, mode, userPrompt, and taskPresetKey; any other field is refused with 403, and a userPrompt longer than 2000 characters is refused with 400. An admin bearer credential files a run it owns with any field; an admin API key files one owned by the back-end's Clerk machine. Reference: https://docs.aventure.vc/api-reference/harness/create-harness-run ## Authentication - `Authorization` header (bearer token, required) — Your aVenture API key (https://aventure.vc/settings/api-keys) or OAuth access token ## Request ### Body (application/json) This endpoint expects a HarnessRunCreate. - `url` (string, required) — Official website or profile URL of the company, Product, Service, or person to research; a URL no current record owns researches a new one - `mode` (enum, optional) — Enrichment breadth. Omitted by older clients to request the comprehensive default. - Allowed values: `COMPREHENSIVE`, `INDIVIDUAL` - `model` (string, optional, nullable) — Optional orchestrator model override; omitted uses the configured role default - `name` (string, optional, nullable) — Name of the subject at url, such as Clarity Health; the run verifies it and uses it to pick the right subject when the site names several - `taskPresetKey` (list of string, optional, nullable) — Selected task preset keys that scoped or emphasized this run - `userPrompt` (string, optional, nullable) — Optional steering prompt ## Response ### 200 The filed or reused run. - `attempt` (integer, required) — Retry attempt counter - `chassis` (enum, required) — Agent loop this run executes on - Allowed values: `claude-agent-sdk`, `pi-agent-sdk` - `chassisRouted` (boolean, required) — True when the chassis router, not a caller, picked `chassis` - `createdAt` (datetime, required) — Creation timestamp - `environment` (enum, required) — API environment - Allowed values: `unassigned`, `development`, `staging`, `production` - `hasSourceDocument` (boolean, required) — Whether this run consumes an immutable private source document - `id` (string, required) — Run id - `iteration` (integer, required) — Current loop iteration - `lane` (enum, required) — Queue lane for admission priority - Allowed values: `interactive`, `background` - `llmApi` (enum, required) — Gateway wire API every LLM call of this run uses - Allowed values: `anthropic`, `openai-chat`, `openai-responses` - `maxIteration` (integer, required) — Loop iteration cap - `maxScoutConcurrent` (integer, required) — Parallel read-only scout fan-out width N - `mode` (enum, required) — Enrichment breadth selected for this run - Allowed values: `COMPREHENSIVE`, `INDIVIDUAL` - `model` (string, required) — Orchestrator model id - `status` (enum, required) — Current lifecycle state - Allowed values: `queued`, `running`, `completed`, `failed`, `stopped` - `subagentModel` (string, required) — Read-only research, cohort, and completion sub-agent model id - `type` (enum, required) — Run kind derived from task-key presence: ENRICHMENT for a client-submitted comprehensive or preset-scoped run, TASK for a platform-scheduled micro-task execution - Allowed values: `ENRICHMENT`, `TASK` - `updatedAt` (datetime, required) — Last update timestamp - `url` (string, required) — Company URL under enrichment - `entitySlug` (string, optional, nullable) — Canonical slug of the entity the run produced - `error` (string, optional, nullable) — Terminal failure reason, when failed - `failureClass` (string, optional, nullable) — Typed terminal-failure class from the harness retry classifier (e.g. runtime_cap, escalated, provider_capacity, context_overflow); null unless failed - `finishedAt` (datetime, optional, nullable) — Run completion timestamp - `latestStatus` (string, optional, nullable) — Latest enrich-loop status as an opaque JSON string - `nextAttemptAt` (datetime, optional, nullable) — Earliest re-claim time when waiting on retry backoff - `resumeSafeUntil` (datetime, optional, nullable) — Instant past which a warm resume is no longer guaranteed; the harness writes it with session_resume from the model's cache window. Warm-resumable now iff failed/stopped and this is in the future. Null when there is no resume window. - `startedAt` (datetime, optional, nullable) — Run start timestamp - `taskPresetKey` (list of string, optional, nullable) — Selected task preset keys filed with the run - `userPrompt` (string, optional, nullable) — Optional steering prompt filed with the run ## Errors ### 400 Bad Request Error Bad Request - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `ENTITY_BRAND`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (string, optional, nullable) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 401 Unauthorized Error Unauthorized - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `ENTITY_BRAND`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (string, optional, nullable) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 402 Payment Required Error The authenticated caller's subscription tier does not include research runs. - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `ENTITY_BRAND`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (string, optional, nullable) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 403 Forbidden Error Forbidden - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `ENTITY_BRAND`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (string, optional, nullable) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 406 Not Acceptable Error Not Acceptable - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `ENTITY_BRAND`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (string, optional, nullable) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 409 Conflict Error Conflict - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `ENTITY_BRAND`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (string, optional, nullable) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 415 Unsupported Media Type Error Unsupported Media Type - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `ENTITY_BRAND`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (string, optional, nullable) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 422 Unprocessable Entity Error Unprocessable Content - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `ENTITY_BRAND`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (string, optional, nullable) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 429 Too Many Requests Error Too Many Requests - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `ENTITY_BRAND`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (string, optional, nullable) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 500 Internal Server Error Internal Server Error - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `ENTITY_BRAND`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (string, optional, nullable) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ### 503 Service Unavailable Error Service Unavailable - `allowanceType` (enum, optional) — Which monthly allowance a BILLING_ALLOWANCE refusal exhausted. - Allowed values: `COMPANY`, `PERSON`, `ENTITY_VIEW`, `ENTITY_BRAND`, `PERSON_VIEW`, `WEB_SEARCH` - `circuitBreaker` (string, optional, nullable) - `code` (string, optional, nullable) — Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Code groups include auth/session, rate limiting, job infrastructure, RBAC, external providers, image processing, R2 storage, search, and inference. Many codes indicate infra/admin-only conditions where the correct agent action is to surface the error and stop, not retry. - `conflictingRecord` (CurrentSlugOwner, optional, nullable) — Current slug owner - `detail` (string, optional) - `details` (DomainConflictDetails, optional, nullable) — Structured conflict details. Create duplicate reviews and deterministic lookup ambiguity return DuplicateCreateReview; the returned candidates are the decision surface for update, create-with-override, or block. score/threshold rank review priority and are not proof that the requested record is absent. - `error` (map from string to string, optional, nullable) - `existingRedirect` (RedirectSlugPath, optional, nullable) — Redirect slug path - `feId` (string, optional, nullable) - `field` (string, optional, nullable) - `hammingDistance` (long, optional, nullable) - `hint` (string, optional, nullable) - `instance` (string, optional) - `limit` (long, optional, nullable) — Cap the limitType meter allows for its current period. - `limitType` (enum, optional) — Which meter refused the request; names what limit/used/remaining count. - Allowed values: `FORM`, `GLOBAL`, `SUBNET`, `IP`, `UNKNOWN`, `RESILIENCE4J`, `WEB_SEARCH`, `AGENT_HELP`, `NATURAL_SEARCH`, `BILLING_ALLOWANCE`, `BILLING_ADDITIONAL_USAGE`, `CLERK_PUBLIC_ADMISSION`, `CLERK_SCRIPT_LOAD`, `ORIGIN_DETAIL`, `INFERENCE_PROVIDER` - `matchedBlocklistKey` (string, optional, nullable) - `mediaType` (string, optional, nullable) - `moderationReason` (string, optional, nullable) - `parseError` (string, optional, nullable) - `path` (string, optional, nullable) - `properties` (map from string to any, optional) - `remaining` (long, optional, nullable) — Cap minus used for the limitType meter, never negative. - `requiredRole` (string, optional, nullable) - `resetAt` (datetime, optional, nullable) — When the limitType meter refills and the request can succeed again. - `resolution` (ProblemResolution, optional, nullable) — Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `retryAfterSeconds` (long, optional, nullable) — Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff. - `spanId` (string, optional, nullable) - `status` (integer, optional) - `suggestion` (string, optional, nullable) - `suggestions` (map from string to string, optional, nullable) - `suspectedFragment` (string, optional, nullable) - `title` (string, optional) - `traceId` (string, optional, nullable) - `type` (string, optional) - `unknownParameters` (list of string, optional, nullable) - `used` (long, optional, nullable) — Requests already charged against the limitType meter this period. - `validParameters` (list of string, optional, nullable) - `value` (string, optional, nullable) - `windowSeconds` (long, optional, nullable) — Length of a rolling throttle window; absent for period meters. ## Types ### CurrentSlugOwner Current slug owner - `id` (string, required) - `isHidden` (boolean, required) - `resourceType` (enum, required) — Resource type whose slug is being changed - Allowed values: `entity`, `person`, `news`, `blog`, `content` - `showOnSitemap` (boolean, required) - `slug` (string, required) - `deletedAt` (datetime, optional, nullable) - `nameBrand` (string, optional, nullable) ### DomainConflictDetails Polymorphic envelope for RFC 9457 ProblemDetail.details on HTTP 409 responses. The concrete variant depends on the conflict kind: URL ownership collisions return UrlDuplicateConflict; ambiguous strict URL lookups return StrictUrlLookupConflict; create-time duplicate review gates return DuplicateCreateReview; classification writes that touch an inactive tag bucket return ClassificationInactiveTagDetails; news publication+URL uniqueness violations return NewsSourceUrlConflict. Inspect ProblemDetail.code/type and the field set present on details to identify the variant. ### RedirectSlugPath Redirect slug path - `oldUrl` (string, required) - `newUrl` (string, optional, nullable) - `targetCurrentSlug` (string, optional, nullable) - `targetId` (string, optional, nullable) - `targetResourceType` (enum, optional, nullable) — Resource type whose slug is being changed - Allowed values: `entity`, `person`, `news`, `blog`, `content` ### ProblemResolution Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records. - `action` (enum, required) — Next action category for the client or agent. - Allowed values: `setField`, `setParameter`, `removeParameter`, `useEndpoint`, `reviewCandidates`, `authenticate` - `acceptedValue` (list of string, optional, nullable) — Accepted values for the field or parameter, when enumerable. - `endpoint` (string, optional, nullable) — Endpoint to call for the next action, when applicable. - `fieldPath` (string, optional, nullable) — Request-body field path that needs attention, when applicable. - `parameter` (string, optional, nullable) — Query parameter that needs attention, when applicable. - `retryable` (boolean, optional, nullable) — Whether the same logical request can be retried after the next action. ### UrlDuplicateConflict Typed extension on ProblemDetail.details for HTTP 409 when a create/update attempts to set a URL with urlType=website (or another exclusive urlType) that is already a current URL on a different entity or person. The existingJoin list names every current owner of the normalized URL; resolve by demoting the existing owner (isCurrent=false, isPrimary=false) before promoting the new owner. - `existingJoin` (list of UrlDuplicateJoin, required) — Every current owner that already holds the normalized URL with this urlType. Non-empty when this conflict is emitted. - `fragmentIgnored` (boolean, required) — True when URL fragment differences were ignored during duplicate matching (i.e., the conflict ignores everything after '#'). - `guidance` (string, required) — Human-readable guidance on how to resolve the conflict. Defaults to the standard inspect-then-demote/promote sequence. - `requestedOwner` (EntityPersonOwner, required) — Owner the caller attempted to attach the URL to. - `url` (string, required) — Raw URL as submitted by the caller (pre-normalization). - `urlType` (string, required) — URL type submitted by the caller (e.g., 'website', 'twitter'). The conflict applies only within this urlType. - `normalizedUrl` (string, optional, nullable) — Normalized URL match key used for duplicate detection. Null when normalization could not produce a stable key (e.g., malformed input). ### StrictUrlLookupConflict Typed extension on ProblemDetail.details for HTTP 409 when a strict URL lookup (GET /v1/entities/lookup-exact?url=...) resolves to more than one current owner. The candidate lists return every current owner that matches the normalized URL key; the caller must add disambiguating signals (urlType, typeRecord, slug) to resolve to a single owner. - `candidateEntityId` (list of string, required) — Every entity id that currently owns the normalized URL. May be empty when the conflict is between persons; combined with candidatePersonId always > 1. - `candidatePersonId` (list of string, required) — Every person id that currently owns the normalized URL. May be empty when the conflict is between entities; combined with candidateEntityId always > 1. - `hint` (string, required) — Human-readable hint describing which disambiguating query parameters to add. - `url` (string, required) — Raw URL the caller queried. - `normalizedUrl` (string, optional, nullable) — Normalized URL match key the lookup resolved against. Null when normalization could not produce a stable key. - `urlType` (string, optional, nullable) — URL type the caller specified, or null if the lookup did not constrain by urlType. ### DuplicateCreateReview Candidate-review conflict details returned in ProblemDetail.details for create gates and deterministic lookup ambiguity. The returned candidates are the decision surface: update the matching candidate, create with duplicate override only when every candidate is distinct from the source-backed target, or block when identity is unresolved. score and threshold rank review priority; they are not proof that the requested record is absent. - `threshold` (integer, required) — Review threshold used by duplicate scoring. Scores below this value can still be useful candidate context; this value does not prove absence or authorize create. - `candidate` (list of SearchDuplicateCandidateScore, optional, nullable) — Entity/person candidates returned by lookup or create duplicate review. If a candidate is the requested record, read/update that candidate by id. Create with duplicate override only after every candidate is reviewed as distinct. - `newsCandidate` (list of NewsCandidateScore, optional, nullable) — News candidates returned by lookup or create duplicate review. If a candidate is the requested article, read/update that article by id. Otherwise block until source evidence proves a distinct article. - `overridePath` (string, optional, nullable) — Create endpoint to retry only after reviewing the returned candidates and supplying overrideGate=duplicate and overrideReason as query parameters. Null for detail lookup ambiguity, where the next action is review/update/block. ### ClassificationInactiveTagDetails ProblemDetail.details for HTTP 409 when a classification value exists but is inactive. - `availableOverrides` (list of enum, required) — Allowed inactiveTagOverride values for this conflict - Allowed values: `REACTIVATE`, `ATTACH_INACTIVE` - `slug` (string, required) — Existing dormant value slug or lookup key - `tagId` (integer, required) — Existing tag id in res_type_ref ### NewsSourceUrlConflict Typed extension on ProblemDetail.details for HTTP 409 when a news mutation's publication + newsUrlOriginal pair already belongs to another article. The returned fields identify the existing article so the caller can read/update it instead of creating a duplicate. - `conflictingArticleId` (integer, required) — Existing article id (NewsId.value) that already owns this publication + URL pair. - `conflictingArticleSlug` (string, required) — Existing article slug, or empty string when the existing article has no slug. Use with GET /v1/news/lookup?slug= to fetch the conflicting article. - `conflictingArticleTitle` (string, required) — Existing article title for human-readable diagnostics. ### UrlDuplicateJoin URL ownership join row identifying which entity or person currently owns a normalized URL. - `owner` (EntityPersonOwner, required) — Owner of the URL: either entityId or personId is populated depending on the owner kind. Use the populated id to read or update the owner's URL. - `urlId` (integer, required) — Internal URL row id (res_weburl.id) — opaque to API clients. ### EntityPersonOwner Exactly one of entityId or personId is set; ids only, no name fields. Resolve display names with GET /v1/entities/detail or GET /v1/people/\{personId}. - `entityId` (string, optional, nullable) — Owning entity id; set only when personId is absent. - `personId` (string, optional, nullable) — Owning person id; set only when entityId is absent. ### SearchDuplicateCandidateScore Duplicate candidate scoring result. Use id/name/slug/typeRecord/reason to decide whether the candidate is the requested record. score ranks review priority; it does not prove absence. - `id` (string, required) — Candidate id to read or update when this candidate is the requested record. - `reason` (list of string, required) — Match reasons such as name-exact, slug-exact, url-match, url-current, url-type, or precomputed-similarity. url-match proves the supplied URL/domain matched; url-current additionally proves the candidate still holds that address today, so a candidate with url-match but no url-current matched only through a URL it no longer uses, such as an acquisition redirect. url-type only means the candidate has the same URL category and is review context, not URL identity evidence. - `score` (integer, required) — Ranking score for duplicate review. It is not an absence proof; a low score can still be the intended record when reason/name/slug/typeRecord match. - `externalId` (string, optional, nullable) — Matched external identifier when duplicate scoring used one. - `name` (string, optional, nullable) — Candidate display name from the existing record. - `operatingStatus` (string, optional, nullable) — Current operating status for entity candidates. - `publicPath` (string, optional, nullable) — Public API/UI path for the candidate when available. - `slug` (string, optional, nullable) — Candidate slug from the existing record. - `typeRecord` (enum, optional, nullable) — Candidate entity type from the existing record. - Allowed values: `Company`, `Investment Firm`, `Fund`, `Nonprofit`, `Government`, `Organization`, `Business Line`, `Product`, `Service` ### NewsCandidateScore Duplicate candidate scoring result for news articles. Use id/slug/externalId/reason to decide whether the candidate is the requested article. score ranks review priority; it does not prove absence. - `id` (integer, required) — News article id to read or update when this candidate is the requested article. - `reason` (list of string, required) — Match reasons for reviewing the candidate. Exact reasons are decision signals regardless of whether score crosses the review threshold. - `score` (integer, required) — Ranking score for duplicate review. It is not an absence proof; a low score can still be the intended article when reason/slug/externalId match. - `externalId` (string, optional, nullable) — Matched external article identifier when duplicate scoring used one. - `slug` (string, optional, nullable) — Candidate article slug from the existing record. ## Examples **Request** ```json { "url": "string" } ``` **Response** ```json { "attempt": 1, "chassis": "claude-agent-sdk", "chassisRouted": true, "createdAt": "2024-01-15T09:30:00Z", "environment": "unassigned", "hasSourceDocument": true, "id": "string", "iteration": 1, "lane": "interactive", "llmApi": "anthropic", "maxIteration": 1, "maxScoutConcurrent": 1, "mode": "COMPREHENSIVE", "model": "string", "status": "queued", "subagentModel": "string", "type": "ENRICHMENT", "updatedAt": "2024-01-15T09:30:00Z", "url": "string", "entitySlug": "string", "error": "string", "failureClass": "string", "finishedAt": "2024-01-15T09:30:00Z", "latestStatus": "string", "nextAttemptAt": "2024-01-15T09:30:00Z", "resumeSafeUntil": "2024-01-15T09:30:00Z", "startedAt": "2024-01-15T09:30:00Z", "taskPresetKey": [ "string" ], "userPrompt": "string" } ``` **SDK Code** ```python import requests url = "https://api.aventure.vc/v1/harness/runs" payload = { "url": "string" } headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.aventure.vc/v1/harness/runs'; const options = { method: 'POST', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{"url":"string"}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.aventure.vc/v1/harness/runs" payload := strings.NewReader("{\n \"url\": \"string\"\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.aventure.vc/v1/harness/runs") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{\n \"url\": \"string\"\n}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.aventure.vc/v1/harness/runs") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{\n \"url\": \"string\"\n}") .asString(); ``` ```php request('POST', 'https://api.aventure.vc/v1/harness/runs', [ 'body' => '{ "url": "string" }', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.aventure.vc/v1/harness/runs"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"url\": \"string\"\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = ["url": "string"] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.aventure.vc/v1/harness/runs")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```