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

Read a vocabulary: tools, filters, knowledge, or NACE

One discovery endpoint over four vocabularies, selected by `section`. `tools` lists available workflows, `filters` describes the search grammar, `knowledge` reports this organization's declared namespaces, and `nace` returns the NACE Rev 2.1 taxonomy. NACE also supports a compact text projection and a flat Class-level projection. Free.

GET
/api/v1/catalog

One discovery endpoint over four vocabularies, selected by section. tools lists available workflows, filters describes the search grammar, knowledge reports this organization's declared namespaces, and nace returns the NACE Rev 2.1 taxonomy. NACE also supports a compact text projection and a flat Class-level projection.

Free.

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Query Parameters

section*string

Which vocabulary to read.

Value in

  • "tools"
  • "filters"
  • "knowledge"
  • "nace"
format?string

section=nace only. text is a compact hierarchy.

Default"json"

Value in

  • "json"
  • "text"
level?string

section=nace only. Select nested tree or flat Class rows.

Default"tree"

Value in

  • "tree"
  • "class"
naceSection?string

section=nace only. Restrict the taxonomy to one section.

Value in

  • "A"
  • "B"
  • "C"
  • "D"
  • "E"
  • "F"
  • "G"
  • "H"
  • "I"
  • "J"
  • "K"
  • "L"
  • "M"
  • "N"
  • "O"
  • "P"
  • "Q"
  • "R"
  • "S"
  • "T"
  • "U"
  • "V"

Header Parameters

If-None-Match?string

