Skip to main content
POST
je_testing

Authorizations

X-API-Key
string
header
required

Headers

Idempotency-Key
string | null

Replaying a request with the same key returns the original job with 200, never a second job.

Maximum string length: 200

Path Parameters

workspace_id
string<uuid>
required

Workspace identifier.

Query Parameters

wait_seconds
integer
default:0

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.

Required range: 0 <= x <= 300

Body

application/json

Body for POST /workspaces/{workspace_id}/je-testing.

query
string
required

What to answer, in the caller's own words. Stripped before its length is checked; a blank query is refused rather than run.

Required string length: 1 - 4096
context
string | null

Free-form background for the model — the engagement, the entity, what the caller already knows. It informs the answer; it does not widen or narrow which files the caller may see.

Maximum string length: 20000
path_prefix
string | null

Narrow the run to one folder subtree, workspace-relative. Passed through to every tool call the run makes rather than evaluated once at the edge. Omit it for the whole workspace.

paths
string[] | null

Scope the run to exactly these uploaded files — the ledger package to test. Every tool the agent runs (listings, reads, SQL) sees only these files and the content ingested from them. Each entry names an uploaded source file, never a folder; scope folders with path_prefix, which composes with this as an intersection. Unknown or inaccessible paths are refused up front. Omit to test the whole workspace: the agent then orients over every queryable file the caller can see and finds the ledger package itself, exactly as deep-search does when unscoped.

Required array length: 1 - 64 elements
Required string length: 1 - 1024
reasoning_effort
enum<string> | null
default:low

Thinking budget for the testing agent; changing it does not change the engine. Null keeps the catalogue's per-model prescription. The console's Effort pill sends 'low' (default) or 'medium'.

Available options:
none,
minimal,
low,
medium,
high
selection_id
string<uuid> | null

Confirmed ledger source selection; mutually exclusive with path selectors.

session_id
string<uuid> | null

Continue a prior je-testing conversation: the id echoed on an earlier result's session_id. The agent resumes with that thread's full context — its orientation and its receipted statements — and treats this request as the follow-up. Omit to start a new thread. Only the API key that started the thread may continue it; a thread whose turn is still running returns 409 session_busy.

Response

Successful Response

The je-testing route's response shape.

One kind, one result: the agent engine answers on je_testing. The pipeline engine behind je-testing-v2 answers on the same JetResult under its own kind, but that route is unpublished, so this shape names only the kind a caller of the published route can receive.

created_at
string<date-time>
required

When the job row was created.

job_id
string<uuid>
required

Server-minted id. Poll GET /v1/jobs/{job_id} or pass wait_seconds on create.

status
enum<string>
required

Lifecycle: queued, running, succeeded, failed, or cancelled.

Available options:
queued,
running,
succeeded,
failed,
cancelled
deleted_at
string<date-time> | null

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.

effort
string | null

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.

error
Error · object | null

Typed failure envelope when status is failed. Null on any other status.

finished_at
string<date-time> | null

When the job reached a terminal status.

force
boolean | null

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.

idempotency_key
string | null

Key that was replayed to return this job. Absent when the create call had no Idempotency-Key.

kind
string
default:je_testing
Allowed value: "je_testing"
name
string | null

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}.

payload_expires_at
string<date-time> | null

When input and result payloads are dropped. Null means they are kept indefinitely.

progress
JobProgress · object | null

Live progress while the job is running. Null while queued and after the job finishes.

project_id
string<uuid> | null

Caller-minted grouping id shared by jobs submitted together. Filterable on GET /v1/jobs.

query
string | null

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.

query_scope
WorkspaceQueryScope · object

The question ran against the whole workspace.

result
JetResult · object | null

Present only on succeeded, and only while retained.

result_state
enum<string>
default:available

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 options:
available,
expired,
not_retained
source
UploadSource · object

Bytes staged through POST /v1/uploads. Single-use, TTL-bound.

started_at
string<date-time> | null

When execution began. Null while still queued.

surface
enum<string> | null

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.

Available options:
deep_search,
qa,
workbook
units
integer
default:0

Billable units once the job finishes; 0 while queued or running.

workspace_id
string<uuid> | null

The workspace this job reads. Null for a document operation whose source is an upload, a URL, or a prior parse result.