Documentation
Documentation

Overview

Spore docs

Start here

Getting startedInstall the CLIAuthentication and keys

Build

Search and filtersSegments and the loopEnrichment lifecycle

Recipes

Recipe: search to a live SegmentRecipe: enrich without a segmentRecipe: land your own research

Connect

Events

Account

Credits and billing

Reference

Conventions
API reference
Export the organization's Operation calls POSTPage the organization's Operation calls GETExport the organization's recorded acts POSTPage the organization's recorded acts GETCancel an enrichment launch POSTRead a vocabulary: tools, filters, knowledge, or NACE GETPublish a staged Commons Generation POSTRestore the retained previous Commons Generation POSTPage the organization's Companies GETCorrect a Company's Core under Spore-If-Match PATCHDelete a Company DELETERead everything you know about one Company GETRead Legal entity data for Companies you hold POSTFind Legal entities in the Commons POSTFold one Company into another POSTMint Companies from your own data, or attach rows to Companies you hold POSTPromote a declared current Fact into Company Core POSTRead one Company GETMeasure requested fields over a set of Companies POSTRun a native enrichment POSTPoll an enrichment GETFollow the organization's durable events stream GETPage a Job's frozen target list GETCreate an API key and reveal its secret once POSTRevoke an organization API key POSTList per-item enrichment outcomes GETDeclare a namespace and its fields before recording into them POSTDelete a declaration while nothing stands on it DELETERead your Catalog GETRecord what you observed about a Company or concluded about a Segment POSTUnlock every Legal entity a search matched POSTSearch the Commons: count, analytics, and a minted sample POSTPage a Segment's members, with the exact count GETName a live filter over your Companies POSTDelete a Segment DELETERead what you have concluded about one Segment GETRename a Segment, or change what it means, under Spore-If-Match PATCHRead a Segment's name and filter GETPage the organization's Segments GETPage the organization's credit ledger GETRead the balance and this key's spend bounds GET
API reference

Page a Segment's members, with the exact count

Evaluates the filter now and returns one page of members newest first under an opaque cursor, plus the exact total of the whole set. Registry predicates are evaluated in the Commons over the Legal entities you have unlocked, so a verified-but-locked Company never appears and membership can never reveal data you have not paid for. Reading your own set is not an acquisition. Free.

GET
/api/v1/segments/{segmentId}/companies

Evaluates the filter now and returns one page of members newest first under an opaque cursor, plus the exact total of the whole set. Registry predicates are evaluated in the Commons over the Legal entities you have unlocked, so a verified-but-locked Company never appears and membership can never reveal data you have not paid for. Reading your own set is not an acquisition.

Free.

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

segmentId*string

The Segment.

Formatuuid

Query Parameters

cursor?string

Opaque continuation token from the previous page's nextCursor. Omit for the first page.

limit?integer

Rows per page. Values above 100 are clamped, not rejected.

Range1 <= value <= 100
Default50

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/v1/segments/497f6eca-6276-4993-bfeb-53cbbbba6f08/companies"
{  "items": [    {      "id": "string",      "name": "string",      "country": "string",      "origin": "commons",      "verified": true,      "unlocked": true,      "legalEntityId": "string",      "activities": [        {          "code": "string",          "precision": "section",          "source": {            "scheme": "isic5",            "code": "string"          },          "primary": true        }      ],      "identifiers": [        {          "kind": "registration",          "country": "string",          "scheme": "string",          "value": "string",          "primary": true,          "verifiedAt": "string"        }      ],      "domains": [        {          "domain": "string",          "primary": true        }      ],      "etag": "string",      "createdAt": "string",      "updatedAt": "string"    }  ],  "nextCursor": "string",  "total": 0}

Search the Commons: count, analytics, and a minted sample POST

Runs a filter AST against the live Commons and answers with the population's count, its full analytics, and a sample of matching Legal entities minted as Companies of this organization — verified and unlocked from birth, with Core pre-filled from the registry. The charge is `max(5, newly unlocked)`: the floor pays for the count and analytics, and every Legal entity this organization has not unlocked before costs one credit, once, forever. A Company it already holds is unlocked in place rather than duplicated. An identical request replayed inside the receipt's window returns the original sample for nothing. The quote is the worst case, `max(5, sampleSize)`, computed before anything is read or written; the call is refused whole when it exceeds `maxCredits` or the key's bounds, and the charge never exceeds it. `dryRun` returns the quote without reading the Commons, minting, unlocking, or charging. Unlock the whole population with `POST /api/v1/search/{searchId}/unlock`. Variable price, quoted per request: up to 100 credits per call. Charged max(5, newly unlocked Legal entities); an active receipt replays for 0.

Name a live filter over your Companies POST

Stores a name and a filter, and nothing else. Members are whichever Companies match when you ask, so there is no count here, no snapshot, and no refresh: editing the filter changes membership immediately. Every field the filter names is validated against your own vocabulary — Core, your Catalog, and the registry field map — and an undeclared name is refused. Creating a Segment evaluates nothing. Free.