AuthorizationstringrequiredheaderRequired Bearer API key: your NOSIBLE API key from the API Dashboard.
Example: Bearer nos_sk_...
Ask in plain English and get a graph back, with a written explanation.
Use By prompt when you would rather describe the graph than build it from parameters. A language model plans the query, Atlas runs it on the graph, and the explanation is written only from what the graph contains. Expect 5 to 25 seconds. Pass the returned session to refine the same graph in a follow-up question. A follow-up keeps the session's as_of and from unless it sends new ones, and each date you send replaces only itself for the later turns; window_source says where this turn's window came from. A question about ownership uses min_support 10, as By ownership does, unless the prompt states a threshold of its own. A session belongs to the API key that created it, and a session can run one prompt at a time. The graph and the explanation vary from run to run, because the model plans each answer afresh: the example is one real response, which the same request will not repeat word for word.
These are the fields you can build against. Nested names use dot notation; optional sections are called out in their descriptions.
idstringId of this answer (ap_ followed by 16 hex characters).
sessionstringSession id to send with a follow-up prompt (as_ followed by 16 hex characters).
window_sourcestringWhere this turn's as_of and from came from: request (this request sent at least one), session (a follow-up that sent neither, so the session's own were kept) or default (a first prompt that sent neither: the latest date in the release, with no from).
messagestringThe explanation of the graph, in Markdown.
absent_entitiesobject[]Entities you asked about that had no event on or before as_of: {type, name, normalized, reason}. They did not exist in the graph at that date, so they are left out of the answer. Present only when not empty.
absent_entities[].typestringEntity type: ORG, PERSON, GPE, LOC or PRODUCT.
absent_entities[].namestringThe entity's canonical name: an alias you sent resolves to it.
absent_entities[].normalizedstringThe entity's normalized spelling.
absent_entities[].reasonstringWhy the entity is absent: no relationship or event on or before as_of, so it does not exist in the graph at that point in time. To see it, send an as_of after its first event (Entity relationships gives an entity's first_seen).
graphobject{nodes, edges, count, total, truncated}. nodes carry focus: true for the entities you asked about; edges are relationships, strongest first; total counts edges before the limit.
schemastringResponse schema name.
as_ofdateThe point in time the answer is computed for.
date_windowobjectThe evidence window: from, to, archive_cutoff and include_live (always false).
releasestringImmutable id of the graph release that answered.
took_msintegerServer time in milliseconds.
invalid_request — The body is not valid JSON, is missing, or the request framing is broken. A request whose parameters are the problem is a 422 validation_error. Every error body, 401 included, is {error, message, status}.api_key_required — No API key was sent. Send it as Authorization: Bearer <key> or the api-key header.invalid_api_key — The API key is invalid or has been revoked.unknown_entity — No entity of that type has that name in this release. When the name exists under another type, the message says which.not_found — No endpoint has this path.method_not_allowed — The path exists but not for this method (a GET to a POST endpoint, or the reverse); the Allow header lists the methods it takes.cursor_expired — The cursor belongs to another release or request; restart from the first page.validation_error — A parameter the API cannot decode or validate: a missing required parameter, an unknown parameter, a value of the wrong type or outside its range (as_of outside the release's dates, a min_support below 1), or a date that does not exist, such as 2026-02-30. The message names the parameter and what is wrong.invalid_entity_type — The entity type is not one of ORG, PERSON, GPE, LOC or PRODUCT, in an entity or in other_types or exclude_types. For a ticker, send its company as an ORG.unknown_predicate — A relationship type is not in the graph; list them with Relationship types.unprocessable_request — Each value is valid but not together, such as from after as_of.request_too_broad — The request ran out of its work budget before it could answer; narrow it.rate_limited — Too many requests for this key; wait for Retry-After.backend_not_configured — The Atlas backend is not configured for this deployment.backend_error — The Atlas backend could not be reached; retry shortly.unavailable — The service is busy or starting; retry after Retry-After.api_key_auth_unavailable — API key authentication is temporarily unavailable; retry shortly.api_key_metering_unavailable — API key usage metering is temporarily unavailable, so the request was not served; wait for the Retry-After header (30 seconds) and retry.request_timeout — The request took longer than 25 seconds; narrow it.backend_timeout — The Atlas backend did not answer before the deadline; retry.unknown_session — No session with this id exists for your API key: it was never issued, or it belongs to another key. Omit session to start a new conversation.session_busy — The session's previous prompt is still running: of two follow-ups sent at once on one session, one runs and the other gets this. Wait, then send it again.session_expired — Your own session was started on a graph release that has since been replaced; start a new conversation without session.upstream_error — The language model failed; retry.upstream_timeout — The language model did not answer in time; retry.