Download OpenAPI specification:
Public API for creating and managing AI literature review jobs.
The AI Literature Review API accepts a research question, sources papers from configured literature providers, and generates a Markdown review report. Long-running work is modeled as a review job.
Internal artifacts such as sourcing manifests, raw S3 artifact URIs, and structured result JSON are intentionally not part of this public contract.
Creates a review job and starts the literature review workflow. If query is omitted,
the sourcing service can use the configured search_query_model to plan a keyword-based
source search query from question. If query is provided, LLM query planning is skipped
and the provided query is used after deterministic normalization.
| Idempotency-Key | string [ 1 .. 256 ] characters Optional idempotency key for safely retrying create requests. |
| question required | string non-empty Natural-language research question to answer. |
| query | string non-empty Optional source search query. When provided, LLM search-query planning is skipped. |
| sources | Array of strings (Source) non-empty Default: ["openalex","pubmed","semantic_scholar"] Items Enum: "openalex" "pubmed" "semantic_scholar" |
object (SourcingOptions) Literature sourcing controls. | |
object (SearchQueryModel) LLM configuration used to plan a keyword-based source search query when | |
object (ReportModel) LLM and embedding model configuration used by report generation. | |
object (ReportOptions) Report generation controls. |
{- "question": "What biomarkers predict response to immune checkpoint inhibitors in melanoma?",
- "query": "melanoma immune checkpoint inhibitor response biomarkers",
- "sources": [
- "openalex",
- "pubmed",
- "semantic_scholar"
], - "sourcing_options": {
- "max_results_per_source": 100,
- "full_text_retrieval": true
}, - "search_query_model": {
- "provider": "openrouter",
- "llm": "openai/gpt-5.5"
}, - "report_model": {
- "provider": "openrouter",
- "llm": "openai/gpt-5.5",
- "embedding": "openai/text-embedding-3-large"
}, - "report_options": {
- "max_papers": 300
}
}{- "review": {
- "review_id": "lr-a3e0d1e2-6dba-4d6a-b9fc-ba50f6047530",
- "status": "running",
- "stage": "sourcing",
- "question": "What biomarkers predict response to immune checkpoint inhibitors in melanoma?",
- "created_at": "2026-07-08T04:20:00Z",
- "updated_at": "2026-07-08T04:20:01Z",
- "progress": {
- "current_stage": "sourcing",
- "message": "Workflow started.",
- "percent": 5
}, - "has_result": false,
- "warning_count": 0,
- "error_count": 0
}
}Lists the authenticated caller's review jobs, newest first.
| limit | integer [ 1 .. 100 ] Default: 25 Maximum number of reviews to return. |
{- "reviews": [
- {
- "review_id": "lr-a3e0d1e2-6dba-4d6a-b9fc-ba50f6047530",
- "status": "pending",
- "stage": "queued",
- "question": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "progress": {
- "current_stage": "queued",
- "message": "string",
- "percent": 100
}, - "has_result": true,
- "warning_count": 0,
- "error_count": 0
}
]
}Returns job status, request metadata, progress, warnings, errors, and public artifact metadata. Internal artifacts and raw storage URIs are not returned.
| review_id required | string non-empty Example: lr-a3e0d1e2-6dba-4d6a-b9fc-ba50f6047530 Literature review identifier. |
{- "review": {
- "review_id": "lr-a3e0d1e2-6dba-4d6a-b9fc-ba50f6047530",
- "status": "succeeded",
- "stage": "completed",
- "question": "What biomarkers predict response to immune checkpoint inhibitors in melanoma?",
- "query": "melanoma immune checkpoint inhibitor response biomarkers",
- "sources": [
- "openalex",
- "pubmed",
- "semantic_scholar"
], - "sourcing_options": {
- "max_results_per_source": 100,
- "max_results_by_source": { },
- "full_text_retrieval": true
}, - "search_query_model": {
- "provider": "openrouter",
- "llm": "openai/gpt-5.5"
}, - "report_model": {
- "provider": "openrouter",
- "llm": "openai/gpt-5.5",
- "embedding": "openai/text-embedding-3-large"
}, - "report_options": {
- "max_papers": 300
}, - "created_at": "2026-07-08T04:20:00Z",
- "updated_at": "2026-07-08T04:35:00Z",
- "progress": {
- "current_stage": "completed",
- "message": "Review completed.",
- "percent": 100
}, - "artifacts": {
- "report_markdown": {
- "content_type": "text/markdown",
- "download_url": "/v1/literature/reviews/lr-a3e0d1e2-6dba-4d6a-b9fc-ba50f6047530/report/download"
}
}, - "warnings": [ ],
- "errors": [ ]
}
}Returns public result metadata after the review succeeds. This endpoint does not inline report contents and does not expose internal manifest or structured result JSON artifacts.
| review_id required | string non-empty Example: lr-a3e0d1e2-6dba-4d6a-b9fc-ba50f6047530 Literature review identifier. |
{- "review_id": "lr-a3e0d1e2-6dba-4d6a-b9fc-ba50f6047530",
- "status": "succeeded",
- "artifacts": {
- "report_markdown": {
- "content_type": "text/markdown",
- "download_url": "/v1/literature/reviews/lr-a3e0d1e2-6dba-4d6a-b9fc-ba50f6047530/report/download"
}
}
}Returns a short-lived pre-signed URL for downloading the Markdown report. If the returned URL expires, call this endpoint again to request a fresh URL.
| review_id required | string non-empty Example: lr-a3e0d1e2-6dba-4d6a-b9fc-ba50f6047530 Literature review identifier. |
{- "review_id": "lr-a3e0d1e2-6dba-4d6a-b9fc-ba50f6047530",
- "artifact": "report_markdown",
- "content_type": "text/markdown",
- "expires_in_seconds": 900,
}Requests cancellation of a review. Terminal reviews and reviews already being canceled are returned unchanged. For running workflows, the service stops the workflow before marking the review as canceled.
| review_id required | string non-empty Example: lr-a3e0d1e2-6dba-4d6a-b9fc-ba50f6047530 Literature review identifier. |
{- "review": {
- "review_id": "lr-a3e0d1e2-6dba-4d6a-b9fc-ba50f6047530",
- "status": "pending",
- "stage": "queued",
- "question": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "progress": {
- "current_stage": "queued",
- "message": "string",
- "percent": 100
}, - "has_result": true,
- "warning_count": 0,
- "error_count": 0
}
}