A cached ETag for conditional reads.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/api/v1/catalog?section=tools"
{  "tools": [    {      "id": "web-research",      "name": "Web Researcher",      "description": "Research any topic from the web and extract structured data into a custom schema",      "path": "/api/v1/enrich",      "credits": 6,      "billingNote": "Found and nothing_found keep the charge; couldnt_look and cancelled refund the credits no provider work consumed; failed (spore's Fault) is refunded in full.",      "inputSchema": {        "type": "object",        "properties": {          "goal": {            "type": "string",            "minLength": 1,            "description": "The purpose of this research — why you are running this workflow",            "examples": [              "Evaluate as potential wholesale partner for Scandinavian design furniture"            ]          },          "instructions": {            "type": "string",            "minLength": 1,            "description": "Optional HOW — specific search or evaluation pointers for this run",            "examples": [              "Focus on B2B pricing and minimum order quantities"            ]          },          "searchLocale": {            "type": "string",            "description": "ISO 3166-1 alpha-2 country the web search is localized to; never Company identity",            "examples": [              "EE"            ]          },          "siteOnly": {            "default": false,            "type": "boolean",            "description": "Restrict all search queries to the anchor domains"          },          "outputSchema": {            "type": "object",            "properties": {              "type": {                "type": "string",                "const": "object"              },              "properties": {                "type": "object",                "propertyNames": {                  "type": "string",                  "pattern": "^[a-z][a-z0-9-]{0,63}\\.[a-z][a-z0-9_]{0,63}$"                },                "additionalProperties": {                  "type": "object",                  "propertyNames": {                    "type": "string"                  },                  "additionalProperties": {}                },                "description": "Field definitions keyed by `namespace.field` Catalog references"              },              "required": {                "type": "array",                "items": {                  "type": "string"                }              }            },            "required": [              "type",              "properties"            ],            "description": "JSON Schema (type: object) defining the Catalog fields to extract. Property names are `namespace.field` Catalog references. Min 1, max 5 properties."          },          "context": {            "default": [],            "description": "Catalog fields to resolve for each target, up to 8. Each is a `namespace.field` reference; a target without that Fact simply lacks it.",            "maxItems": 8,            "type": "array",            "items": {              "type": "object",              "properties": {                "field": {                  "type": "string",                  "pattern": "^[a-z][a-z0-9-]{0,63}\\.[a-z][a-z0-9_]{0,63}$",                  "description": "A Catalog field reference, `namespace.field`."                }              },              "required": [                "field"              ],              "additionalProperties": false            }          }        },        "required": [          "goal",          "outputSchema"        ],        "additionalProperties": false,        "description": "Research the web against a Company, reading its Core implicitly. `context` names Catalog fields to resolve for each target, and every `outputSchema` property names the Catalog field its answer is recorded into."      },      "exampleInput": {        "goal": "Research this company and find out what they do and how many employees they have.",        "outputSchema": {          "type": "object",          "properties": {            "market.description": {              "type": "string",              "description": "What the company does in one sentence"            },            "market.employee_count": {              "type": "number",              "description": "Approximate number of employees"            }          }        },        "searchLocale": "EE",        "context": []      }    },    {      "id": "domain-finder",      "name": "Domain Finder",      "description": "Find the official website domain for a company using AI",      "path": "/api/v1/enrich",      "credits": 2,      "billingNote": "Found and nothing_found keep the charge; couldnt_look and cancelled refund the credits no provider work consumed; failed (spore's Fault) is refunded in full.",      "inputSchema": {        "type": "object",        "properties": {          "context": {            "default": [],            "description": "Catalog fields to resolve for each target, up to 8. Each is a `namespace.field` reference; a target without that Fact simply lacks it.",            "maxItems": 8,            "type": "array",            "items": {              "type": "object",              "properties": {                "field": {                  "type": "string",                  "pattern": "^[a-z][a-z0-9-]{0,63}\\.[a-z][a-z0-9_]{0,63}$",                  "description": "A Catalog field reference, `namespace.field`."                }              },              "required": [                "field"              ],              "additionalProperties": false            }          }        },        "additionalProperties": false,        "description": "Resolves the Company's website and reads Core implicitly. Catalog field references provide supplementary context."      },      "exampleInput": {        "context": []      }    },    {      "id": "legal-entity-finder",      "name": "Legal Entity Finder",      "description": "Reserve Legal entity candidate discovery while its evidence contract is designed",      "path": "/api/v1/enrich",      "credits": 1,      "billingNote": "The required client reservation is refunded in full when the skeleton settles failed.",      "inputSchema": {        "type": "object",        "properties": {},        "additionalProperties": false,        "description": "Finds a Company's Legal entity from its Core name, country and primary Domain. The gated skeleton accepts no Catalog fields."      },      "exampleInput": {}    },    {      "id": "contact-finder",      "name": "Contact Finder",      "description": "Extract employee contacts from a company website",      "path": "/api/v1/enrich",      "credits": 3,      "billingNote": "Found and nothing_found keep the charge; couldnt_look and cancelled refund the credits no provider work consumed; failed (spore's Fault) is refunded in full.",      "inputSchema": {        "type": "object",        "properties": {          "context": {            "default": [],            "description": "Catalog fields to resolve for each target, up to 8. Each is a `namespace.field` reference; a target without that Fact simply lacks it.",            "maxItems": 8,            "type": "array",            "items": {              "type": "object",              "properties": {                "field": {                  "type": "string",                  "pattern": "^[a-z][a-z0-9-]{0,63}\\.[a-z][a-z0-9_]{0,63}$",                  "description": "A Catalog field reference, `namespace.field`."                }              },              "required": [                "field"              ],              "additionalProperties": false            }          },          "minContactThreshold": {            "type": "integer",            "exclusiveMinimum": 0,            "maximum": 9007199254740991,            "description": "Early-stop threshold: extraction stops once this many contacts have been found (default 5). Lower values reduce cost and latency.",            "examples": [              5            ]          }        },        "additionalProperties": false,        "description": "Reads one Company's site, taking the site from the Company's primary Domain."      },      "exampleInput": {        "context": [],        "minContactThreshold": 5      }    }  ]}

Cancel an enrichment launch POST

Requests cancellation of a native launch. Refunds are decided by the canonical terminal transition, not by this operation. Free.

Publish a staged Commons Generation POST

Requires a platform-scoped commons:publish key; organization keys are refused regardless of scopes. The Service validates the staged Generation and atomically publishes its data aliases and Directory. A gate refusal changes no aliases. Free.