By ownership

Trace who ultimately owns an entity, or what it owns.

POST/api/v2.0-preview/atlas/graphs/ownership

Authorizations

Bearer
Authorizationstringrequiredheader

Required Bearer API key: your NOSIBLE API key from the API Dashboard.

Example: Bearer nos_sk_...

Body

application/json
entityobjectrequiredbody

An entity as {type, name}: type is ORG, PERSON, GPE, LOC or PRODUCT; name is matched case-insensitively, and an alias ("NVIDIA", "Trump") resolves to the entity it names. Names are World V2.0-preview's canonical names; for a ticker, send its company as an ORG.

Example: {"type":"ORG","name":"YouTube"}

directionenumbody

up (default) to the owners, down to what it owns, or both.

Example: up

predicatesstring[]body

Ownership relationship types followed. Defaults to subsidiary_of, division_of, has_controlling_interest_in and owns_equity_stake_in. Leave out owns_equity_stake_in to follow control only.

Example: ["subsidiary_of","division_of","has_controlling_interest_in"]

min_supportintegerbody

Minimum supporting events per ownership link.

Example: 20

max_depthintegerbody

Levels followed, 1 to 10. Defaults to 6.

Example: 6

as_ofdatebody

Point in time (YYYY-MM-DD). Only events dated on or before it count. Defaults to the latest date in the release. `to` is accepted as the same parameter, as in the World API.

Example: 2024-12-31

fromdatebody

Optional start of the evidence window (YYYY-MM-DD, inclusive).

Example: 2020-01-01

How to use this endpoint

guidance

Use By ownership to walk an ownership chain. With the default predicates the chain also climbs through minority shareholders, so a listed company can have hundreds of ultimate owners; pass the three control predicates and a min_support to follow control only, as in the example: YouTube's chain climbs through Google to Alphabet, its ultimate owner.

Response body

application/json

These are the fields you can build against. Nested names use dot notation; optional sections are called out in their descriptions.

entityobject

The entity you asked about.

ultimate_ownersobject[]

Entities in the chain with no owner of their own inside the window. Empty for direction down.

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.

cycle_cutboolean

True when an ownership cycle was found and cut.

truncatedboolean

True when a work budget cut the chain short.

schemastring

Response schema name.

as_ofdate

The point in time the answer is computed for.

date_windowobject

The evidence window: from, to, archive_cutoff and include_live (always false).

releasestring

Immutable id of the graph release that answered. The same request against the same release returns identical bytes.

took_msinteger

Server time in milliseconds.

Responses and errors

HTTP
200Request succeeded. The response body is shown in the panel on the right.
400invalid_request — A parameter is missing, malformed or out of range; the message names it.
400invalid_entity_type — The entity type is not one Atlas holds. TICKER is refused: send the company as an ORG.
400unknown_predicate — A relationship type is not in the graph; list them with Relationship types.
401api_key_required — No API key was sent. Send it as Authorization: Bearer <key> or the api-key header.
401invalid_api_key — The API key is invalid or has been revoked.
404unknown_entity — No entity of that type has that name in this release. When the name exists under another type, the message says which.
404not_found — No endpoint matches this method and path.
410cursor_expired — The cursor belongs to another release or request; restart from the first page.
422unprocessable_request — Each value is valid but not together, such as from after as_of.
422request_too_broad — The request ran out of its work budget before it could answer; narrow it.
429rate_limited — Too many requests for this key; wait for Retry-After.
501backend_not_configured — The Atlas backend is not configured for this deployment.
502backend_error — The Atlas backend could not be reached; retry shortly.
503unavailable — The service is busy or starting; retry after Retry-After.
503api_key_auth_unavailable — API key authentication is temporarily unavailable; retry shortly.
504request_timeout — The request took longer than 25 seconds; narrow it.
504backend_timeout — The Atlas backend did not answer before the deadline; retry.