Get search results
Check the status of a search and retrieve its sources.
Pass the job_id from Create a search and the same account's API key. When status is completed, your sources are ready. A key from another account receives 404 job_not_found.
usage.estimated_cost is present while the search is queued. actual_cost is filled when it finishes and deducted from your credits; it is 0 when the search fails. Both include your subscription discount, shown as usage.discount_percent. Polling does not add another charge.
/search/{job_id}Authorization
BearerAuth Dashboard API key, sent as Bearer srcly_…
In: header
Path Parameters
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/search/src_example"{ "job_id": "src_example", "status": "completed", "result_type": "search", "document": { "source_ids": [ "src_paper_example" ], "scores": { "src_paper_example": 1 }, "search_queries": [ "urban green space mental health outcomes", "green space exposure depression anxiety" ], "page": 1, "has_more": false, "status": "done" }, "claims": null, "sources": { "src_paper_example": { "id": "src_paper_example", "title": "Example study of urban green space and mental health", "authors": [ "A. Example", "B. Sample" ], "year": 2024, "venue": "Example Research Journal", "abstract": "Synthetic example used to illustrate the response structure.", "url": "https://example.org/papers/urban-green-space", "pdf_url": null, "citation_count": null, "score": 1, "citations": null, "enrichment": null, "parsed_source": null } }, "usage": { "currency": "USD", "estimated_cost": 0.005, "actual_cost": 0.005, "discount_percent": 0, "balance_after": null }, "metadata": { "requested_max_claims": 4, "actual_max_claims": 0 }}Reading the result
- Check
status: a 200 response means the lookup succeeded, not necessarily the search. - Read the ordered IDs from
document.source_idsor each claim'ssource_ids. - Resolve each ID in
sourcesto retrieve the full source object. - Use each track's
scoresfor its ranking context. These are not confidence percentages. document.search_querieslists the search phrases that were written from your text and sent to the providers.
{
"job_id": "src_example",
"status": "completed",
"result_type": "search",
"document": {
"source_ids": [
"src_paper_example"
],
"scores": {
"src_paper_example": 1
},
"search_queries": [
"urban green space mental health outcomes",
"green space exposure depression anxiety"
],
"page": 1,
"has_more": false,
"status": "done"
},
"claims": null,
"sources": {
"src_paper_example": {
"id": "src_paper_example",
"title": "Example study of urban green space and mental health",
"authors": [
"A. Example",
"B. Sample"
],
"year": 2024,
"venue": "Example Research Journal",
"abstract": "Synthetic example used to illustrate the response structure.",
"url": "https://example.org/papers/urban-green-space",
"pdf_url": null,
"citation_count": null,
"score": 1,
"citations": null,
"enrichment": null,
"parsed_source": null
}
},
"usage": {
"currency": "USD",
"estimated_cost": 0.005,
"actual_cost": 0.005,
"discount_percent": 0,
"balance_after": null
},
"metadata": {
"requested_max_claims": 4,
"actual_max_claims": 0
}
}The example is synthetic and shows a document-only search without citations or enrichment. Consult the model reference for every field, and enums for the exact state values.
Missing and failed searches
An unknown ID returns 404 with error.code: "job_not_found". Results live in Redis and survive an API-process restart. Completed and failed results expire one hour after completion by default; polling does not extend that window. Expired, deleted or lost records all return 404. Redis outages return 503 cache_unavailable, not 404.
A failed search currently returns 200 with status: "failed". Stored job-level failure details are not exposed in the current response model. See errors for the current and planned mappings.