Skip to main content
GET
Get search status
Returns the latest search snapshot. Polling this endpoint advances pending discovery and profile work before returning the response.
The response has the same shape as Start a search. Every result includes sources containing search, candidate_discovery, or both. Known-search results retain their lightweight preview on every poll, regardless of include_profile. When include_profile is true, every poll also embeds the latest readable canonical profile, including a level 1 profile while that result is still enriching.

Know when a search is done

status answers one question: is the whole search done, and how did it go? Continue polling while it is running. Stop when it becomes:
  • completed: every result reached the requested profile_depth. A search can also complete with an empty results list when nothing matched.
  • completed_with_errors: ready results are available, but at least one result or candidate discovery failed.
  • failed: work failed and the search has no ready results.
A search completes when every result is published at the requested depth. Orbit can continue to improve published profiles afterward, so a later profile read can return more data than the search response embedded.

Track each phase

Two snapshot fields report the search’s phases independently:
  • candidate_discovery_completed answers: is the result list final? When true, discovery adds no more results to this search. For discovery searches it becomes true as soon as clustering fixes the candidate set and every discovered person appears in results — usually while those results are still generating. Present only when the search ran with candidate_discovery: true. If discovery failed, candidate_discovery_failure explains why.
  • profile_upgrades_completed answers: are the current profiles final? When true, every result currently in results reached the requested profile_depth or failed. While candidate_discovery_completed is false, discovery can still add results that bring new profile work.
Poll on status alone — it is the only signal that the search is finished. Use these fields to show progress. For a discovery search, candidate_discovery_completed: true with profile_upgrades_completed: false is the normal mid-run state: all people are found and their profiles are still building, so you can render the final list of people while their profiles fill in.

Result statuses

Each entry in results moves through its own lifecycle, separate from the search status: Statuses only move forward: generating becomes enriching, enriching becomes ready or failed, and ready never regresses.

Result stability

Snapshots are stable between polls:
  • A result never disappears from a later response. New candidate results append after the existing rows.
  • limit caps only the initial matches from the existing Orbit index. Candidate Discovery results append outside that quota, and profile upgrades update rows in place. The final results count can therefore exceed limit and has no fixed multiple of it.
Key your UI by profile_id and update rows in place. You can render ready results while the rest of the search is still running.
During candidate discovery, the polling response includes pending and assigned source receipts:
discovered_sources starts filling within seconds of the search starting, while Orbit is still gathering, and decreases as Orbit assigns sources to candidates. The assigned receipts appear in results[].candidate_sources and remain there when the result becomes ready. Every receipt contains link, title, and sourceImage. results[].sources is the existing result-origin list and does not contain source receipts. In both receipt arrays, link is the URL of the discovered source page, title is the display title of the source page or site, and sourceImage is the URL of the favicon for the site that hosts the source page. This endpoint requires search:read. If the original search used include_profile: true, the caller also needs profile:read. A search is only visible to the API key that created it.

Authorizations

Authorization
string
header
required

Use an Orbit API key from the developer dashboard.

Path Parameters

search_id
string
required

The search ID returned by POST /v3/search.

Minimum string length: 1

Response

The current search snapshot.

search_id
string
required

Server-generated identifier for this search. Use it to poll the status endpoint.

request_id
string
required

The idempotency key from the original request, or a generated value when the request omitted it.

status
enum<string>
required

Overall search lifecycle. running means work is still in progress; poll until the status is terminal. completed means every result reached the requested profile depth; a search can complete with an empty results list when nothing matched. completed_with_errors means ready results are available but some work failed. failed means work failed and no ready results are available.

Available options:
running,
completed,
completed_with_errors,
failed
candidate_discovery
boolean
required

Whether this search runs candidate discovery, as resolved from the request.

profile_depth
enum<string>
required

The minimum profile depth requested for each ready result.

Available options:
partial,
full
include_profile
boolean
required

Whether ready results embed the full profile object.

profile_upgrades_completed
boolean
required

Whether every result in results has reached the requested profile_depth or failed. While candidate_discovery_completed is false, discovery can still add results with new profile work.

results
object[]
required

The people this search has found so far. Results are append-only: a reported result is never removed, and a ready result never regresses.

created_at
string<date-time>
required

When the search was created.

updated_at
string<date-time>
required

When the snapshot last changed.

candidate_discovery_completed
boolean

Whether the result list is final. Once true, discovery adds no more results to this search; the results themselves can still be generating or enriching toward the requested depth. For discovery searches this becomes true when clustering completes and every discovered person appears in results. If discovery failed, candidate_discovery_failure explains why. Present only when candidate_discovery is true.

discovered_sources
object[]

Candidate Discovery source receipts that have not yet been assigned to a result. Present when candidate_discovery is true.

candidate_discovery_failure
object

Why candidate discovery failed. Present only when discovery failed.