Skip to main content
GET
Since ingestion is asynchronous, use this endpoint to determine when context is ready to be retrieved. Pass one or more IDs in ids to retrieve status. Works for documents, app sources, and memories. When passing multiple IDs on the query string, use either repeated params (?ids=policy_main&ids=runbook_deploy) or a single comma-joined value (?ids=policy_main,runbook_deploy); both forms are equivalent and can be mixed. Surrounding whitespace is trimmed and empty entries are dropped. For more information, see the Knowledge and Memories guides.
Prefer webhooks over polling? Register a webhook for indexing.status_changed events and HydraDB will POST to your endpoint when content reaches a terminal state (completed or errored). See Webhooks for setup and receiver examples.

Query parameters

Status item fields

Each entry in data.statuses describes one requested id:

Error code values

error_code is the field that lets you tell a caller mistake apart from a real ingestion failure - a distinction you cannot make from indexing_status: "errored" alone. It is empty on any non-errored entry.
Branch on error_code, not on the text in message or error_message. message describes the lookup, not the ingestion result, and human-readable text may change. The full list of codes an errored entry can carry is in the Error Responses reference.

Status values

The normal progression is queuedprocessinggraph_creationcompleted. Treat errored as terminal.

Polling patterns

Stop when content is searchable

Use this for normal RAG/search flows. graph_creation means chunks are indexed and can be retrieved.

Stop when graph processing is complete

Use this before graph-heavy operations such as /context/relations or when you require complete graph_context.
Typical processing time:
  • Memories (text, markdown, conversation pairs): seconds
  • Small documents (under 50 pages): 1–5 minutes
  • Large documents (50+ pages): 5–15 minutes

Behavior notes

graph_creation is searchable. Items in this state are already retrievable via /query. Wait for completed only when you specifically need full graph traversal (graph_context: true).
  • Unknown IDs return as errored: If you pass an ID that does not exist (e.g., a typo), HydraDB returns an entry with indexing_status: "errored" and error_code: "FILE_NOT_FOUND" rather than silently dropping it. Use error_code to distinguish this from a genuine ingestion failure - see error_code values.

Errors

Common codes: 400 INVALID_PARAMETERS, 404 DATABASE_NOT_FOUND, 422 VALIDATION_ERROR. See Error Responses for the full list.
Related Resources

Authorizations

Authorization
string
header
required

API key sent as a Bearer token: "Bearer prefix.secret"

Query Parameters

id
string

Single source ID

Example:

"HydraDoc1234"

ids
string[]

One or more source IDs

Example:
database
string
required

Database (canonical name for the tenant scope)

Example:

"acme_corp"

collection
string

Collection (canonical name for the sub-tenant scope)

Example:

"team_docs"

tenant_id
string
deprecated

Deprecated alias for database

Example:

"tenant_1234"

sub_tenant_id
string
deprecated

Deprecated alias for collection

Example:

"sub_tenant_4567"

Response

OK

data
object
Example:
error
object

Error message, empty string on success.

Example:
meta
object
Example:
success
boolean

Whether the request succeeded.

Example:

true