GoodLeads · Schema
TriggerRequest
Submit a pipeline run, optionally scoped to one record, a set of records, a batch, or a filter expression. See `GET /api/v1/schema/attributes` for the full list of fields that can appear in `filters`.
CompanyB2BLead-DataSales Enablement
Properties
| Name | Type | Description |
|---|---|---|
| state | string | Two-letter US state code (e.g. 'CO', 'FL', 'VA', 'NY'). Must be a live state. |
| stages | object | Pipeline stages to run. Either 'all', a single stage name, a comma-separated list, or an array. Shortcut: 'enrich' = skip_trace + gapfill + validate. See GET /api/v1/pipeline/stages for the canonical |
| limit | object | Cap the number of records this run touches. Applied at scope-resolution time, so all stages operate on the same set. |
| batch_id | object | Run the pipeline on every entity in this batch (UUID). Mutually exclusive with `entity_id` and `filters`. |
| entity_id | object | Scope the run to one or more specific records. Accepts a UUID, a GLID (e.g. 'GL-CO-00042'), or a comma/space/newline-separated list of either. Single ID → runs on that one record; multiple → resolves |
| filters | object | Scope the run to records matching a filter expression. Same shape as POST /api/v1/leads/browse: [{field, op, value}]. Discover available fields and operators via GET /api/v1/schema/attributes. Mutuall |
| manifest_id | object | Run the pipeline on the exact entity set of a previous run (UUID of a `run_manifest`). The natural recovery gesture after a failed or partial run: get the manifest id from GET /jobs/{id}/results and r |
| start_date | object | YYYY-MM-DD. For the PULL stage, the earliest filing date to fetch from the Secretary of State. |
| end_date | object | YYYY-MM-DD. For the PULL stage, the latest filing date to fetch from the Secretary of State. |
| input_file | object | Source file for the PULL stage, for states whose feed is a portal download rather than an API (currently TX). Use the reference returned by POST /api/v1/pipeline/upload-bulk-file (an s3:// URI in prod |
| pull_mode | object | Alternate pull mode for harvest sweeps (trade_names, sole_props). trade_names stamps DBA attributes on existing entities (update-only, stages pull,reload only); sole_props mints the sole-proprietor in |
| gapfill_force | boolean | Gap-fill re-dips EVERY scoped record regardless of existing channels or prior Enformion delivery — a deliberate paid re-spend for vendor-quality evaluation. Requires the run to include the `gapfill` s |
| include_non_operating | boolean | Only meaningful with `filters`. Browse hides non-operating entities (`enrichment_strategy = 'hold'` — shell LLCs, single-asset holdings) by default, so a filter set copied out of Browse resolves here |
| include_existing | boolean | Only meaningful with `filters`. Browse holds Just started only — a brand-new business — and hides every existing business with a new filing (opening a location here, formed in another state, back in b |
| include_registrations | boolean | Deprecated alias of include_existing (kept one release so saved requests resolve). |
| force_recompute | boolean | Only meaningful with `filters` scoping more than one record — `entity_id` and a single-match `filters` already always recompute (an operator who names records wants them re-answered). Bulk `filters` r |
| days_back | object | For the PULL stage: rolling window of N calendar days ago through today (the flag the sweep schedules use). Mutually exclusive with `start_date`/`end_date`. |
| queue_if_busy | boolean | When this state already has a run in progress, wait in line behind it instead of being refused (409). The run is accepted (status 'queued') and starts when the state's other run finishes and a worker |
| options | object | Per-run switches, flipped on THIS task only (a canary never needs a redeploy): `events_apply` — The events stage projects status / name / prior-entity onto records (ADR-061). On by default; false runs |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/goodleads-club/json-schema/goodleads-club-trigger-request-schema.json",
"title": "TriggerRequest",
"description": "Submit a pipeline run, optionally scoped to one record, a set of records,\na batch, or a filter expression. See `GET /api/v1/schema/attributes` for the\nfull list of fields that can appear in `filters`.",
"x-generated": "2026-11-10",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/goodleads-club-openapi.json#/components/schemas/TriggerRequest",
"properties": {
"state": {
"type": "string",
"title": "State",
"description": "Two-letter US state code (e.g. 'CO', 'FL', 'VA', 'NY'). Must be a live state."
},
"stages": {
"anyOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
}
],
"title": "Stages",
"description": "Pipeline stages to run. Either 'all', a single stage name, a comma-separated list, or an array. Shortcut: 'enrich' = skip_trace + gapfill + validate. See GET /api/v1/pipeline/stages for the canonical stage order.",
"default": "all"
},
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Limit",
"description": "Cap the number of records this run touches. Applied at scope-resolution time, so all stages operate on the same set."
},
"batch_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Batch Id",
"description": "Run the pipeline on every entity in this batch (UUID). Mutually exclusive with `entity_id` and `filters`."
},
"entity_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Entity Id",
"description": "Scope the run to one or more specific records. Accepts a UUID, a GLID (e.g. 'GL-CO-00042'), or a comma/space/newline-separated list of either. Single ID → runs on that one record; multiple → resolves all, stamps a Batch, runs the pipeline scoped to that Batch. Mutually exclusive with `batch_id` and `filters`."
},
"filters": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Filters",
"description": "Scope the run to records matching a filter expression. Same shape as POST /api/v1/leads/browse: [{field, op, value}]. Discover available fields and operators via GET /api/v1/schema/attributes. Mutually exclusive with `batch_id` and `entity_id`."
},
"manifest_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Manifest Id",
"description": "Run the pipeline on the exact entity set of a previous run (UUID of a `run_manifest`). The natural recovery gesture after a failed or partial run: get the manifest id from GET /jobs/{id}/results and re-run any stages on precisely those entities. Mutually exclusive with `batch_id`, `entity_id`, and `filters`."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Date",
"description": "YYYY-MM-DD. For the PULL stage, the earliest filing date to fetch from the Secretary of State."
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Date",
"description": "YYYY-MM-DD. For the PULL stage, the latest filing date to fetch from the Secretary of State."
},
"input_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Input File",
"description": "Source file for the PULL stage, for states whose feed is a portal download rather than an API (currently TX). Use the reference returned by POST /api/v1/pipeline/upload-bulk-file (an s3:// URI in production). Only valid when the run includes the `pull` stage."
},
"pull_mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Pull Mode",
"description": "Alternate pull mode for harvest sweeps (trade_names, sole_props). trade_names stamps DBA attributes on existing entities (update-only, stages pull,reload only); sole_props mints the sole-proprietor inventory class (create-mode load + free brains); fact_backfill (FL) fills missing filing facts — the federal tax ID — on existing entities without moving batch, pulled date, name, status or filing event (stages pull,reload); late_names (OR) loads owner names the state publishes after the entity (the monthly list) onto existing entities, update-only, then re-runs the free contact stages. Paid stages are always refused for harvest modes. Only valid for states with the mode's feed configured."
},
"gapfill_force": {
"type": "boolean",
"title": "Gapfill Force",
"description": "Gap-fill re-dips EVERY scoped record regardless of existing channels or prior Enformion delivery — a deliberate paid re-spend for vendor-quality evaluation. Requires the run to include the `gapfill` stage AND an explicit scope (`entity_id`, `batch_id`, `manifest_id`, or `filters`); refused on an unscoped whole-state run. Filer exclusion and 'hold' routing still apply.",
"default": false
},
"include_non_operating": {
"type": "boolean",
"title": "Include Non Operating",
"description": "Only meaningful with `filters`. Browse hides non-operating entities (`enrichment_strategy = 'hold'` — shell LLCs, single-asset holdings) by default, so a filter set copied out of Browse resolves here the same way and the manifest matches the count the operator saw. Set true to include them, exactly as the Browse toggle does. An explicit `enrichment_strategy` or `lead_ref` filter bypasses the default either way.",
"default": false
},
"include_existing": {
"type": "boolean",
"title": "Include Existing",
"description": "Only meaningful with `filters`. Browse holds Just started only — a brand-new business — and hides every existing business with a new filing (opening a location here, formed in another state, back in business, a new entity, moved, a new trade name), so a filter set copied out of Browse resolves here the same way. Set true to include them, exactly as the Browse checkbox does. An explicit `filing_kind`, `business_origin` or `lead_ref` filter bypasses the default either way.",
"default": false
},
"include_registrations": {
"type": "boolean",
"title": "Include Registrations",
"description": "Deprecated alias of include_existing (kept one release so saved requests resolve).",
"default": false,
"deprecated": true
},
"force_recompute": {
"type": "boolean",
"title": "Force Recompute",
"description": "Only meaningful with `filters` scoping more than one record — `entity_id` and a single-match `filters` already always recompute (an operator who names records wants them re-answered). Bulk `filters` runs default to skip-if-current as the whole-sweep cost guard; set this to override that guard and force every SELECTED free stage to recompute even if its version is already current. Paid/metered stages (skip_trace, gapfill, validate) are exempt regardless — they own their own spend gates. The unblock for a backlog that was filter-scoped-processed under a stale ruleset and needs to re-run against today's classify rules without pasting thousands of individual entity_id values.",
"default": false
},
"days_back": {
"anyOf": [
{
"type": "integer",
"minimum": 1.0
},
{
"type": "null"
}
],
"title": "Days Back",
"description": "For the PULL stage: rolling window of N calendar days ago through today (the flag the sweep schedules use). Mutually exclusive with `start_date`/`end_date`."
},
"queue_if_busy": {
"type": "boolean",
"title": "Queue If Busy",
"description": "When this state already has a run in progress, wait in line behind it instead of being refused (409). The run is accepted (status 'queued') and starts when the state's other run finishes and a worker is free — visible and cancellable the whole time. Off by default: a person pressing Run usually wants to know the state is busy. Scheduled callers that must not lose the day (the delivery look-up) set it (ADR-102).",
"default": false
},
"options": {
"anyOf": [
{
"additionalProperties": {
"type": "boolean"
},
"type": "object"
},
{
"type": "null"
}
],
"title": "Options",
"description": "Per-run switches, flipped on THIS task only (a canary never needs a redeploy): `events_apply` — The events stage projects status / name / prior-entity onto records (ADR-061). On by default; false runs it dark. `linkage_stamp` — The family stage writes clusters into the container (ADR-060). On by default; false runs it dark. `founder_history_stamp` — The family stage also answers 'has this owner run a company before' against the state's whole book and stamps it on the record (Entrepreneur Layer, dark: no customer surface shows it). OFF by default until a production canary measures its runtime (it reads the whole state book); true runs it for one run. `hard_slice_stamp` — After routing, also store, per filing, the answer to 'does the filing itself tell us who decides?' with its reasons (the hard slice; dark: nothing reads it and no customer surface shows it). OFF by default; true runs it for one run. `owner_graph_write` — After routing, also run the three owner-graph stores for the run's WHOLE state, in order: agents and places with the Intermediary score, same person, then Decision Maker relationships (dark: nothing reads them and no customer surface shows them; free). A store that fails is reported and never fails the run. OFF by default; true runs it for one run. Booleans only. An unknown key is refused (422); a switch whose stage is not in the run is refused (400). Carried as the task's environment, so the run still goes through this endpoint and its manifest — never a raw task launch."
}
},
"additionalProperties": false,
"type": "object",
"required": [
"state"
]
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/goodleads-club-trigger-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.