{"openapi":"3.1.0","info":{"title":"Genomic Intelligence API","description":"REST API for DNA sequence analysis with transformer language models. Tasks: promoter, splice, enhancer, chromatin, annotation, expression. All `\/v1\/*` routes require `Authorization: Bearer gi_\u2026`. Successful predictions return `{data, meta}`; errors return `{error: {code, message, request_id, details?}}`. Long inputs can opt into async dispatch with `Prefer: respond-async` and are polled via `GET \/v1\/tasks\/jobs\/{job_id}`.","contact":{"name":"Genomic Intelligence Support","url":"https:\/\/docs.genomicintelligence.ai\/","email":"contact@genomicintelligence.ai"},"version":"2026.07.23.2 (1eb2255)"},"servers":[{"url":"https:\/\/api.genomicintelligence.ai","description":"Production"}],"paths":{"\/health":{"get":{"tags":["Health"],"summary":"Health Check","description":"Liveness probe. Public; no auth required.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/HealthResponse"}}}}},"security":[]}},"\/v1\/tasks\/jobs\/{job_id}":{"get":{"tags":["Tasks"],"summary":"Retrieve job progress or final result","description":"Unified progress + result endpoint.\n\nHTTP status reflects the underlying job state. Owner-scoped:\n\n- Unknown \/ not-owned \u2192 ``404 not_found``.\n- Expired \u2192 ``410 job_expired``.\n- Running \/ accepted \u2192 ``202`` with the canonical ``{data, meta}``\n  envelope; ``data`` carries ``status`` and ``progress``.\n- Completed \u2192 ``200`` with the same ``{data, meta}`` envelope sync\n  mode would have produced.\n- Failed \u2192 the natural ``4xx``\/``5xx`` for the underlying error with\n  the unified ``{error: {...}}`` envelope.","operationId":"get_job_v1_tasks_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Job complete. Body is the same ``{data, meta}`` envelope the sync predict path returns; ``data`` discriminator narrows on ``task``.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PredictResponse"}}},"headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}}},"400":{"description":"Bad request","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"401":{"description":"Missing or invalid bearer key","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"403":{"description":"Key disabled","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"404":{"description":"Unknown route, job, or cross-tenant access","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"409":{"description":"Conflict","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"410":{"description":"Async job result expired","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"413":{"description":"Payload too large or sync size cap exceeded","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"422":{"description":"Validation failed","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"429":{"description":"Rate-limited or concurrency cap reached","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"500":{"description":"Server error","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"503":{"description":"Model loading or service unavailable","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"202":{"description":"Job still running. Body is ``{data: {job_id, status, progress}, meta: {job_id, task, mode}}`` \u2014 ``data.progress.current_percent`` and ``data.progress.message`` carry live progress.","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}}}}}},"\/v1\/tasks\/jobs":{"get":{"tags":["Tasks"],"summary":"List the caller's recent jobs","description":"Return a short list of the caller's recently submitted jobs.","operationId":"list_jobs_v1_tasks_jobs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application\/json":{"schema":{}}}},"400":{"description":"Bad request","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"401":{"description":"Missing or invalid bearer key","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"403":{"description":"Key disabled","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"404":{"description":"Unknown route, job, or cross-tenant access","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"409":{"description":"Conflict","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"410":{"description":"Async job result expired","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"413":{"description":"Payload too large or sync size cap exceeded","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"422":{"description":"Validation failed","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"429":{"description":"Rate-limited or concurrency cap reached","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"500":{"description":"Server error","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"503":{"description":"Model loading or service unavailable","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}}}}},"\/v1\/tasks\/{task}\/predict":{"post":{"tags":["Tasks"],"summary":"Run inference for the named task","description":"Generic predict dispatcher for all inference tasks.\n\nPer-task differences \u2014 maximum input length, accepted ``options``,\nresult ``counts`` shape, available text output formats, and async\nprogress cadence \u2014 are documented on each task's page in the API\nreference at https:\/\/docs.genomicintelligence.ai.","operationId":"predict_v1_tasks__task__predict_post","parameters":[{"name":"task","in":"path","required":true,"schema":{"type":"string","description":"One of: promoter, splice, enhancer, chromatin, annotation, expression","title":"Task"},"description":"One of: promoter, splice, enhancer, chromatin, annotation, expression"},{"name":"format","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Output format: json (default), or one of the per-task text formats","title":"Format"},"description":"Output format: json (default), or one of the per-task text formats"},{"name":"accept","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accept"}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PredictRequest"}}}},"responses":{"200":{"description":"Successful inference. ``data`` is a discriminated union keyed on ``task`` \u2014 narrow on ``data.task`` (or ``meta.task``) to access task-specific fields. ``meta.task_specific_counts`` is the matching counts union.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/PredictResponse"}}},"headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}}},"400":{"description":"Bad request","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"401":{"description":"Missing or invalid bearer key","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"403":{"description":"Key disabled","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"404":{"description":"Unknown route, job, or cross-tenant access","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"409":{"description":"Conflict","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"410":{"description":"Async job result expired","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"413":{"description":"Payload too large or sync size cap exceeded","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"422":{"description":"Validation failed","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"429":{"description":"Rate-limited or concurrency cap reached","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"500":{"description":"Server error","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"503":{"description":"Model loading or service unavailable","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"202":{"description":"Async submission accepted (only when ``Prefer: respond-async`` was sent). Body is the same ``{data, meta}`` envelope: ``data = {job_id, status: 'accepted', links}`` and ``meta.task = <task>``. Poll ``GET \/v1\/tasks\/jobs\/{job_id}``.","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}},"Content-Location":{"description":"Path to poll for the async result, ``\/v1\/tasks\/jobs\/{job_id}``.","schema":{"type":"string"}}}}}}},"\/v1\/tasks\/{task}\/models":{"get":{"tags":["Tasks"],"summary":"List models available for a task","description":"List models registered for ``{task}`` plus the default.","operationId":"list_task_models_v1_tasks__task__models_get","parameters":[{"name":"task","in":"path","required":true,"schema":{"type":"string","title":"Task"}}],"responses":{"200":{"description":"Successful Response","content":{"application\/json":{"schema":{}}}},"400":{"description":"Bad request","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"401":{"description":"Missing or invalid bearer key","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"403":{"description":"Key disabled","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"404":{"description":"Unknown route, job, or cross-tenant access","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"409":{"description":"Conflict","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"410":{"description":"Async job result expired","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"413":{"description":"Payload too large or sync size cap exceeded","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"422":{"description":"Validation failed","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"429":{"description":"Rate-limited or concurrency cap reached","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"500":{"description":"Server error","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"503":{"description":"Model loading or service unavailable","headers":{"X-Request-Id":{"description":"Server-assigned request correlator. Mirrors ``error.request_id`` on error envelopes; quote in support tickets.","schema":{"type":"string","format":"uuid"}},"X-Job-Id":{"description":"Server-generated UUIDv4 for the inference job. Same value appears in ``meta.job_id`` on success and is the lookup key for ``GET \/v1\/tasks\/jobs\/{job_id}``. Stable across the sync 200, async 202, and progress-poll 202 responses.","schema":{"type":"string","format":"uuid"}}},"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}}}}}},"components":{"schemas":{"AnnotationCounts":{"properties":{"task":{"type":"string","const":"annotation","title":"Task"},"transcripts_found":{"type":"integer","title":"Transcripts Found"}},"additionalProperties":false,"type":"object","required":["task","transcripts_found"],"title":"AnnotationCounts"},"AnnotationData":{"properties":{"model":{"type":"string","title":"Model","description":"Model id that produced this result."},"input":{"additionalProperties":true,"type":"object","title":"Input","description":"Echo of relevant request fields (sequence_length, name, \u2026)."},"summary":{"additionalProperties":true,"type":"object","title":"Summary","description":"Task-specific summary statistics."},"formats":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Formats","description":"Optional per-format pre-rendered text payloads (BED\/GFF3\/\u2026)."},"task":{"type":"string","const":"annotation","title":"Task"},"transcripts":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Transcripts","description":"Detected transcripts. Every transcript carries gene boundaries (``start``\/``end``\/``strand``\/``score``) plus ``tss_position`` and ``polya_position``. Structure-aware models (g0-annotation) additionally populate ``transcript_type`` (mRNA\/lnc_RNA), ``transcript_type_score`` and 0-based half-open ``exons``\/``introns``\/``cds`` arrays. The ``formats`` object exposes ``bed`` and, for structure-aware models, a full ``gff3`` track (also available via ``Accept: text\/x-gff3``)."}},"additionalProperties":true,"type":"object","required":["model","input","summary","task","transcripts"],"title":"AnnotationData","description":"``data`` shape for ``POST \/v1\/tasks\/annotation\/predict``."},"ChromatinCounts":{"properties":{"task":{"type":"string","const":"chromatin","title":"Task"},"windows_processed":{"type":"integer","title":"Windows Processed"},"total_annotations":{"type":"integer","title":"Total Annotations","description":"Sum of per-track annotation counts across all windows."}},"additionalProperties":false,"type":"object","required":["task","windows_processed","total_annotations"],"title":"ChromatinCounts"},"ChromatinData":{"properties":{"model":{"type":"string","title":"Model","description":"Model id that produced this result."},"input":{"additionalProperties":true,"type":"object","title":"Input","description":"Echo of relevant request fields (sequence_length, name, \u2026)."},"summary":{"additionalProperties":true,"type":"object","title":"Summary","description":"Task-specific summary statistics."},"formats":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Formats","description":"Optional per-format pre-rendered text payloads (BED\/GFF3\/\u2026)."},"task":{"type":"string","const":"chromatin","title":"Task"},"windows":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Windows","description":"Per-window chromatin annotations."},"tracks":{"additionalProperties":true,"type":"object","title":"Tracks","description":"Per-position score tracks for visualization."}},"additionalProperties":true,"type":"object","required":["model","input","summary","task","windows","tracks"],"title":"ChromatinData","description":"``data`` shape for ``POST \/v1\/tasks\/chromatin\/predict``."},"EnhancerCounts":{"properties":{"task":{"type":"string","const":"enhancer","title":"Task"},"windows_processed":{"type":"integer","title":"Windows Processed"}},"additionalProperties":false,"type":"object","required":["task","windows_processed"],"title":"EnhancerCounts"},"EnhancerData":{"properties":{"model":{"type":"string","title":"Model","description":"Model id that produced this result."},"input":{"additionalProperties":true,"type":"object","title":"Input","description":"Echo of relevant request fields (sequence_length, name, \u2026)."},"summary":{"additionalProperties":true,"type":"object","title":"Summary","description":"Task-specific summary statistics."},"formats":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Formats","description":"Optional per-format pre-rendered text payloads (BED\/GFF3\/\u2026)."},"task":{"type":"string","const":"enhancer","title":"Task"},"windows":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Windows","description":"Per-window enhancer scores."},"tracks":{"additionalProperties":true,"type":"object","title":"Tracks","description":"Per-position score tracks for visualization."}},"additionalProperties":true,"type":"object","required":["model","input","summary","task","windows","tracks"],"title":"EnhancerData","description":"``data`` shape for ``POST \/v1\/tasks\/enhancer\/predict``."},"ErrorBody":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code (snake_case)."},"message":{"type":"string","title":"Message","description":"Human-readable summary; safe to surface."},"request_id":{"type":"string","title":"Request Id","description":"Server-assigned UUID; mirrors the ``X-Request-Id`` response header. Always populated \u2014 the observability middleware seeds the request context unconditionally. Quote in support tickets."},"details":{"anyOf":[{"$ref":"#\/components\/schemas\/ValidationFailedDetails"},{"$ref":"#\/components\/schemas\/TaskNotSupportedByModelDetails"},{"$ref":"#\/components\/schemas\/ModelNotFoundDetails"},{"$ref":"#\/components\/schemas\/SyncTooLargeDetails"},{},{"type":"null"}],"title":"Details","description":"Code-specific structured details. See per-code shapes in ValidationFailedDetails, TaskNotSupportedByModelDetails, ModelNotFoundDetails, SyncTooLargeDetails. Other codes may carry a free-form payload or omit details entirely."}},"additionalProperties":true,"type":"object","required":["code","message","request_id"],"title":"ErrorBody","description":"Inner error body (the value of the top-level ``error`` key).\n\n``details`` is a code-specific structured payload. The shape is\ndocumented per code in ``https:\/\/docs.genomicintelligence.ai\/reference\/errors.md`` and modelled\nhere as a discriminated union keyed on the sibling ``code`` field;\ntyped clients should switch on ``code`` first, then read ``details``."},"ErrorResponse":{"properties":{"error":{"$ref":"#\/components\/schemas\/ErrorBody"}},"type":"object","required":["error"],"title":"ErrorResponse","description":"Unified error envelope for every non-2xx response."},"ExpressionCounts":{"properties":{"task":{"type":"string","const":"expression","title":"Task"}},"additionalProperties":false,"type":"object","required":["task"],"title":"ExpressionCounts","description":"Expression task has no per-call counts \u2014 the prediction is a single value.\n\nKept as an explicit empty variant so the discriminated union covers\nevery task with a typed shape (rather than carving expression out as\n``None``)."},"ExpressionData":{"properties":{"model":{"type":"string","title":"Model","description":"Model id that produced this result."},"input":{"additionalProperties":true,"type":"object","title":"Input","description":"Echo of relevant request fields (sequence_length, name, \u2026)."},"summary":{"additionalProperties":true,"type":"object","title":"Summary","description":"Task-specific summary statistics."},"formats":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Formats","description":"Optional per-format pre-rendered text payloads (BED\/GFF3\/\u2026)."},"task":{"type":"string","const":"expression","title":"Task"},"prediction":{"additionalProperties":true,"type":"object","title":"Prediction","description":"Expression prediction record: ``{expression, expression_log_tpm, expression_tpm, unit}``."}},"additionalProperties":true,"type":"object","required":["model","input","summary","task","prediction"],"title":"ExpressionData","description":"``data`` shape for ``POST \/v1\/tasks\/expression\/predict`` (TSS-centered window)."},"HealthResponse":{"properties":{"status":{"type":"string","enum":["healthy","degraded"],"title":"Status","description":"`healthy` when the service is ready to accept inference; `degraded` only when configured for CUDA but the GPU is unreachable.","examples":["healthy"]},"version":{"type":"string","title":"Version","description":"Build identifier in `YYYY.MM.DD.iteration (commit_hash)` form. Quote this in any bug report so we can pin the exact code.","examples":["2026.05.02.1 (abc1234)"]}},"type":"object","required":["status","version"],"title":"HealthResponse","description":"Public health check response \u2014 liveness only.\n\nMinimum-disclosure: no GPU model, no loaded-model state, no driver\nstring. For the full operator payload, call ``\/health\/detailed``."},"Meta":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Server-generated UUIDv4. Mirrored on the X-Job-Id response header."},"task":{"type":"string","title":"Task","description":"Task name (matches the {task} URL segment). Use this \u2014 or ``data.task`` \u2014 to narrow the typed unions."},"model":{"type":"string","title":"Model","description":"Model id that ran this inference."},"cold_start":{"type":"boolean","title":"Cold Start","description":"True if the model had to be loaded into GPU memory for this request. Useful for diagnosing first-request latency."},"model_load_time_ms":{"type":"integer","title":"Model Load Time Ms","description":"Milliseconds spent loading the model (0 when cold_start is False)."},"inference_time_ms":{"type":"integer","title":"Inference Time Ms","description":"Milliseconds spent running inference."},"sequence_length":{"type":"integer","title":"Sequence Length","description":"Length of the submitted sequence (bp)."},"task_specific_counts":{"oneOf":[{"$ref":"#\/components\/schemas\/PromoterCounts"},{"$ref":"#\/components\/schemas\/SpliceCounts"},{"$ref":"#\/components\/schemas\/EnhancerCounts"},{"$ref":"#\/components\/schemas\/ChromatinCounts"},{"$ref":"#\/components\/schemas\/AnnotationCounts"},{"$ref":"#\/components\/schemas\/ExpressionCounts"}],"title":"Task Specific Counts","description":"Discriminated counts payload (see per-task ``*Counts`` models).","discriminator":{"propertyName":"task","mapping":{"annotation":"#\/components\/schemas\/AnnotationCounts","chromatin":"#\/components\/schemas\/ChromatinCounts","enhancer":"#\/components\/schemas\/EnhancerCounts","expression":"#\/components\/schemas\/ExpressionCounts","promoter":"#\/components\/schemas\/PromoterCounts","splice":"#\/components\/schemas\/SpliceCounts"}}}},"additionalProperties":true,"type":"object","required":["job_id","task","model","cold_start","model_load_time_ms","inference_time_ms","sequence_length","task_specific_counts"],"title":"Meta","description":"Metadata envelope shared by every successful predict response."},"ModelNotFoundDetails":{"properties":{"available_models":{"items":{"type":"string"},"type":"array","title":"Available Models","description":"Models registered for the requested task."}},"additionalProperties":false,"type":"object","required":["available_models"],"title":"ModelNotFoundDetails","description":"``error.code == 'model_not_found'``."},"PredictRequest":{"properties":{"sequence":{"type":"string","title":"Sequence","description":"DNA sequence (A\/C\/G\/T\/N, case-insensitive). Whitespace (newlines, spaces, tabs) is stripped, so a line-wrapped FASTA sequence body may be pasted verbatim."},"sequence_name":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Sequence Name","description":"Display name for the sequence (e.g., 'chr1:1000-5000').","default":"sequence"},"model":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Model","description":"Model ID. If omitted, the task's default model is used."},"options":{"additionalProperties":true,"type":"object","title":"Options","description":"Task-specific options. See per-task option schemas."}},"additionalProperties":false,"type":"object","required":["sequence"],"title":"PredictRequest","description":"Envelope for every inference endpoint.\n\nThe nucleotide alphabet is validated on every request. The input-length\nlimit and the accepted ``options`` depend on the target task and are\nchecked once the task has been resolved.","example":{"options":{"threshold":0.5},"sequence":"ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT","sequence_name":"chr1:1000-3000"}},"PredictResponse":{"properties":{"data":{"oneOf":[{"$ref":"#\/components\/schemas\/PromoterData"},{"$ref":"#\/components\/schemas\/SpliceData"},{"$ref":"#\/components\/schemas\/EnhancerData"},{"$ref":"#\/components\/schemas\/ChromatinData"},{"$ref":"#\/components\/schemas\/AnnotationData"},{"$ref":"#\/components\/schemas\/ExpressionData"}],"title":"Data","discriminator":{"propertyName":"task","mapping":{"annotation":"#\/components\/schemas\/AnnotationData","chromatin":"#\/components\/schemas\/ChromatinData","enhancer":"#\/components\/schemas\/EnhancerData","expression":"#\/components\/schemas\/ExpressionData","promoter":"#\/components\/schemas\/PromoterData","splice":"#\/components\/schemas\/SpliceData"}}},"meta":{"$ref":"#\/components\/schemas\/Meta"}},"additionalProperties":true,"type":"object","required":["data","meta"],"title":"PredictResponse","description":"Success envelope for ``POST \/v1\/tasks\/{task}\/predict``."},"PromoterCounts":{"properties":{"task":{"type":"string","const":"promoter","title":"Task"},"windows_processed":{"type":"integer","title":"Windows Processed","description":"Number of sliding windows scored."},"regions_found":{"type":"integer","title":"Regions Found","description":"Detected promoter regions in this call."}},"additionalProperties":false,"type":"object","required":["task","windows_processed","regions_found"],"title":"PromoterCounts"},"PromoterData":{"properties":{"model":{"type":"string","title":"Model","description":"Model id that produced this result."},"input":{"additionalProperties":true,"type":"object","title":"Input","description":"Echo of relevant request fields (sequence_length, name, \u2026)."},"summary":{"additionalProperties":true,"type":"object","title":"Summary","description":"Task-specific summary statistics."},"formats":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Formats","description":"Optional per-format pre-rendered text payloads (BED\/GFF3\/\u2026)."},"task":{"type":"string","const":"promoter","title":"Task"},"regions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Regions","description":"Detected promoter regions (start\/end\/score)."},"window_details":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Window Details","description":"Per-window scoring detail (one entry per scanned window)."}},"additionalProperties":true,"type":"object","required":["model","input","summary","task","regions","window_details"],"title":"PromoterData","description":"``data`` shape for ``POST \/v1\/tasks\/promoter\/predict``."},"SpliceCounts":{"properties":{"task":{"type":"string","const":"splice","title":"Task"},"windows_processed":{"type":"integer","title":"Windows Processed"},"sites_found":{"type":"integer","title":"Sites Found","description":"Detected splice sites (donor + acceptor)."}},"additionalProperties":false,"type":"object","required":["task","windows_processed","sites_found"],"title":"SpliceCounts"},"SpliceData":{"properties":{"model":{"type":"string","title":"Model","description":"Model id that produced this result."},"input":{"additionalProperties":true,"type":"object","title":"Input","description":"Echo of relevant request fields (sequence_length, name, \u2026)."},"summary":{"additionalProperties":true,"type":"object","title":"Summary","description":"Task-specific summary statistics."},"formats":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Formats","description":"Optional per-format pre-rendered text payloads (BED\/GFF3\/\u2026)."},"task":{"type":"string","const":"splice","title":"Task"},"sites":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Sites","description":"Detected splice sites (donor \/ acceptor)."},"tracks":{"additionalProperties":true,"type":"object","title":"Tracks","description":"Per-position score tracks for visualization."},"window_details":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Window Details","description":"Per-window scoring detail."}},"additionalProperties":true,"type":"object","required":["model","input","summary","task","sites","tracks","window_details"],"title":"SpliceData","description":"``data`` shape for ``POST \/v1\/tasks\/splice\/predict``."},"SyncTooLargeDetails":{"properties":{"sequence_length":{"type":"integer","title":"Sequence Length","description":"Length of the submitted sequence (bp)."},"threshold":{"type":"integer","title":"Threshold","description":"Per-endpoint sync cap (bp)."}},"additionalProperties":false,"type":"object","required":["sequence_length","threshold"],"title":"SyncTooLargeDetails","description":"``error.code == 'sync_too_large'`` \u2014 retry with ``Prefer: respond-async``."},"TaskNotSupportedByModelDetails":{"properties":{"task":{"type":"string","title":"Task","description":"Task the partner posted to."},"supported_tasks":{"items":{"type":"string"},"type":"array","title":"Supported Tasks","description":"Tasks this model is registered for."}},"additionalProperties":false,"type":"object","required":["task","supported_tasks"],"title":"TaskNotSupportedByModelDetails","description":"``error.code == 'task_not_supported_by_model'``."},"ValidationFailedDetails":{"properties":{"errors":{"items":{},"type":"array","title":"Errors","description":"FastAPI validation errors array (loc\/msg\/type)."}},"additionalProperties":false,"type":"object","required":["errors"],"title":"ValidationFailedDetails","description":"Pydantic-rejected request. The dispatcher echoes the FastAPI\nvalidation array verbatim under ``details``; each entry has the\nstandard FastAPI ``{loc, msg, type, input?, ctx?}`` shape."}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"gi_\u2026","description":"Partner API key. Issued out of band; see https:\/\/docs.genomicintelligence.ai\/rest-api.md#2-get-a-key."}}},"tags":[{"name":"Tasks","description":"Inference endpoints (sync and async) and job lifecycle."},{"name":"Health","description":"Liveness probe and service banner. Public."}],"security":[{"BearerAuth":[]}]}