curl --request POST \
--url https://ndi-api.nace.ai/v1/workspaces/{workspace_id}/automatic-search \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"query": "<string>"
}
'{
"created_at": "2023-11-07T05:31:56Z",
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "queued",
"deleted_at": "2023-11-07T05:31:56Z",
"effort": "<string>",
"error": {
"code": "invalid_request",
"message": "<string>",
"retryable": true,
"detail": {},
"request_id": "<string>"
},
"finished_at": "2023-11-07T05:31:56Z",
"force": true,
"idempotency_key": "<string>",
"kind": "intelligent_search",
"name": "<string>",
"payload_expires_at": "2023-11-07T05:31:56Z",
"progress": {
"items_done": 0,
"items_failed": 0,
"items_total": 123,
"knowledge_graph": {
"countable": true,
"phase_count": 123,
"phase_index": 123,
"documents": 123,
"mentions": 123,
"step": "<string>",
"step_done": 123,
"step_total": 123
},
"stage": "<string>",
"units_done": 0,
"units_total": 123
},
"project_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"query": "<string>",
"query_scope": {
"type": "workspace"
},
"result": {
"output": {
"answer": "<string>",
"cache": {
"cached_at": "2023-11-07T05:31:56Z",
"served_from_cache": true,
"verified_at": "2023-11-07T05:31:56Z",
"source_job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"candidates_seen": 0,
"claims": [
{
"claim": "<string>",
"claim_id": "<string>",
"definition": {
"grain": "<string>",
"amount_basis": "<string>",
"clock": "<string>",
"filters": [
"<string>"
],
"interpretation": "<string>"
},
"reference": {
"cited_value": "<string>",
"kind": "result_cell",
"result_id": "<string>",
"column": "<string>",
"row": 123
},
"answer_excerpt": "<string>",
"answer_occurrence": 0,
"evidence_indices": [
123
],
"input_result_ids": [
"<string>"
],
"is_calculation": false
}
],
"clarification": "<string>",
"command_receipts": [
{
"command": "<string>",
"outputs": {},
"result_id": "<string>",
"stdout": "<string>"
}
],
"confidence": "certain",
"coverage": {
"labels_required": [
"<string>"
],
"request_access_hint": "<string>",
"restricted_candidates": 0
},
"evidences": [
{
"quote": "<string>",
"relevance": "<string>",
"source_path": "<string>",
"component": "<string>",
"derivation": {
"steps": [
{
"kind": "extraction",
"label": "<string>",
"result_id": "<string>",
"sql": "<string>",
"preview_rows": [
{}
],
"reads": [
"<string>"
]
}
]
},
"page": 123,
"queries": [
{
"sql": "<string>",
"columns": [
{
"data_type": "<string>",
"name": "<string>"
}
],
"grounding_reason": "<string>",
"grounding_status": "exact",
"preview_truncated": false,
"regions": [
{
"a1_range": "<string>",
"source_path": "<string>",
"basis": "verified",
"bounding": false,
"kind": "sheet",
"matched_rows": 0,
"scan_index": 123,
"scan_label": "<string>",
"sheet_name": "<string>"
}
],
"result_id": "<string>",
"row_count": 0,
"rows": [
{}
],
"source_paths": [
"<string>"
],
"supports_answer": true,
"verified": false
}
],
"source_file_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"exhausted": false,
"grounding_job_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"interpretation": "<string>",
"reasoning": "<string>",
"result_type": "intelligent_search",
"session_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sql_receipts": [
{
"result_id": "<string>",
"sql": "<string>",
"columns": [
"<string>"
],
"executor": "<string>",
"grounding_status": "exact",
"handle": "<string>",
"parameters": {},
"replay": {
"catalog_sha256": "<string>",
"engine": "duckdb",
"engine_threads": 123,
"engine_version": "<string>",
"kind": "aggregate",
"logical_plan_sha256": "<string>",
"normalized_sql": "<string>",
"result_artifact_sha256": "<string>",
"result_data_sha256": "<string>",
"result_digest_version": "<string>",
"sql_sha256": "<string>",
"result_dependencies": [
"<string>"
],
"schema_version": 1
},
"result_row_count": 0,
"row_count": 0,
"rows": [
{}
],
"saved_as": "<string>",
"table_bindings": [
{
"path": "<string>",
"table_name": "<string>",
"component": "<string>",
"source_sha256": "<string>"
}
],
"truncated": false,
"view_sql": "<string>",
"views_used": [
"<string>"
],
"warnings": [
"<string>"
]
}
],
"steps_used": 0,
"tool_calls": [
{
"arguments_digest": "<string>",
"duration_ms": 123,
"hits": 123,
"tool": "<string>"
}
],
"usage": {
"by_model": [
{
"model": "<string>",
"cached_input_tokens": 0,
"input_tokens": 0,
"output_tokens": 0,
"requests": 0
}
],
"cached_input_tokens": 0,
"input_tokens": 0,
"output_tokens": 0,
"requests": 0
}
},
"output_job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"routing": {
"final": "fact",
"reason": "<string>",
"router_model": "<string>",
"selected": "fact",
"delegated_wall_ms": 123,
"fact_wall_ms": 123,
"router_wall_ms": 123
},
"result_type": "automatic_search",
"usage": {
"by_model": [
{
"model": "<string>",
"cached_input_tokens": 0,
"input_tokens": 0,
"output_tokens": 0,
"requests": 0
}
],
"cached_input_tokens": 0,
"input_tokens": 0,
"output_tokens": 0,
"requests": 0
}
},
"result_state": "available",
"source": {
"upload_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "upload"
},
"started_at": "2023-11-07T05:31:56Z",
"surface": "deep_search",
"units": 0,
"workspace_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": {
"code": "invalid_request",
"detail": null,
"message": "Request body has extra fields that this operation does not accept.",
"request_id": "req-01j9k2n3p4q5r6s7t8v9",
"retryable": false
}
}{
"error": {
"code": "invalid_request",
"detail": null,
"message": "Request body has extra fields that this operation does not accept.",
"request_id": "req-01j9k2n3p4q5r6s7t8v9",
"retryable": false
}
}automatic_search
Choose fact, deep-high, or filtered search for one query. Cost class: job.
The service interprets the query and optional context to select a pipeline. It selects fact, deep-high, or filtered search before retrieval. This single-shot route does not ask clarification questions. Every pipeline enforces the caller’s access and folder scope.
The result contains the native pipeline output and its owning output_job_id,
plus routing details. A filtered output’s next_cursor continues through
filtered-search with a page request, without another routing decision.
curl --request POST \
--url https://ndi-api.nace.ai/v1/workspaces/{workspace_id}/automatic-search \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"query": "<string>"
}
'{
"created_at": "2023-11-07T05:31:56Z",
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "queued",
"deleted_at": "2023-11-07T05:31:56Z",
"effort": "<string>",
"error": {
"code": "invalid_request",
"message": "<string>",
"retryable": true,
"detail": {},
"request_id": "<string>"
},
"finished_at": "2023-11-07T05:31:56Z",
"force": true,
"idempotency_key": "<string>",
"kind": "intelligent_search",
"name": "<string>",
"payload_expires_at": "2023-11-07T05:31:56Z",
"progress": {
"items_done": 0,
"items_failed": 0,
"items_total": 123,
"knowledge_graph": {
"countable": true,
"phase_count": 123,
"phase_index": 123,
"documents": 123,
"mentions": 123,
"step": "<string>",
"step_done": 123,
"step_total": 123
},
"stage": "<string>",
"units_done": 0,
"units_total": 123
},
"project_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"query": "<string>",
"query_scope": {
"type": "workspace"
},
"result": {
"output": {
"answer": "<string>",
"cache": {
"cached_at": "2023-11-07T05:31:56Z",
"served_from_cache": true,
"verified_at": "2023-11-07T05:31:56Z",
"source_job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"candidates_seen": 0,
"claims": [
{
"claim": "<string>",
"claim_id": "<string>",
"definition": {
"grain": "<string>",
"amount_basis": "<string>",
"clock": "<string>",
"filters": [
"<string>"
],
"interpretation": "<string>"
},
"reference": {
"cited_value": "<string>",
"kind": "result_cell",
"result_id": "<string>",
"column": "<string>",
"row": 123
},
"answer_excerpt": "<string>",
"answer_occurrence": 0,
"evidence_indices": [
123
],
"input_result_ids": [
"<string>"
],
"is_calculation": false
}
],
"clarification": "<string>",
"command_receipts": [
{
"command": "<string>",
"outputs": {},
"result_id": "<string>",
"stdout": "<string>"
}
],
"confidence": "certain",
"coverage": {
"labels_required": [
"<string>"
],
"request_access_hint": "<string>",
"restricted_candidates": 0
},
"evidences": [
{
"quote": "<string>",
"relevance": "<string>",
"source_path": "<string>",
"component": "<string>",
"derivation": {
"steps": [
{
"kind": "extraction",
"label": "<string>",
"result_id": "<string>",
"sql": "<string>",
"preview_rows": [
{}
],
"reads": [
"<string>"
]
}
]
},
"page": 123,
"queries": [
{
"sql": "<string>",
"columns": [
{
"data_type": "<string>",
"name": "<string>"
}
],
"grounding_reason": "<string>",
"grounding_status": "exact",
"preview_truncated": false,
"regions": [
{
"a1_range": "<string>",
"source_path": "<string>",
"basis": "verified",
"bounding": false,
"kind": "sheet",
"matched_rows": 0,
"scan_index": 123,
"scan_label": "<string>",
"sheet_name": "<string>"
}
],
"result_id": "<string>",
"row_count": 0,
"rows": [
{}
],
"source_paths": [
"<string>"
],
"supports_answer": true,
"verified": false
}
],
"source_file_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"exhausted": false,
"grounding_job_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"interpretation": "<string>",
"reasoning": "<string>",
"result_type": "intelligent_search",
"session_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sql_receipts": [
{
"result_id": "<string>",
"sql": "<string>",
"columns": [
"<string>"
],
"executor": "<string>",
"grounding_status": "exact",
"handle": "<string>",
"parameters": {},
"replay": {
"catalog_sha256": "<string>",
"engine": "duckdb",
"engine_threads": 123,
"engine_version": "<string>",
"kind": "aggregate",
"logical_plan_sha256": "<string>",
"normalized_sql": "<string>",
"result_artifact_sha256": "<string>",
"result_data_sha256": "<string>",
"result_digest_version": "<string>",
"sql_sha256": "<string>",
"result_dependencies": [
"<string>"
],
"schema_version": 1
},
"result_row_count": 0,
"row_count": 0,
"rows": [
{}
],
"saved_as": "<string>",
"table_bindings": [
{
"path": "<string>",
"table_name": "<string>",
"component": "<string>",
"source_sha256": "<string>"
}
],
"truncated": false,
"view_sql": "<string>",
"views_used": [
"<string>"
],
"warnings": [
"<string>"
]
}
],
"steps_used": 0,
"tool_calls": [
{
"arguments_digest": "<string>",
"duration_ms": 123,
"hits": 123,
"tool": "<string>"
}
],
"usage": {
"by_model": [
{
"model": "<string>",
"cached_input_tokens": 0,
"input_tokens": 0,
"output_tokens": 0,
"requests": 0
}
],
"cached_input_tokens": 0,
"input_tokens": 0,
"output_tokens": 0,
"requests": 0
}
},
"output_job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"routing": {
"final": "fact",
"reason": "<string>",
"router_model": "<string>",
"selected": "fact",
"delegated_wall_ms": 123,
"fact_wall_ms": 123,
"router_wall_ms": 123
},
"result_type": "automatic_search",
"usage": {
"by_model": [
{
"model": "<string>",
"cached_input_tokens": 0,
"input_tokens": 0,
"output_tokens": 0,
"requests": 0
}
],
"cached_input_tokens": 0,
"input_tokens": 0,
"output_tokens": 0,
"requests": 0
}
},
"result_state": "available",
"source": {
"upload_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "upload"
},
"started_at": "2023-11-07T05:31:56Z",
"surface": "deep_search",
"units": 0,
"workspace_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": {
"code": "invalid_request",
"detail": null,
"message": "Request body has extra fields that this operation does not accept.",
"request_id": "req-01j9k2n3p4q5r6s7t8v9",
"retryable": false
}
}{
"error": {
"code": "invalid_request",
"detail": null,
"message": "Request body has extra fields that this operation does not accept.",
"request_id": "req-01j9k2n3p4q5r6s7t8v9",
"retryable": false
}
}Authorizations
Headers
Replaying a request with the same key returns the original job with 200, never a second job.
200Path Parameters
Workspace identifier.
Query Parameters
Bounded inline wait. 0 (the default) returns 202 immediately. Above 0 the route returns 200 with a terminal job if the work finished in time, and 202 with the still-running job if it did not. Either way, read status.
0 <= x <= 300Body
Body for POST /workspaces/{workspace_id}/automatic-search.
Single-shot query, optional context and folder scope. The fixed router selects fact, deep, or filtered search before retrieval. Execution settings are resolved by the service; this route has no effort or clarification controls.
The question to answer from the workspace. Surrounding whitespace is stripped; a blank query is refused.
1 - 4096Optional free-form background for the model. It does not change access or retrieval scope.
20000Narrow the search to this workspace subtree. Omit to search the whole workspace.
1024How many evidences to return, best first. Omitted means 6. It is a cap on the answer's citation list, not on how much the pipeline reads: retrieval width is fixed, so a larger top_k returns more of what was already found rather than searching further. Raising it far above the default trades citation count for reliability — the whole list is one constrained generation, and the ceiling is 50.
1 <= x <= 50Response
Successful Response
When the job row was created.
Server-minted id. Poll GET /v1/jobs/{job_id} or pass wait_seconds on create.
Lifecycle: queued, running, succeeded, failed, or cancelled.
queued, running, succeeded, failed, cancelled When the caller hid this run from listings, via delete_job. A soft delete: the job still reads by id and still counts toward GET /v1/usage — what it stops doing is appearing in GET /v1/jobs.
How hard this run worked, for the search kinds that carry it. A consolidated deep-search job (kind deep_search_v2, or a scoped intelligent_search run) echoes the requested level: 'low', 'medium', or 'high'. Historical intelligent_search rows carry the retired internal selector instead: 'fast' is fact-search (and still what new fact-search rows say), 'automatic' is automatic-search, 'deep' (or the legacy 'balanced') is the pre-consolidation deep-search and the console's QA chat — those two are not distinguishable by this field. Null for every other kind. Read from the stored request, so it rides the same retention path as query and result: null once result_state leaves available.
Typed failure envelope when status is failed. Null on any other status.
Show child attributes
Show child attributes
When the job reached a terminal status.
The request's own force flag, echoed regardless of outcome. Present for kinds whose request carries one (e.g. kg_build, where a true value cleared the durable store before the job ran) so a caller can tell that apart from a build that failed leaving the prior store untouched — result alone cannot, since it is absent on failure either way.
Key that was replayed to return this job. Absent when the create call had no Idempotency-Key.
Automatic search orchestration job.
"intelligent_search"Display name (the console's 'project'). Public Parse, Split, Classify, Extract, and Ground runs supply a stable server default when blank; citation-generated Ground jobs are excluded. mutable via PATCH /v1/jobs/{job_id}.
When input and result payloads are dropped. Null means they are kept indefinitely.
Live progress while the job is running. Null while queued and after the job finishes.
Show child attributes
Show child attributes
Caller-minted grouping id shared by jobs submitted together. Filterable on GET /v1/jobs.
The question this job was asked, for the search kinds that carry one (intelligent_search, qa_file, qa_tables, filtered_search); null for every other kind. Read from the stored request, so it rides the same retention path as result: null once result_state leaves available. Narrow by design — the frozen access context never reaches the wire. File scope is summarised separately as query_scope.
The question ran against the whole workspace.
- WorkspaceQueryScope
- FileQueryScope
- PathPrefixQueryScope
- FilesQueryScope
Show child attributes
Show child attributes
Present only on succeeded, and only while retained.
Show child attributes
Show child attributes
Why result may be null. available with a null result means the job has not succeeded yet; expired and not_retained mean the payload was dropped by retention.
available, expired, not_retained Bytes staged through POST /v1/uploads. Single-use, TTL-bound.
- UploadSource
- UrlSource
- WorkspaceFileSource
- ParseResultSource
Show child attributes
Show child attributes
When execution began. Null while still queued.
Which console history this deep-search job belongs to. deep_search is the public route and the Deep Search page; qa and workbook are the console chat skins over the same agent. It does not pick the implementation. Null for fact-search and every non-deep-search kind. Jobs stored before this field existed echo deep_search. Read from the stored payload, so it rides the same retention path as query.
deep_search, qa, workbook Billable units once the job finishes; 0 while queued or running.
The workspace this job reads. Null for a document operation whose source is an upload, a URL, or a prior parse result.