{"openapi":"3.1.0","info":{"title":"V1 Client APIs","version":"0.1.0"},"paths":{"/api/v1/agent/sign-up":{"post":{"tags":["Agent Auth"],"summary":"Agent Sign Up","description":"Sign up as a new user or sign back in to retrieve your API key.\n\nSends a 6-digit verification code to the provided email address.\nAfter receiving the code, call the verify endpoint to complete\nauthentication and receive your API key.\n\n- **New users**: creates your account. API key is issued after verification.\n- **Existing users**: use this to recover your API key if lost. Verify with\n  the OTP to get your existing key back.","operationId":"agent_sign_up_api_v1_agent_sign_up_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSignUpRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSignUpResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/agent/verify":{"post":{"tags":["Agent Auth"],"summary":"Agent Verify","description":"Verify your email with the 6-digit code sent during sign-up.\n\nOn success, returns your API key:\n\n- **New users**: a freshly generated API key for your account.\n- **Existing users**: your existing API key is returned (use this to\n  recover a lost key).\n\nThe verification code expires after 24 hours. You have up to 10\nattempts per code. If you exhaust all attempts, call sign-up again\nto receive a new code.","operationId":"agent_verify_api_v1_agent_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentVerifyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account/get-account-list":{"post":{"tags":["Account"],"summary":"List Accounts","description":"List accounts with optional filters and pagination.\n\n**Request Body (optional):**\n- **filters**: Filter accounts by CRM status, employee count, funding stage, etc.\n- **pagination**: Control page size (limit) and offset for pagination.\n  - limit: 1-500, default 50\n  - offset: default 0","operationId":"list_accounts_api_v1_account_get_account_list_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountListRequest","default":{"pagination":{"limit":50,"offset":0}}},"examples":{"with_pagination":{"summary":"With pagination","value":{"pagination":{"limit":50,"offset":0}}},"with_filters":{"summary":"With filters and pagination","value":{"filters":{"is_present_in_crm":false,"min_employee_count":50,"max_employee_count":500},"pagination":{"limit":100,"offset":0}}},"by_audience":{"summary":"Filter by audience","value":{"filters":{"include_audience_ids":[1,2]},"pagination":{"limit":50,"offset":0}}},"by_signal":{"summary":"Filter by signal","value":{"filters":{"include_signal_ids":[10,20]},"pagination":{"limit":50,"offset":0}}},"by_funding_and_location":{"summary":"Funding stage and location","value":{"filters":{"funding_stages":["Series A","Series B"],"hq_country_codes":["US","GB"]},"pagination":{"limit":50,"offset":0}}},"imported_not_in_crm":{"summary":"Imported but not in CRM","value":{"filters":{"is_imported":true,"is_present_in_crm":false}}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account/search-by-name-or-domain":{"get":{"tags":["Account"],"summary":"Search Accounts By Name Or Domain","description":"Search accounts by name or domain with fuzzy matching.","operationId":"search_accounts_by_name_or_domain_get_api_v1_account_search_by_name_or_domain_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"Search query to match against account name or domain","examples":["stripe","notion.so","databricks","datadoghq.com"],"title":"Query"},"description":"Search query to match against account name or domain"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Maximum number of results to return (1-50)","default":10,"title":"Limit"},"description":"Maximum number of results to return (1-50)"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchAccountsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account/search-by-traits":{"get":{"tags":["Account"],"summary":"Instant search on traits","description":"Search for companies by describing their traits or characteristics.\n\nUse natural language to find companies matching specific criteria like:\n- **Industry**: \"healthcare companies\", \"fintech startups\"\n- **Products**: \"companies with voice AI products\", \"payment processing platforms\"\n- **Business model**: \"B2B SaaS companies\", \"companies that sell to restaurants\"\n- **Technology**: \"companies using Kubernetes\", \"AI-first startups\"\n\nReturns companies ranked by relevance with similarity scores.","operationId":"search_by_traits_get_api_v1_account_search_by_traits_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":500,"description":"Describe the type of companies you're looking for","examples":["healthcare companies with voice AI products","fintech startups with payment processing","B2B SaaS companies in cybersecurity","companies that sell to restaurants"],"title":"Query"},"description":"Describe the type of companies you're looking for"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of results to return (1-100)","default":25,"title":"Limit"},"description":"Maximum number of results to return (1-100)"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraitSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account/firmographic-options":{"get":{"tags":["Account"],"summary":"List acceptable firmographic filter values for lookalike search","description":"Discovery endpoint for the firmographic filters accepted by the lookalike\nsearch endpoints — `GET /api/v1/account/search-lookalikes` (sync) and\n`POST /api/v1/account/search-lookalikes-bulk` (async):\n\n- **min_employees / max_employees** — inclusive integer bounds (>= 0, no upper limit).\n- **funding_stages** — the exact stage labels accepted; input is matched\n  case-insensitively and canonicalized to these.\n- **locations** — supported HQ-country filters as `{code, name}`; pass the\n  ISO 3166-1 alpha-3 `code` (e.g. `USA`, `GBR`) in `locations`.\n\nStatic and fast — mirrors `GET /api/v2/tech/country-options`. Use it to populate\nfilter pickers or to validate input before calling search.","operationId":"get_firmographic_options_api_v1_account_firmographic_options_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirmographicOptionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account/search-lookalikes":{"get":{"tags":["Account"],"summary":"Search Lookalikes","description":"Free, fast company search for finding lookalike accounts.","operationId":"search_lookalikes_get_api_v1_account_search_lookalikes_get","parameters":[{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"Describe the kinds of companies you want to find. Required unless `seed_domains` is provided. When both are supplied, the query is used as a must-have angle when synthesizing a trait from the seeds.","title":"Query"},"description":"Describe the kinds of companies you want to find. Required unless `seed_domains` is provided. When both are supplied, the query is used as a must-have angle when synthesizing a trait from the seeds."},{"name":"seed_domains","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Up to 10 seed company websites. When provided, OpenFunnel resolves them against the companies index, pulls their descriptions, and uses an LLM to synthesize the trait query for you. Repeat the query param to pass multiple values.","title":"Seed Domains"},"description":"Up to 10 seed company websites. When provided, OpenFunnel resolves them against the companies index, pulls their descriptions, and uses an LLM to synthesize the trait query for you. Repeat the query param to pass multiple values."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of companies to return (1-100)","default":10,"title":"Limit"},"description":"Maximum number of companies to return (1-100)"},{"name":"min_employees","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Minimum employee count (inclusive)","title":"Min Employees"},"description":"Minimum employee count (inclusive)"},{"name":"max_employees","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Maximum employee count (inclusive)","title":"Max Employees"},"description":"Maximum employee count (inclusive)"},{"name":"funding_stages","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Funding stages to include. Repeat the query param to pass multiple values.","title":"Funding Stages"},"description":"Funding stages to include. Repeat the query param to pass multiple values."},{"name":"locations","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Headquarters country filters using supported lowercase country codes. Repeat the query param to pass multiple values.","title":"Locations"},"description":"Headquarters country filters using supported lowercase country codes. Repeat the query param to pass multiple values."},{"name":"search_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Retrieval strategy. `semantic` (default) uses vector search + LLM rerank. `agentic` uses an LLM-generated OpenSearch query against the companies index plus an LLM batch precision check.","default":"semantic","title":"Search Type"},"description":"Retrieval strategy. `semantic` (default) uses vector search + LLM rerank. `agentic` uses an LLM-generated OpenSearch query against the companies index plus an LLM batch precision check."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstantTraitSearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account/search-lookalikes-bulk":{"post":{"tags":["Account"],"summary":"Bulk Search Lookalikes (async)","description":"Start an async bulk lookalike search (up to 10000 companies).\n\nReturns a ``job_id`` immediately. Poll\n``GET /api/v1/account/search-lookalikes-bulk/{job_id}`` for status and to\npage through results. Cancel a running job with\n``POST /api/v1/account/search-lookalikes-bulk/{job_id}/cancel``. Credits are\npre-checked against the requested ``limit`` here, then charged on the actual\nreturned count when the job completes (or the delivered count if cancelled).","operationId":"search_lookalikes_bulk_submit_api_v1_account_search_lookalikes_bulk_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkLookalikeSearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkLookalikeSubmitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account/search-lookalikes-bulk/{job_id}":{"get":{"tags":["Account"],"summary":"Poll Bulk Lookalike Job (status + results)","description":"Combined status + results for a bulk lookalike job.\n\nReturns the job status, manifest, live progress (``processed`` +\n``progress_message``), and one page of results in a single call. Check\n``status`` for a terminal state (``completed``/``failed``/``cancelled``) — NOT\n``next_cursor == null``, since a still-``running``/``cancelling`` job can have a\nnull ``next_cursor`` simply because later pages haven't been written yet. A\n``cancelling`` status is transient (a cancel was requested); the job settles to\n``cancelled`` with a ``partial`` manifest of the pages already delivered.","operationId":"search_lookalikes_bulk_status_api_v1_account_search_lookalikes_bulk__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Page name to read, e.g. page_0003. Omit for the first page.","title":"Cursor"},"description":"Page name to read, e.g. page_0003. Omit for the first page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Accepted for forward-compat; ignored in v1 (page size is fixed at write time).","default":100,"title":"Limit"},"description":"Accepted for forward-compat; ignored in v1 (page size is fixed at write time)."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkLookalikeJobResponse"}}}},"404":{"description":"Job not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account/search-lookalikes-bulk/{job_id}/cancel":{"post":{"tags":["Account"],"summary":"Cancel Bulk Lookalike Job","description":"Request cancellation of a running/pending bulk lookalike job.\n\nFlips the job to a transient ``cancelling`` state; the worker stops at its next\nbatch boundary, flushes whatever pages it has written, charges ONLY the\ndelivered count (no credits for the abandoned remainder), and finalizes as\n``cancelled``. Already-terminal jobs (``completed``/``failed``/``cancelled``)\nreturn 409. Poll ``GET /api/v1/account/search-lookalikes-bulk/{job_id}`` for the\nfinal state and the partial results.","operationId":"search_lookalikes_bulk_cancel_api_v1_account_search_lookalikes_bulk__job_id__cancel_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkLookalikeCancelResponse"}}}},"404":{"description":"Job not found"},"409":{"description":"Job already finished"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account/lookup-companies":{"post":{"tags":["Account"],"summary":"Look up companies by name, domain, and/or LinkedIn","description":"Resolve up to 100 companies against the OpenFunnel companies OpenSearch index.\n\nEach item may carry any subset of ``name`` / ``domain`` / ``linkedin_url``:\n- **domain** and **linkedin_url** are exact matches and return ALL companies that share\n  that identifier (e.g. a parent and a satellite page). Domain matches any of the company's\n  domains (primary or secondary).\n- **name** is a fuzzy, ranked full-text search over the company name fields; returns up to 10\n  candidates with relevance scores.\n\nMatches within an item are deduped by ``company_id`` (precedence: linkedin > domain > name).\nA returned ``company_id`` can be passed straight back into ``/search-lookalikes`` as a seed.\nNo credits are charged.","operationId":"lookup_companies_endpoint_api_v1_account_lookup_companies_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyLookupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyLookupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/account/batch":{"post":{"tags":["Account V2"],"summary":"Get Accounts V2","operationId":"get_accounts_v2_api_v2_account_batch_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountBulkV2Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountV2BulkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/account/filters":{"get":{"tags":["Account V2"],"summary":"Get Account Filters","operationId":"get_account_filters_api_v2_account_filters_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountFiltersV2Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/account/filtered-accounts":{"post":{"tags":["Account V2"],"summary":"List Account Ids","description":"List account IDs matching either inline `filters` or a saved view.\n\nProvide ONE of:\n- `filters` (V2 field names, see GET /api/v2/account/filters), or\n- `view_id` — the saved view's stored filters are applied instead.\n\n`page`, `page_size`, `sort_key`, and `sort_direction` apply in both modes.\nReturns 404/403 when `view_id` does not exist / belongs to another user,\nand 422 when both `filters` and `view_id` are provided.","operationId":"list_account_ids_api_v2_account_filtered_accounts_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountListV2Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountListV2Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/signal":{"get":{"tags":["Signal"],"summary":"Get Signal Get","description":"Get signal details by ID with optional date filtering.","operationId":"get_signal_get_api_v1_signal_get","parameters":[{"name":"signal_id","in":"query","required":true,"schema":{"type":"integer","description":"Signal ID to get details for","title":"Signal Id"},"description":"Signal ID to get details for"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date from to filter signals by (Inclusive). Format: YYYY-MM-DD","title":"Date From"},"description":"Date from to filter signals by (Inclusive). Format: YYYY-MM-DD"},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date to to filter signals by (Non-Inclusive). Format: YYYY-MM-DD","title":"Date To"},"description":"Date to to filter signals by (Non-Inclusive). Format: YYYY-MM-DD"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Signal"],"summary":"Update Signal Endpoint","description":"Edit a signal's settings. Omitted fields are left unchanged.\n\nEditable fields:\n- `signal_name` — min 3 characters, unique within the workspace (400 otherwise)\n- `enable_run_daily` — toggles daily recurring runs\n- `max_credit_limit` — per-run credit budget; explicit `null` removes the limit\n- `enable_safe_crm_sync` — safe CRM sync toggle\n- `auto_enrich_people_emails` — auto email enrichment toggle\n- `enable_advanced_people_finder` — advanced LLM-based people finder toggle (charges credits)\n\nAuthorization mirrors the delete endpoint: the signal owner may edit;\nin TEAM mode the domain superadmin may also edit team members' signals\n(403 otherwise). Returns the updated signal.","operationId":"update_signal_endpoint_api_v1_signal_patch","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSignalRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Signal"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Signal"],"summary":"Delete Signals","description":"Delete one or more signals.\n\nDeletion is queued in the background per signal: the signal is paused and\nunlinked from the user, its discovered signals are detached, and accounts\nleft with no other linked signals are unlinked (imported accounts are kept).\n\nAuthorization mirrors the internal delete: the signal owner may delete;\nin TEAM mode the domain superadmin may also delete team members' signals.\n\nAlways returns 200 — partial batches don't fail wholesale. Each signal\nthat could not be deleted gets a structured entry in `errors` with an\n`error_code` (`SIGNAL_NOT_FOUND`, `NOT_RESOURCE_OWNER`) and message.\n`status` is `accepted` (all queued), `partial` (some queued, some failed),\nor `failed` (nothing queued).","operationId":"delete_signals_api_v1_signal_delete","parameters":[{"name":"signal_ids","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer"},"description":"Signal IDs to delete. Repeat the param for multiple IDs, e.g. ?signal_ids=1&signal_ids=2","title":"Signal Ids"},"description":"Signal IDs to delete. Repeat the param for multiple IDs, e.g. ?signal_ids=1&signal_ids=2"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteSignalsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/signal/get-signal-list":{"post":{"tags":["Signal"],"summary":"List Signals","operationId":"list_signals_api_v1_signal_get_signal_list_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GetSignalListRequest"},{"type":"null"}],"title":"Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSignalListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audience":{"get":{"tags":["Audience"],"summary":"Get Audience Get","description":"Get audience details by ID.","operationId":"get_audience_get_api_v1_audience_get","parameters":[{"name":"audience_id","in":"query","required":true,"schema":{"type":"integer","description":"Audience ID to get details for","title":"Audience Id"},"description":"Audience ID to get details for"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAudienceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audience/create-account-audience":{"post":{"tags":["Audience"],"summary":"Create Account Audience Endpoint","operationId":"create_account_audience_endpoint_api_v1_audience_create_account_audience_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountAudienceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountAudienceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audience/get-audience-list":{"get":{"tags":["Audience"],"summary":"List Audiences Get","description":"List audiences with optional pagination.","operationId":"list_audiences_get_api_v1_audience_get_audience_list_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Maximum number of items to return per page (1-500)","default":50,"title":"Limit"},"description":"Maximum number of items to return per page (1-500)"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of items to skip before starting to return results","default":0,"title":"Offset"},"description":"Number of items to skip before starting to return results"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAudienceListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account/{account_id}/timeline":{"get":{"tags":["Account Timeline"],"summary":"Get Timeline","description":"Get chronological activity timeline for an account.\n\nReturns events from account_timeline_insights table within the specified time range.\n\nArgs:\n    account_id: The account ID to get timeline for\n    days: How many days back to look (default 30, max 365)\n    alert_types: Optional comma-separated filter ('openfunnel', 'crm')\n    limit: Maximum events per page (default 50, max 500)\n    offset: Number of events to skip for pagination\n    user_id: Authenticated user ID (from API key)\n\nReturns:\n    TimelineResponse with events and pagination metadata","operationId":"get_timeline_api_v1_account__account_id__timeline_get","parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Number of days back to look","default":30,"title":"Days"},"description":"Number of days back to look"},{"name":"alert_types","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated alert types to filter (e.g., 'openfunnel,crm')","title":"Alert Types"},"description":"Comma-separated alert types to filter (e.g., 'openfunnel,crm')"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Maximum events per page","default":50,"title":"Limit"},"description":"Maximum events per page"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of events to skip","default":0,"title":"Offset"},"description":"Number of events to skip"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimelineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/insights/alerts":{"get":{"tags":["Alerts"],"summary":"My Alerts","description":"Get alerts (notifications) sent to the authenticated user.\n\nReturns notification history with the actual insights from each alert.\nAlways scoped to the individual user who set up the saved view.\nUse `view_ids` to narrow the history to specific views — e.g. the latest\ninsights a single Live View has alerted on.","operationId":"my_alerts_api_v1_insights_alerts_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"description":"Number of days back to look","default":1,"title":"Days"},"description":"Number of days back to look"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum alerts per page","default":20,"title":"Limit"},"description":"Maximum alerts per page"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of alerts to skip","default":0,"title":"Offset"},"description":"Number of alerts to skip"},{"name":"view_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Only return alerts from these saved views (IDs from GET /api/v1/views). Repeat the parameter (?view_ids=a&view_ids=b) or pass a comma-separated list.","title":"View Ids"},"description":"Only return alerts from these saved views (IDs from GET /api/v1/views). Repeat the parameter (?view_ids=a&view_ids=b) or pass a comma-separated list."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyAlertsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/views":{"get":{"tags":["Views"],"summary":"My Saved Views","description":"Get saved views owned by the authenticated user.\n\nReturns both account and people views by default; pass `view_type` to narrow.","operationId":"my_saved_views_api_v1_views_get","parameters":[{"name":"view_type","in":"query","required":false,"schema":{"anyOf":[{"enum":["accounts","people"],"type":"string"},{"type":"null"}],"description":"Optionally filter to a single view type: 'accounts' (company-filter views) or 'people' (individual-filter, Amplemarket-only views). Omit to return both. Account-view filters come back in the V2 shape; people-view filters come back verbatim in the People-filter shape.","title":"View Type"},"description":"Optionally filter to a single view type: 'accounts' (company-filter views) or 'people' (individual-filter, Amplemarket-only views). Omit to return both. Account-view filters come back in the V2 shape; people-view filters come back verbatim in the People-filter shape."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MySavedViewsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Views"],"summary":"Create View Endpoint","description":"Create a saved view (Live View).\n\n**view_type** selects what the view filters and which actions it allows:\n\n- `\"accounts\"` (default): filters companies. Supports **slack_notifications**,\n  **webhook_notifications**, **crm_assignment**. Amplemarket is rejected (400).\n  `filters` use the field names from `GET /api/v2/account/filters`.\n- `\"people\"`: filters individuals and supports **only amplemarket_sequencing**\n  (enabling Slack / webhook / CRM returns 400). `filters` use the People filter\n  fields from `GET /api/v1/people/filters` (e.g. `seniority_include`,\n  `department_include`, `acct_industry_include`); preview who matches with\n  `POST /api/v1/people/filtered-people`. **Immutable after creation.** When created\n  with an Amplemarket sequence, OpenFunnel adds everyone who currently matches to\n  the sequence and enriches any missing work emails (this uses credits, paced\n  within your monthly allowance).\n\nAccount-view actions:\n- **slack_notifications**: notify via DM or in a Slack channel\n  (`target: \"channel\"` requires `channel_id` from `GET /views/options`).\n- **webhook_notifications**: POST insight alerts to an HTTPS URL. The\n  response includes `webhook_secret` (HMAC signing secret) **once**, so\n  store it securely.\n- **crm_assignment**: sync matched accounts to the connected CRM and\n  assign them to a single user (`mode: \"single\"` + `assignee_id`) or\n  round-robin across users (`mode: \"round_robin\"` + `assignee_ids`).\n  `override_owner_ids` lists owners whose accounts may be reassigned;\n  accounts owned by anyone else keep their owner. The CRM type is\n  detected automatically. When enabled, a one-time background sync of\n  currently-matching accounts is started immediately.\n- **amplemarket_sequencing** (people views only): auto-add new matching\n  people to an Amplemarket sequence (`sequence_id` from `GET /views/options`).\n- **is_default**: make this the default view (clears the previous default of\n  the same view_type).\n\nErrors: 400 for invalid/unconnected integrations or an action that doesn't\nmatch the view_type (with an actionable message), 409 if a view with the same\nname already exists.","operationId":"create_view_endpoint_api_v1_views_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateViewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/views/{saved_view_id}/people/export.csv":{"get":{"tags":["Views"],"summary":"Saved View People Export","description":"Export people from accounts represented in alerts for a saved view.","operationId":"saved_view_people_export_api_v1_views__saved_view_id__people_export_csv_get","parameters":[{"name":"saved_view_id","in":"path","required":true,"schema":{"type":"string","title":"Saved View Id"}},{"name":"days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Only include alerts created in the last N days","title":"Days"},"description":"Only include alerts created in the last N days"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/views/{saved_view_id}/accounts/export.csv":{"get":{"tags":["Views"],"summary":"Saved View Accounts Export","description":"Export accounts from a saved view as CSV.","operationId":"saved_view_accounts_export_api_v1_views__saved_view_id__accounts_export_csv_get","parameters":[{"name":"saved_view_id","in":"path","required":true,"schema":{"type":"string","title":"Saved View Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/views/{saved_view_id}/alerts":{"get":{"tags":["Views"],"summary":"Saved View Alerts","description":"Get paginated alerts for a saved view owned by the authenticated user.","operationId":"saved_view_alerts_api_v1_views__saved_view_id__alerts_get","parameters":[{"name":"saved_view_id","in":"path","required":true,"schema":{"type":"string","title":"Saved View Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum alerts per page","default":20,"title":"Limit"},"description":"Maximum alerts per page"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of alerts to skip","default":0,"title":"Offset"},"description":"Number of alerts to skip"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedViewAlertsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/views/options":{"get":{"tags":["Views"],"summary":"View Options","description":"Get everything needed to build a view's notification / assignment config\nin a single call:\n\n- **slack**: whether Slack is connected and the channels the OpenFunnel\n  bot can post to (use a channel `id` as `slack_notifications.channel_id`).\n- **crm**: the connected CRM (`salesforce` or `hubspot`) and its users\n  (use a user `id` for `crm_assignment.assignee_id` / `assignee_ids` /\n  `override_owner_ids`).\n- **amplemarket**: whether Amplemarket is connected and the active\n  sequences (use a sequence `id` as `amplemarket_sequencing.sequence_id`).\n\nEach section is independent: a disconnected integration is returned as\n`connected: false` with an empty list rather than failing the request.","operationId":"view_options_api_v1_views_options_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewOptionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/views/{view_id}":{"get":{"tags":["Views"],"summary":"Get View Endpoint","description":"Get a single saved view by ID, including its `view_type`, filters and full\naction config (Slack / webhook / CRM assignment / Amplemarket). Account-view\nfilters are returned with the `GET /api/v2/account/filters` field names;\npeople-view filters with the `GET /api/v1/people/filters` field names. The\nwebhook signing secret is never\nreturned here; it is only surfaced once, when the webhook is configured or\nits URL changes.\n\nReturns 404 if the view does not exist and 403 if it belongs to another\nuser.","operationId":"get_view_endpoint_api_v1_views__view_id__get","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"string","title":"View Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Views"],"summary":"Update View Endpoint","description":"Partially update a saved view. Only fields present in the request are\nmodified; omitted fields keep their current value. `view_type` cannot be\nchanged; requested actions are validated against the view's existing type\n(people views still accept only Amplemarket; account views still reject it).\n\nNotes:\n- Sending a config object with `enabled: false` turns that action off\n  (e.g. `{\"webhook_notifications\": {\"enabled\": false}}` removes the\n  webhook); omitting the object leaves it unchanged.\n- `filters` must match the view's type (the `GET /api/v2/account/filters` fields\n  for account views, the `GET /api/v1/people/filters` fields for people views)\n  and replaces them entirely.\n- Changing the webhook URL rotates the signing secret; the new\n  `webhook_secret` is returned once in the response.\n- Enabling CRM assignment (or changing `filters` while it is enabled)\n  starts a one-time background sync of currently-matching accounts. For a\n  people view, enabling Amplemarket (or changing `filters` while it is\n  enabled) likewise kicks off a one-time enrich+sequence of currently-matching\n  people (credit-spending; idempotent, only net-new matches are added).\n\nErrors: 400 for invalid config or an action that doesn't match the view_type,\n404/403 for missing/foreign views, 409 on a view name conflict.","operationId":"update_view_endpoint_api_v1_views__view_id__patch","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"string","title":"View Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateViewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Views"],"summary":"Delete View Endpoint","description":"Delete a saved view and all of its notification logs.\n\nReturns 404 if the view does not exist and 403 if it belongs to another\nuser. This action cannot be undone.","operationId":"delete_view_endpoint_api_v1_views__view_id__delete","parameters":[{"name":"view_id","in":"path","required":true,"schema":{"type":"string","title":"View Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteViewV1Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/icp/options":{"get":{"tags":["ICP"],"summary":"Get ICP options","description":"Return all valid option values for creating an ICP.\n\nCall this endpoint first to discover the allowed values for each field\nbefore calling `/api/v1/icp/create`.\n\n**Response fields:**\n\n- **employee_ranges**: Valid company size range labels (e.g. \"1-10\", \"11-50\").\n  Pass one or more of these in `employee_ranges` when creating an ICP.\n- **funding_stages**: Valid funding stage names (e.g. \"Seed\", \"Series A\").\n  Use these for `min_funding` and `max_funding` when creating an ICP.\n- **locations**: Valid company HQ country/region options with `value` (code) and\n  `label` (display name). Use the `value` field for `location` when creating an ICP.\n- **sub_locations**: Valid US state and city options with `value` (code) and\n  `label` (display name). Use the `value` field for `sub_locations` when creating an ICP.\n  Only applicable when `location` is exclusively `[\"us\"]`.\n- **people_locations**: Valid country/region options for targeting people by geography.\n  Use the `value` field for `people_locations` when creating an ICP.\n- **people_sub_locations**: Valid US state and city options for targeting people by\n  sub-region. Use the `value` field for `people_sub_locations` when creating an ICP.\n  Only applicable when `people_locations` is exclusively `[\"us\"]`.","operationId":"get_icp_options_api_v1_icp_options_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ICPOptionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/icp/list":{"get":{"tags":["ICP"],"summary":"List ICPs","description":"List all ICP profiles for the authenticated user.","operationId":"list_icps_api_v1_icp_list_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListICPsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/icp/create":{"post":{"tags":["ICP"],"summary":"Create ICP","description":"Create a new Ideal Customer Profile (ICP).\n\nAn ICP defines the target company and people segments for signal discovery.\n\n**Before calling this endpoint**, call `GET /api/v1/icp/options` to retrieve\nall valid values for employee_ranges, funding stages, locations, and sub_locations.\n\n**Required fields:**\n\n- **name**: A descriptive name for the ICP (e.g., \"Mid-market SaaS companies in US\").\n- **target_roles**: List of job titles or role descriptions to target.\n  Examples: [\"Head of Engineering\", \"VP of Product\", \"Senior Leaders in Engineering & Product\"].\n- **employee_ranges**: Company size filters. Provide one or more range labels from\n  the `employee_ranges` list returned by `/api/v1/icp/options`.\n  Multiple ranges are collapsed to an overall min/max employee count internally.\n- **location**: List of company HQ location codes. Use the `value` field from the\n  `locations` list returned by `/api/v1/icp/options` (e.g., [\"us\", \"uk\", \"ca\"]).\n\n**Optional fields:**\n\n- **min_funding** / **max_funding**: Funding stage range. Both must be provided together.\n  Use values from the `funding_stages` list returned by `/api/v1/icp/options`.\n- **employee_count_funding_config**: How to combine employee count and funding criteria.\n  Only valid when funding is set. Values: `\"AND\"` (company must match both employee count\n  AND funding stage) or `\"OR\"` (company must match either). Omit or set to null if no\n  combination logic is needed.\n- **sub_locations**: US state or city codes. Use the `value` field from the\n  `sub_locations` list returned by `/api/v1/icp/options`\n  (e.g., [\"ca\", \"san-francisco-ca\", \"ny\"]).\n  **Only applicable when `location` is exclusively `[\"us\"]`.**\n- **people_locations**: Geographic filter for target people. Use the `value` field from\n  the `people_locations` list returned by `/api/v1/icp/options` (e.g., [\"us\", \"ca\"]).\n- **people_sub_locations**: Sub-region codes for people locations. Use the `value` field\n  from the `people_sub_locations` list returned by `/api/v1/icp/options`\n  (e.g., [\"san-francisco-ca\", \"austin-tx\"]).\n  **Only applicable when `people_locations` is exclusively `[\"us\"]`.**","operationId":"create_icp_api_v1_icp_create_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateICPRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateICPResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/icp/update":{"patch":{"tags":["ICP"],"summary":"Update ICP","description":"Update an existing Ideal Customer Profile (ICP).\n\nOnly the fields included in the request body will be modified — all other\nfields remain unchanged. The `id` field is always required to identify\nwhich ICP to update.\n\n**Before calling this endpoint**, call `GET /api/v1/icp/options` to retrieve\nall valid values for employee_ranges, funding stages, locations, and sub_locations.\n\n**Required fields:**\n\n- **id**: The numeric ID of the ICP to update (returned by `/api/v1/icp/list`\n  or `/api/v1/icp/create`).\n\n**Updatable fields (all optional — include only what you want to change):**\n\n- **name**: A descriptive name for the ICP. Must be non-empty and unique\n  among the user's ICPs.\n- **target_roles**: List of job titles or role descriptions to target.\n  Must contain at least one role if provided.\n  Examples: [\"Head of Engineering\", \"VP of Product\"].\n- **employee_ranges**: Company size filters. Provide one or more range labels\n  from the `employee_ranges` list returned by `/api/v1/icp/options`.\n  Must contain at least one range if provided.\n- **location**: List of company HQ location codes. Use the `value` field from\n  the `locations` list returned by `/api/v1/icp/options` (e.g., [\"us\", \"uk\"]).\n  Must contain at least one location if provided.\n- **min_funding** / **max_funding**: Funding stage bounds. Each can be updated\n  independently. Set to `null` to clear (stored as `\"Any\"`). A value of `\"Any\"`\n  means no constraint on that bound. Use values from the `funding_stages` list\n  returned by `/api/v1/icp/options`.\n- **employee_count_funding_config**: How to combine employee count and funding\n  criteria. Values: `\"AND\"` or `\"OR\"`. Only valid when funding is set. Set to\n  `null` to clear.\n- **sub_locations**: US state or city codes. Use the `value` field from the\n  `sub_locations` list returned by `/api/v1/icp/options`\n  (e.g., [\"ca\", \"san-francisco-ca\"]). **Only applicable when `location` is\n  exclusively `[\"us\"]`.** Set to `null` or `[]` to clear. If changing `location`\n  away from `[\"us\"]`, you must also clear this field.\n- **people_locations**: Geographic filter for target people. Use the `value`\n  field from the `people_locations` list returned by `/api/v1/icp/options`.\n  Set to `null` or `[]` to clear.\n- **people_sub_locations**: Sub-region codes for people locations. Use the\n  `value` field from the `people_sub_locations` list returned by\n  `/api/v1/icp/options`. **Only applicable when `people_locations` is\n  exclusively `[\"us\"]`.** Set to `null` or `[]` to clear. If changing\n  `people_locations` away from `[\"us\"]`, you must also clear this field.\n\n**Cross-field validation:**\n\n- `sub_locations` requires `location` to be `[\"us\"]` (checked against the\n  final merged state, not just the request).\n- `people_sub_locations` requires `people_locations` to be `[\"us\"]`.\n- `employee_count_funding_config` requires at least one of `min_funding` or\n  `max_funding` to be a non-`\"Any\"` value.","operationId":"update_icp_api_v1_icp_update_patch","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateICPRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateICPResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/credits/balance":{"get":{"tags":["Credits"],"summary":"Get credit balance","description":"Return the authenticated user's credit balance.\n\nRequires only a valid `X-API-Key` — this endpoint declares no scopes\n(`scopes=[]`), so any authenticated caller can reach it regardless of which\nproduct/primitive scopes are granted to them.\n\n**Response fields:**\n\n- **total_credits**: The credit allowance for this billing account\n  (`max_openfunnel_credits`).\n- **credits_used**: Credits consumed in the current billing window.\n- **credits_left**: `total_credits - credits_used`, floored at 0.\n\nCredits are resolved against the caller's billing account, mirroring how\nusage is enforced elsewhere:\n\n- **INDIVIDUAL / gmail / FREE / TOPUP**: scoped to the user; FREE/TOPUP count\n  lifetime usage, paid users count the current monthly billing window.\n- **TEAM** (paid, non-gmail domain): usage is pooled across all members of\n  the domain and the allowance is the domain's highest `max_openfunnel_credits`.","operationId":"get_credit_balance_api_v1_credits_balance_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditBalanceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/enrich/account":{"post":{"tags":["Enrich"],"summary":"Enrich Account","description":"Enrich a company account with firmographic data.\n\nLooks up the company by domain and fills in firmographic fields:\nemployee count, funding stage, HQ location (city/region/country), industry,\nrevenue, LinkedIn follower count, and description.\n\n**Behavior:**\n- If the account already exists for this user, missing firmographic fields are backfilled\n- If the account does not exist, a new account is created with all available data\n- Returns synchronously (~50-200ms)\n\n**Fields enriched:**\n| Field | Description |\n|-------|-------------|\n| `employee_count` | Estimated employee count |\n| `funding_stage` | Normalized funding stage (seed, series_a, ipo, etc.) |\n| `location` | Formatted HQ location string (e.g. \"San Francisco, California, US\") |\n| `hq_city` | HQ city name |\n| `hq_region` | HQ state/region name |\n| `hq_country` | HQ country name or code |\n| `industry` | Primary industry |\n| `revenue_usd` | Estimated annual revenue in USD |\n| `linkedin_follower_count` | LinkedIn page follower count |\n| `description` | Company description |\n\n**Example request:**\n```json\n{\"domain\": \"stripe.com\"}\n```\n\n**Error codes:**\n- `INVALID_REQUEST` (400) — Domain is empty or invalid\n- `INTERNAL_ERROR` (500) — Internal service failure","operationId":"enrich_account_endpoint_api_v1_enrich_account_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichAccountRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichAccountResponse"}}}},"400":{"description":"Invalid domain"},"500":{"description":"Internal error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/enrich/accounts":{"post":{"tags":["Enrich"],"summary":"Batch Enrich Accounts","description":"Start an async job to enrich multiple company accounts with firmographic data.\n\nAccepts up to 500 domains. Domains are deduplicated and normalized.\nReturns a ``job_id`` immediately for polling.\n\n**Flow:**\n1. Call this endpoint with ``domains`` list -> receive ``job_id``\n2. Poll ``GET /api/v1/enrich/accounts/{job_id}`` every 3-5 seconds\n3. When ``status`` is ``\"completed\"``, the ``result`` field contains per-domain enrichment data","operationId":"enrich_accounts_batch_endpoint_api_v1_enrich_accounts_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichAccountBatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichAccountBatchStartResponse"}}}},"400":{"description":"Invalid request"},"500":{"description":"Internal error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/enrich/accounts/{job_id}":{"get":{"tags":["Enrich"],"summary":"Poll Batch Account Enrichment Job","description":"Poll the status of a batch account enrichment job.\n\nReturns the current status and, when completed, per-domain results\nwith account IDs, fields updated, and whether each account was new or existing.\n\n**Status values:**\n- ``pending`` — Job created, not yet started\n- ``running`` — Enrichment in progress\n- ``completed`` — All done; check ``result`` for per-domain data\n- ``failed`` — Job failed; check ``error_message``","operationId":"poll_batch_account_enrichment_api_v1_enrich_accounts__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichAccountBatchPollResponse"}}}},"404":{"description":"Job not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/enrich/fast-people-enrichment":{"post":{"tags":["Enrich"],"summary":"Enrich Account with People Job","description":"Start an async job to discover people at a company using Seniority & Department Filters.\n\nThis typically takes 1-5 seconds.\n\n**Flow:**\n1. Call this endpoint with ``account_id`` + filters -> receive ``job_id``\n2. Poll ``GET /api/v1/enrich/fast-people-enrichment/{job_id}`` every 2-3 seconds\n3. When ``status`` is ``\"completed\"``, the ``result`` field contains discovered people ids\n4. Use the Get People Endpoint ``/api/v1/people/batch`` to get the people details\n\n**People locations:**\n- Optional list of 2-letter country codes (e.g. ``[\"us\", \"uk\", \"eu\"]``)\n- Available country codes can be fetched from ``GET /api/v1/icp/options``\n\n**Credit costs:**\n- Credits charged per **new** person stored\n- Optionally limit spend with ``max_credit_limit``\n\n**Example request:**\n```json\n{\n  \"account_id\": 12345,\n  \"seniority_filters\": [\"VP\", \"DIRECTOR\"],\n  \"department_filters\": [\"ENGINEERING\", \"PRODUCT\"]\n}\n```\n\n**Error codes:**\n- ``INVALID_REQUEST`` (400) — Empty filters or credits exceeded\n- ``ACCOUNT_NOT_FOUND`` (404) — Account ID not found\n- ``CREDITS_EXCEEDED`` (400) — Monthly credit limit reached","operationId":"start_fast_people_enrichment_job_api_v1_enrich_fast_people_enrichment_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FastPeopleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FastPeopleStartResponse"}}}},"400":{"description":"Invalid request or insufficient credits"},"404":{"description":"Account not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/enrich/fast-people-enrichment/{job_id}":{"get":{"tags":["Enrich"],"summary":"Poll Enrich Account with People Job","description":"Poll the status of a fast people enrichment job.\n\nReturns the current status and, when completed, the list of discovered people.\n\n**Status values:**\n- ``pending`` — Job created, not yet started\n- ``running`` — Discovery in progress\n- ``completed`` — All done; ``result`` contains discovered people\n- ``failed`` — Job failed; check ``error_message``\n\n**Polling recommendation:** Every 2-3 seconds. Typically\ncompletes in 1-5 seconds.\n\nPost completion, this API returns the people ids of the discovered people.\nUse the Get People Endpoint ``/api/v1/people/batch`` to get the people details.","operationId":"poll_fast_people_enrichment_job_api_v1_enrich_fast_people_enrichment__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FastPeoplePollResponse"}}}},"404":{"description":"Job not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/enrich/people":{"post":{"tags":["Enrich"],"summary":"Enrich People with Contact Information Job","description":"Start an async job to enrich people with email and/or phone data.\n\nLooks up each person via their LinkedIn URL and returns a ``job_id``\nimmediately for polling.\n\n**Flow:**\n1. Call this endpoint with ``people_ids`` → receive ``job_id``\n2. Poll ``GET /api/v1/enrich/people/{job_id}`` every 3-5 seconds\n3. When ``status`` is ``\"completed\"``, the ``result`` field contains per-person email/phone data\n\n**Credit costs:**\n- Email enrichment: credits charged per email **successfully found** (not per attempt)\n- Phone enrichment: credits charged per phone number **successfully found**\n- Failed lookups cost nothing\n\n**Limits:**\n- Max 500 people per request\n- People must belong to the authenticated user\n- People must have a LinkedIn URL for enrichment to work\n\n**Example request:**\n```json\n{\n  \"people_ids\": [101, 102, 103],\n  \"enrich_emails\": true,\n  \"enrich_phones\": false\n}\n```\n\n**Error codes:**\n- ``INVALID_REQUEST`` (400) — Empty people_ids or both enrich flags are false\n- ``PERSON_NOT_FOUND`` (404) — One or more people_ids not found or not owned by user","operationId":"enrich_people_endpoint_api_v1_enrich_people_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichPeopleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichPeopleStartResponse"}}}},"400":{"description":"Invalid request or insufficient credits"},"404":{"description":"People not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/enrich/people/{job_id}":{"get":{"tags":["Enrich"],"summary":"Poll Enrich People with Contact Information Job","description":"Poll the status of a people enrichment job.\n\nReturns the current status and, when completed, per-person results\nwith emails and phone numbers found, plus credits consumed.\n\n**Status values:**\n- ``pending`` — Job created, not yet started\n- ``running`` — Enrichment in progress\n- ``completed`` — All done; check ``result`` for per-person data and ``credits_used`` for cost\n- ``failed`` — Job failed; check ``error_message``\n\n**Polling recommendation:** Every 3-5 seconds. Typical enrichment takes\n~2 seconds per person due to upstream API rate limiting (30 requests/minute).\n\n**Example response (completed):**\n```json\n{\n  \"job_id\": \"abc-123\",\n  \"status\": \"completed\",\n  \"progress\": {\"total\": 3, \"completed\": 3, \"emails_found\": 2, \"phones_found\": 0},\n  \"credits_used\": {\"emails\": 2, \"phones\": 0, \"total\": 2},\n  \"result\": [\n    {\"person_id\": 101, \"email\": \"alice@company.com\", \"status\": \"enriched\"},\n    {\"person_id\": 102, \"email\": \"bob@company.com\", \"status\": \"enriched\"},\n    {\"person_id\": 103, \"email\": null, \"status\": \"not_found\"}\n  ]\n}\n```","operationId":"poll_people_enrichment_api_v1_enrich_people__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichPeoplePollResponse"}}}},"404":{"description":"Job not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/enrich/deep-enrich":{"post":{"tags":["Enrich"],"summary":"Deep Enrich","description":"End-to-end company qualification and people enrichment.\n\n1. Creates or finds the account for the given domain.\n2. Finds intent signals for the company.\n3. Enriches the account with people — finds relevant team members and ICP qualifies them.\n\nRequires either `icp_id` or `target_icp_roles`. Runs in background — use `account_id` to get latest account status. Deep enrichment can take 15-30 minutes to find intent signals and people.","operationId":"deep_enrich_proxy_api_v1_enrich_deep_enrich_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QualifyAndEnrichRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QualifyAndEnrichResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/people/batch":{"get":{"tags":["People"],"summary":"Get People Get","description":"Get people details by IDs (comma-separated).","operationId":"get_people_get_api_v1_people_batch_get","parameters":[{"name":"people_ids","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated list of people IDs (e.g., '101,102,103')","title":"People Ids"},"description":"Comma-separated list of people IDs (e.g., '101,102,103')"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPeopleBatchV2Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/people/filters":{"get":{"tags":["People"],"summary":"Get People Filters","operationId":"get_people_filters_api_v1_people_filters_get","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPeopleFiltersV2Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/people/filtered-people":{"post":{"tags":["People"],"summary":"List People Ids","operationId":"list_people_ids_api_v1_people_filtered_people_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPeopleListV2Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPeopleListV2Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/people/verify":{"post":{"tags":["People"],"summary":"Start Verify People Job","description":"Start a background job to verify people still work at their associated companies.\n\nUses Fiber live-fetch API to confirm current employment. People confirmed\nas departed are removed along with all dependent records.\nCredits are charged per person found in the workspace.","operationId":"start_verify_people_job_api_v1_people_verify_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPeopleJobRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPeopleJobStartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/people/verify-job/{job_id}":{"get":{"tags":["People"],"summary":"Get Verify People Job Status","description":"Poll the status of a people verification job.","operationId":"get_verify_people_job_status_api_v1_people_verify_job__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPeopleJobStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/crm/sync-accounts-job":{"post":{"tags":["CRM"],"summary":"Sync Accounts Job","description":"Start an async CRM sync job for accounts and their people.\n\nCreates a background job that syncs the specified accounts and all their people to the connected CRM\n(Salesforce or HubSpot). Returns a job_id immediately for status polling.\n\n**Flow:**\n1. Call this endpoint -> get job_id\n2. Poll `/check-job-status` with job_id until status is \"completed\" or \"failed\"\n3. When completed, the result field contains detailed sync results\n\n**Behavior:**\n- Accounts already in CRM with the same owner are updated with latest signals\n- Accounts in CRM with a different owner are updated with new signals. Ownership stays unchanged.\n- New accounts are created in CRM\n- People already in CRM with the account having same owner are updated with latest signals\n- People already in CRM with the account having different owner are updated with new signals. Ownership stays unchanged.\n- New people in account having same owner are created with assigned user as the people owner.\n- New people in account having different owner are created with account owner as the people owner.","operationId":"sync_accounts_job_api_v1_crm_sync_accounts_job_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAccountsJobRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncJobStartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/crm/sync-people-job":{"post":{"tags":["CRM"],"summary":"Sync People Job","description":"Start an async CRM sync job for people (and their parent accounts).\n\nCreates a background job that syncs the specified people to the connected CRM\n(Salesforce or HubSpot). Parent accounts are automatically resolved and synced first.\nReturns a job_id immediately for status polling.\n\n**Flow:**\n1. Call this endpoint -> get job_id\n2. Poll `/check-job-status` with job_id until status is \"completed\" or \"failed\"\n3. When completed, the result field contains detailed sync results for both accounts and people\n\n**Behavior:**\n- Parent accounts are synced first\n- Accounts already in CRM with the same owner are updated with latest signals\n- Accounts in CRM with a different owner are updated with new signals. Ownership stays unchanged.\n- New accounts are created in CRM\n- People already in CRM with the account having same owner are updated with latest signals\n- People already in CRM with the account having different owner are updated with new signals. Ownership stays unchanged.\n- New people in account having same owner are created with assigned user as the people owner.\n- New people in account having different owner are created with account owner as the people owner.","operationId":"sync_people_job_api_v1_crm_sync_people_job_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncPeopleJobRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncJobStartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/crm/check-job-status":{"get":{"tags":["CRM"],"summary":"Check Job Status Get","description":"Check the status of a CRM sync job.\n\nReturns the current status and, when completed, the full sync results.\n\n**Status values:**\n- `pending`: Job created, not yet started\n- `running`: Sync is in progress\n- `completed`: Sync finished - check `result` field for details\n- `failed`: Sync failed - check `error_message` for details\n\n**Polling recommendation:** Poll every 3-5 seconds.","operationId":"check_job_status_get_api_v1_crm_check_job_status_get","parameters":[{"name":"job_id","in":"query","required":true,"schema":{"type":"string","description":"Job ID returned from sync-accounts-job or sync-people-job","title":"Job Id"},"description":"Job ID returned from sync-accounts-job or sync-people-job"},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncJobStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/signal/deploy/deep-company-search-agent":{"post":{"tags":["Signal Deploy"],"summary":"[DEPRECATED] Deploy Deep Company Search Signal","description":"**DEPRECATED — this endpoint no longer deploys signals and returns HTTP 410 Gone.**\n\nDeep Company Search has been replaced by the **Company Initiatives** and\n**People Hired** signal APIs. Migrate to one of:\n\nCompany Initiatives:\n- Hiring for a Role — https://product-docs.openfunnel.dev/signal-deployment/hiring-for-role\n- Hiring for an Initiative — https://product-docs.openfunnel.dev/signal-deployment/hiring-for-initiative\n- Mentioning Concepts in Job Posts — https://product-docs.openfunnel.dev/signal-deployment/hiring-for-concepts\n- Multiple Job Posts for a Role — https://product-docs.openfunnel.dev/signal-deployment/hiring-spike-for-role\n- Multiple Job Posts Mentioning a Concept — https://product-docs.openfunnel.dev/signal-deployment/hiring-spike-for-concept\n- Surge in Hiring for a Role — https://product-docs.openfunnel.dev/signal-deployment/relative-hiring-spike-for-role\n- Surge in Mentions of a Concept — https://product-docs.openfunnel.dev/signal-deployment/relative-hiring-spike-for-concept\n- First-Time Hire for a Role — https://product-docs.openfunnel.dev/signal-deployment/first-hire-for-role\n- First-Time Mention of a Concept — https://product-docs.openfunnel.dev/signal-deployment/job-post-first-time-mention\n\nPeople Hired:\n- People Hired for Initiatives — https://product-docs.openfunnel.dev/signal-deployment/people-hired-for-initiatives\n- People Hired First Time — https://product-docs.openfunnel.dev/signal-deployment/people-hired-first-time","operationId":"deploy_deep_company_search_api_v1_signal_deploy_deep_company_search_agent_post","deprecated":true,"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"410":{"description":"This endpoint is deprecated and no longer deploys signals.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeprecatedSignalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/signal/deploy/deep-hiring-agent":{"post":{"tags":["Signal Deploy"],"summary":"[DEPRECATED] Deploy Deep Hiring Signal","description":"**DEPRECATED — this endpoint no longer deploys signals and returns HTTP 410 Gone.**\n\nDeep Hiring has been replaced by the **Company Initiatives** and **People Hired**\nsignal APIs. Migrate to one of:\n\nCompany Initiatives:\n- Hiring for a Role — https://product-docs.openfunnel.dev/signal-deployment/hiring-for-role\n- Hiring for an Initiative — https://product-docs.openfunnel.dev/signal-deployment/hiring-for-initiative\n- Mentioning Concepts in Job Posts — https://product-docs.openfunnel.dev/signal-deployment/hiring-for-concepts\n- Multiple Job Posts for a Role — https://product-docs.openfunnel.dev/signal-deployment/hiring-spike-for-role\n- Multiple Job Posts Mentioning a Concept — https://product-docs.openfunnel.dev/signal-deployment/hiring-spike-for-concept\n- Surge in Hiring for a Role — https://product-docs.openfunnel.dev/signal-deployment/relative-hiring-spike-for-role\n- Surge in Mentions of a Concept — https://product-docs.openfunnel.dev/signal-deployment/relative-hiring-spike-for-concept\n- First-Time Hire for a Role — https://product-docs.openfunnel.dev/signal-deployment/first-hire-for-role\n- First-Time Mention of a Concept — https://product-docs.openfunnel.dev/signal-deployment/job-post-first-time-mention\n\nPeople Hired:\n- People Hired for Initiatives — https://product-docs.openfunnel.dev/signal-deployment/people-hired-for-initiatives\n- People Hired First Time — https://product-docs.openfunnel.dev/signal-deployment/people-hired-first-time","operationId":"deploy_deep_hiring_api_v1_signal_deploy_deep_hiring_agent_post","deprecated":true,"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"410":{"description":"This endpoint is deprecated and no longer deploys signals.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeprecatedSignalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/signal/deploy/social-listening-agent":{"post":{"tags":["Signal Deploy"],"summary":"Deploy Social Listening Signal","description":"Deploy a Social Listening signal.\n\nOpenFunnel Company Social Listening Agents listen for any announcements or conversations that a company is making across LinkedIn, Twitter, or Google.\n\nListen on things like:\n- I want to target companies who raised seed funding\n- I want to target companies posting about attending RSAC conference\n- I want to target companies opening remote offices\n- I want to target companies adding AI to their existing stack","operationId":"deploy_social_listening_api_v1_signal_deploy_social_listening_agent_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SocialListeningRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/signal/deploy/technography-search-agent":{"post":{"tags":["Signal Deploy"],"summary":"[DEPRECATED] Deploy Technography Search Signal","description":"**DEPRECATED — this endpoint no longer deploys signals and returns HTTP 410 Gone.**\n\nTechnography Search has been replaced by the four **Company Tech Stack** signal APIs.\nMigrate to one of:\n\n- Tech Stack — https://product-docs.openfunnel.dev/signal-deployment/tech-stack\n- Tech Stack Spike — https://product-docs.openfunnel.dev/signal-deployment/tech-stack-spike\n- Tech Stack First Mention — https://product-docs.openfunnel.dev/signal-deployment/tech-stack-first-mention\n- Tech Use Case — https://product-docs.openfunnel.dev/signal-deployment/tech-use-case","operationId":"deploy_technography_search_api_v1_signal_deploy_technography_search_agent_post","deprecated":true,"parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"responses":{"410":{"description":"This endpoint is deprecated and no longer deploys signals.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeprecatedSignalResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/signal/deploy/icp-job-change-agent":{"post":{"tags":["Signal Deploy"],"summary":"Deploy ICP Job Change Signal","description":"Deploy an ICP Job Change signal.\n\nFind newly joined people in your ICP at your target companies - new joinees come in with budgets, plans and ideas; it's an ideal time to outreach.\nOpenFunnel segregates new joinees from promotions so your outreach is relevant and not landing to the wrong people.","operationId":"deploy_icp_job_change_api_v1_signal_deploy_icp_job_change_agent_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ICPJobChangeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/signal/deploy/competitor-engagement-agent":{"post":{"tags":["Signal Deploy"],"summary":"Deploy Competitor Engagement Signal","description":"Deploy a Competitor Engagement signal.\n\nFind and qualify every ICP liking or commenting on posts by any LinkedIn profile.","operationId":"deploy_competitor_engagement_api_v1_signal_deploy_competitor_engagement_agent_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetitorEngagementRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/signal/deploy/competitor-activity-agent":{"post":{"tags":["Signal Deploy"],"summary":"Deploy Competitor Activity Signal","description":"Deploy a Competitor Activity signal.\n\nMonitor potential customers your competitors are engaging with. This competitor activity agent surfaces accounts and people that your competitors are actively reaching out to on LinkedIn.","operationId":"deploy_competitor_activity_api_v1_signal_deploy_competitor_activity_agent_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetitorActivityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/hiring-for-role":{"post":{"tags":["Signal Deploy V2"],"summary":"Find companies hiring for a specific role","description":"Find companies actively posting job listings for a specific role.\n\nUse this when you want to discover companies that are hiring for a particular\nposition — e.g. \"Solutions Engineer\", \"VP of Sales\", \"Data Engineer\".\n\nThe signal scans recent job postings and surfaces companies with open roles\nmatching your query, filtered against your ICP.\n\n**When to use:** You know the exact role title or function you're targeting.\n**Sentence:** [descriptive_icp] companies hiring for [role]\n\nExamples:\n- role=\"Solutions Engineer\", descriptive_icp=\"B2B fintech\"\n- role=\"VP of Sales\", descriptive_icp=\"Vertical SaaS\"\n- role=\"Data Engineer\" (no descriptive_icp — searches across all industries)","operationId":"deploy_hiring_for_role_api_v2_signal_deploy_hiring_for_role_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HiringForRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/hiring-for-initiative":{"post":{"tags":["Signal Deploy V2"],"summary":"Find companies with a specific initiative","description":"Find companies with a specific strategic initiative, migration, or expansion.\n\nUse this when the user describes a business initiative rather than a role title —\ne.g. \"ERP migration\", \"AI agent rollout\", \"expanding to APAC\".\n\n**When to use:** The target is a company initiative, not a specific job title.\n**Sentence:** [descriptive_icp] companies having the initiative of [initiative]\n\nExamples:\n- initiative=\"ERP migration\", descriptive_icp=\"Fortune 500\"\n- initiative=\"AI agent rollout\", descriptive_icp=\"B2B SaaS\"","operationId":"deploy_hiring_for_initiative_api_v2_signal_deploy_hiring_for_initiative_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HiringForInitiativeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/hiring-for-concepts":{"post":{"tags":["Signal Deploy V2"],"summary":"Find companies mentioning a concept in job posts","description":"Find companies mentioning a specific concept or keyword in their job postings.\n\nUse this when the user wants to discover companies whose job posts reference\na technology concept, methodology, or domain — e.g. \"self hosted models\",\n\"zero trust architecture\", \"product-led growth\".\n\n**When to use:** The target is a concept/keyword appearing in job descriptions.\n**Sentence:** [descriptive_icp] companies mentioning [concept]\n\nExamples:\n- concept=\"self hosted models\", descriptive_icp=\"B2B SaaS\"\n- concept=\"AI governance\", descriptive_icp=\"Fortune 500\"","operationId":"deploy_hiring_for_concepts_api_v2_signal_deploy_hiring_for_concepts_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HiringForConceptsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/hiring-spike-for-role":{"post":{"tags":["Signal Deploy V2"],"summary":"Detect hiring spikes — role appearing in N+ job posts","description":"Find companies with hiring spikes — a specific role appearing in multiple job posts.\n\nUse this when you want to detect companies that are aggressively hiring for the\nsame role (e.g. 5+ \"data engineer\" posts in 90 days = scaling data team).\n\n**When to use:** You want volume/spike detection, not just any single job post.\n**Sentence:** [descriptive_icp] companies hiring for [role] in [count_threshold]+ posts in [window_days] days\n\nExamples:\n- role=\"data engineer\", count_threshold=5, window_days=90, descriptive_icp=\"B2B fintech\"\n- role=\"AI engineer\", count_threshold=10, window_days=30, descriptive_icp=\"DevTools\"","operationId":"deploy_hiring_spike_for_role_api_v2_signal_deploy_hiring_spike_for_role_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HiringSpikeForRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/hiring-spike-for-concept":{"post":{"tags":["Signal Deploy V2"],"summary":"Detect concept spikes — concept appearing in N+ job posts","description":"Find companies with concept spikes — a keyword/concept appearing in multiple job posts.\n\nUse this when you want to detect companies that are repeatedly mentioning a concept\nacross their job postings (e.g. 3+ posts mentioning \"kubernetes migration\" in 90 days).\n\n**When to use:** You want volume/spike detection for a concept, not just any single mention.\n**Sentence:** [descriptive_icp] companies mentioning [term] in [count_threshold]+ posts in [window_days] days\n\nExamples:\n- term=\"kubernetes migration\", count_threshold=3, window_days=90, descriptive_icp=\"B2B SaaS\"\n- term=\"AI governance\", count_threshold=5, window_days=30, descriptive_icp=\"Enterprise\"","operationId":"deploy_hiring_spike_for_concept_api_v2_signal_deploy_hiring_spike_for_concept_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HiringSpikeForConceptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/relative-hiring-spike-for-role":{"post":{"tags":["Signal Deploy V2"],"summary":"Detect accelerating role hiring (relative spike)","description":"Find companies whose hiring for a role is *accelerating* — not just high volume.\n\nUnlike /hiring-spike-for-role (which qualifies on an absolute count in a window), this\ndetects a ramp: it buckets matching job posts into three trailing 30-day windows and\nqualifies a company when the most-recent bucket grows by at least growth_pct_threshold\nversus the average of the prior two (a zero baseline with any recent posts also qualifies).\n\n**When to use:** You want companies that just *started ramping* hiring for a role, catching\nthe inflection rather than steady-state volume.\n**Sentence:** [descriptive_icp] companies accelerating hiring for [role]\n\nExamples:\n- role=\"AI engineer\", growth_pct_threshold=100, descriptive_icp=\"B2B SaaS\" (doubling)\n- role=\"data engineer\", growth_pct_threshold=50, descriptive_icp=\"DevTools\"","operationId":"deploy_relative_hiring_spike_for_role_api_v2_signal_deploy_relative_hiring_spike_for_role_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelativeHiringSpikeForRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/relative-hiring-spike-for-concept":{"post":{"tags":["Signal Deploy V2"],"summary":"Detect accelerating concept mentions (relative spike)","description":"Find companies whose job-post mentions of a concept are *accelerating* — not just frequent.\n\nUnlike /hiring-spike-for-concept (absolute count in a window), this detects a ramp: it\nbuckets matching job posts into three trailing 30-day windows and qualifies a company when\nthe most-recent bucket grows by at least growth_pct_threshold versus the average of the prior\ntwo (a zero baseline with any recent posts also qualifies).\n\n**When to use:** You want companies that just *started ramping* mentions of a concept, catching\nthe inflection rather than steady-state volume.\n**Sentence:** [descriptive_icp] companies accelerating job posts mentioning [term]\n\nExamples:\n- term=\"kubernetes migration\", growth_pct_threshold=100, descriptive_icp=\"B2B SaaS\"\n- term=\"AI governance\", growth_pct_threshold=50, descriptive_icp=\"Enterprise\"","operationId":"deploy_relative_hiring_spike_for_concept_api_v2_signal_deploy_relative_hiring_spike_for_concept_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelativeHiringSpikeForConceptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/job-post-first-time-mention":{"post":{"tags":["Signal Deploy V2"],"summary":"Find companies mentioning a concept in job posts for the first time","description":"Find companies that mentioned a specific concept or keyword in their job postings\nfor the very first time.\n\nUse this when you want to catch companies newly signaling interest in a concept —\ne.g. their first job post ever mentioning \"ERP Migration\" or \"AI agents\".\n\n**When to use:** You want first-time detection of a concept in job posts, not ongoing mentions.\n**Sentence:** [descriptive_icp] companies mentioning [term] for the first time in their job posts\n\nExamples:\n- term=\"ERP Migration\", descriptive_icp=\"Fortune 500\"\n- term=\"AI agents\", descriptive_icp=\"B2B SaaS\"","operationId":"deploy_job_post_first_time_mention_api_v2_signal_deploy_job_post_first_time_mention_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPostFirstTimeMentionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/people-hired-for-initiatives":{"post":{"tags":["Signal Deploy V2"],"summary":"Find people recently hired for specific initiatives","description":"Find people who were recently hired to execute a specific job-to-be-done.\n\nUse this when you want to discover people who joined companies specifically to\ndo something — e.g. \"setup outbound sales\", \"lead AI transformation\".\n\n**When to use:** The focus is on PEOPLE (not companies), hired for a purpose.\n**Sentence:** People hired to [job_to_be_done] at [descriptive_icp] companies\n\nExamples:\n- job_to_be_done=\"setup outbound sales\", descriptive_icp=\"B2B fintech\"\n- job_to_be_done=\"lead AI transformation\", descriptive_icp=\"Fortune 500\"","operationId":"deploy_people_hired_for_initiatives_api_v2_signal_deploy_people_hired_for_initiatives_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleHiredForInitiativesRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/first-hire-for-role":{"post":{"tags":["Signal Deploy V2"],"summary":"Find companies hiring for a role for the first time","description":"Find companies that posted a job for a specific role for the very first time.\n\nScans job postings to detect when a company starts hiring for a role it has never\nposted before — e.g. their first-ever \"Solutions Engineer\" or \"Head of AI\" listing.\nThis signals a new investment area or team build-out.\n\nRequires descriptive_icp or accounts for candidate discovery (icp_id alone is insufficient).\n\n**When to use:** You want to catch companies that just started posting for a new role.\n**Sentence:** [descriptive_icp] companies hiring for [role] for the first time\n\nExamples:\n- role=\"Solutions Engineer\", descriptive_icp=\"B2B SaaS\"\n- role=\"Head of AI\", descriptive_icp=\"Fortune 500\"","operationId":"deploy_first_hire_for_role_api_v2_signal_deploy_first_hire_for_role_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirstHireForRoleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/people-hired-first-time":{"post":{"tags":["Signal Deploy V2"],"summary":"Find companies that made their first hire for a role (people index)","description":"Find companies where someone was recently hired as the first person in a specific role.\n\nUses people-index data to detect when a company brings on their very first hire for a\nrole family — e.g. their first security engineer, first RevOps hire. This is different\nfrom /first-hire-for-role which detects first-time job postings.\n\n**When to use:** You want to find companies that actually hired someone new into a role for the first time.\n**Sentence:** [descriptive_icp] companies that made their first hire for [role]\n\nExamples:\n- role=\"Head of Security\", descriptive_icp=\"B2B SaaS\"\n- role=\"Revenue Operations\", descriptive_icp=\"DevTools\"","operationId":"deploy_people_hired_first_time_api_v2_signal_deploy_people_hired_first_time_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleHiredFirstTimeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/trait-only":{"post":{"tags":["Signal Deploy V2"],"summary":"Find companies matching ICP without activity signals","description":"Find companies that match your ICP filters without requiring any activity signal.\n\nUse this when you want to build a target account list based purely on firmographic\ncriteria (employee count, funding, location) and optionally an industry/type filter.\n\n**When to use:** No activity signal needed — just ICP matching or uploaded accounts.\n**Sentence:** Find [descriptive_icp] companies matching ICP\n\nExamples:\n- descriptive_icp=\"B2B fintech\", icp_id=123\n- accounts=[{website: \"stripe.com\"}, {website: \"plaid.com\"}] (uploaded list)","operationId":"deploy_trait_only_api_v2_signal_deploy_trait_only_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraitOnlyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/job-change":{"post":{"tags":["Signal Deploy V2"],"summary":"Find people who recently changed jobs","description":"Surface people who recently changed jobs into companies matching your ICP.\n\nNew joinees come in with budgets, plans, and ideas — it's an ideal time to\noutreach. Segregates new joinees from promotions.\n\n**When to use:** You want to catch people moving into new roles at target companies.\n**Sentence:** People who joined [descriptive_icp] companies\n\nExamples:\n- descriptive_icp=\"B2B fintech\", icp_id=123\n- descriptive_icp=\"Vertical SaaS\"","operationId":"deploy_job_change_api_v2_signal_deploy_job_change_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobChangeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/tech-stack":{"post":{"tags":["Signal Deploy V2"],"summary":"Find companies using a specific technology","description":"Find companies running a specific technology in their stack.\n\nSearches job postings for mentions of the technology and qualifies companies.\n\n**When to use:** You know the exact technology name you're targeting.\n**Sentence:** [descriptive_icp] companies using [technography]\n\nExamples:\n- technography=\"Segment\", descriptive_icp=\"B2B fintech\"\n- technography=\"Snowflake\", descriptive_icp=\"Vertical SaaS\"","operationId":"deploy_tech_stack_api_v2_signal_deploy_tech_stack_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TechStackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/tech-stack-first-mention":{"post":{"tags":["Signal Deploy V2"],"summary":"Find companies mentioning a tech stack for the first time","description":"Find companies that mentioned a specific technology in their job postings for the\nvery first time.\n\nUse this when you want to catch companies newly signaling interest in a technology —\ne.g. their first job post ever mentioning \"Kubernetes\" or \"dbt\".\n\n**When to use:** You want first-time detection of a tech stack, not ongoing usage.\n**Sentence:** [descriptive_icp] companies mentioning [technography] for the first time in their job posts\n\nExamples:\n- technography=\"Kubernetes\", descriptive_icp=\"Fortune 500\"\n- technography=\"dbt\", descriptive_icp=\"B2B SaaS\"","operationId":"deploy_tech_stack_first_mention_api_v2_signal_deploy_tech_stack_first_mention_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TechStackFirstMentionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/tech-stack-spike":{"post":{"tags":["Signal Deploy V2"],"summary":"Detect tech stack spikes — technology in N+ job posts","description":"Find companies with technology adoption spikes — a tech appearing in multiple job posts.\n\n**When to use:** You want volume detection for a technology (not just one mention).\n**Sentence:** [descriptive_icp] companies mentioning [technography] in [count_threshold]+ posts in [timeframe] days\n\nExamples:\n- technography=\"Kubernetes\", count_threshold=3, timeframe=90, descriptive_icp=\"B2B fintech\"\n- technography=\"Snowflake\", count_threshold=5, timeframe=180, descriptive_icp=\"DevTools\"","operationId":"deploy_tech_stack_spike_api_v2_signal_deploy_tech_stack_spike_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TechStackSpikeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/tech-use-case":{"post":{"tags":["Signal Deploy V2"],"summary":"Find companies using a technology for a specific use case","description":"Find companies using a specific technology for a particular purpose.\n\nCombines technology + use case for precision — e.g. \"Snowflake for customer data platform\"\nis more specific than just \"Snowflake\".\n\n**When to use:** You want companies using a tech for a SPECIFIC purpose, not just any usage.\n**Sentence:** [descriptive_icp] companies using [technography] for [use_case]\n\nExamples:\n- technography=\"Snowflake\", use_case=\"customer data platform\", descriptive_icp=\"B2B fintech\"\n- technography=\"Datadog\", use_case=\"observability rollout\", descriptive_icp=\"DevTools\"","operationId":"deploy_tech_use_case_api_v2_signal_deploy_tech_use_case_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TechUseCaseRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/company-social-listening":{"post":{"tags":["Signal Deploy V2"],"summary":"Track companies mentioning a topic on social","description":"Find companies mentioning a specific topic across social channels (LinkedIn, Twitter, Google).\n\n**When to use:** You want to discover companies talking about a topic publicly.\n**Sentence:** Companies mentioning [topic] on social\n\nExamples:\n- topic=\"AI governance\"\n- topic=\"warehouse automation\"","operationId":"deploy_company_social_listening_api_v2_signal_deploy_company_social_listening_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanySocialListeningRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/people-social-listening":{"post":{"tags":["Signal Deploy V2"],"summary":"Track people mentioning a topic on social","description":"Find individual people discussing a topic across social platforms.\n\n**When to use:** You want to discover people (not companies) talking about a topic.\n**Sentence:** People mentioning [topic] on social\n\nExamples:\n- topic=\"AI agents\"\n- topic=\"data residency\"","operationId":"deploy_people_social_listening_api_v2_signal_deploy_people_social_listening_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleSocialListeningRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/linkedin-engagement":{"post":{"tags":["Signal Deploy V2"],"summary":"Find ICP people engaging with a LinkedIn profile","description":"Find and qualify ICP people who like or comment on posts by a specific LinkedIn profile.\n\n**When to use:** You want to find people in your ICP who engage with a known profile.\n**Sentence:** ICP people interacting with [linkedin_url]\n\nExamples:\n- linkedin_url=\"linkedin.com/in/founder-name\"","operationId":"deploy_linkedin_engagement_api_v2_signal_deploy_linkedin_engagement_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkedinEngagementRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/signal/deploy/linkedin-activity":{"post":{"tags":["Signal Deploy V2"],"summary":"Monitor a profile's outreach to ICP people","description":"Monitor a competitor or salesperson's LinkedIn activity to find accounts they're targeting.\n\nSurfaces accounts and people that the monitored profile is actively reaching out to.\n\n**When to use:** You want to see who a competitor salesperson is engaging with.\n**Sentence:** [linkedin_url] interactions with ICP people\n\nExamples:\n- linkedin_url=\"linkedin.com/in/competitor-ae\"","operationId":"deploy_linkedin_activity_api_v2_signal_deploy_linkedin_activity_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}},{"name":"X-User-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-User-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkedinActivityRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/tech/country-options":{"get":{"tags":["Tech Query"],"summary":"List supported ISO country codes for the hq_country_code filter","description":"Return the static list of ISO 3166-1 alpha-3 codes accepted by\nthe Agent Primitive search endpoints\n(`/api/v1/account/search-lookalikes` `locations` and\n`/api/v2/tech/companies` `hq_country_code`), paired with a canonical\nEnglish name. Ordered by company-data volume so the most useful\nvalues come first.\n\nStatic, fast, no auth — intended as a one-shot discovery call so\nagents can validate or surface country options without trial-and-error.","operationId":"get_country_options_api_v2_tech_country_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryOptionsResponse"}}}}}}},"/api/v2/tech/companies":{"get":{"tags":["Tech Query"],"summary":"Search Companies By Tech Stack","description":"Page through companies whose recent job posts mention a technology.\n\nBacked by a server-side OpenSearch `terms` aggregation on\n`company_slug` plus a `bucket_sort` pipeline aggregation that slices\nthe requested page out of the ranked pool — one OS round-trip per page.\n\nWith `enrich=true` (or when any firmographic filter is set), batches\na ClickHouse lookup on the page's slugs and returns hits hydrated\nwith firmographics. Read-only: no signals, no credits, no campaigns,\nno CRM. For the full bundled workflow use\n`/api/v2/signal/deploy/tech-stack` instead.","operationId":"get_tech_companies_api_v2_tech_companies_get","parameters":[{"name":"tech","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"description":"Technology to search for in job descriptions (e.g. 'Snowflake', 'Kubernetes').","title":"Tech"},"description":"Technology to search for in job descriptions (e.g. 'Snowflake', 'Kubernetes')."},{"name":"variations","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Optional alternate phrasings (e.g. 'Snowflake Data Cloud'). Each is OR-matched as a phrase.","title":"Variations"},"description":"Optional alternate phrasings (e.g. 'Snowflake Data Cloud'). Each is OR-matched as a phrase."},{"name":"lookback_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Lookback window in days (1–365). Defaults to a full year so coverage estimates aren't artificially clipped; narrow this for recency-sensitive queries.","default":365,"title":"Lookback Days"},"description":"Lookback window in days (1–365). Defaults to a full year so coverage estimates aren't artificially clipped; narrow this for recency-sensitive queries."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"1-indexed page number. Page size is fixed at 50. Walk pages with `has_more`. Sanity-bounded at 1000 pages (50,000 results) — the long tail is rarely useful for ICP discovery.","default":1,"title":"Page"},"description":"1-indexed page number. Page size is fixed at 50. Walk pages with `has_more`. Sanity-bounded at 1000 pages (50,000 results) — the long tail is rarely useful for ICP discovery."},{"name":"exclude_vendor","in":"query","required":false,"schema":{"type":"boolean","description":"When true (default), excludes job posts from the vendor of the technology being searched (e.g. searching 'Snowflake' won't return Snowflake's own job posts). Set false to include the vendor.","default":true,"title":"Exclude Vendor"},"description":"When true (default), excludes job posts from the vendor of the technology being searched (e.g. searching 'Snowflake' won't return Snowflake's own job posts). Set false to include the vendor."},{"name":"exclude_aggregators","in":"query","required":false,"schema":{"type":"boolean","description":"Exclude well-known LinkedIn job aggregators and reposters (`jobs-via-*`, `get-it-recruit-*`, `lensa`, `jobot`, `ziprecruiter`, etc.) which otherwise dominate raw counts without representing actual tech adopters. ON by default.","default":true,"title":"Exclude Aggregators"},"description":"Exclude well-known LinkedIn job aggregators and reposters (`jobs-via-*`, `get-it-recruit-*`, `lensa`, `jobot`, `ziprecruiter`, etc.) which otherwise dominate raw counts without representing actual tech adopters. ON by default."},{"name":"exclude_company_slugs","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Additional LinkedIn company slugs to exclude on top of the default aggregator block-list. Useful for blocking consultancies (`deloitte`, `pwc`, `accenture`), the caller's own company, or known competitors.","title":"Exclude Company Slugs"},"description":"Additional LinkedIn company slugs to exclude on top of the default aggregator block-list. Useful for blocking consultancies (`deloitte`, `pwc`, `accenture`), the caller's own company, or known competitors."},{"name":"include_evidence","in":"query","required":false,"schema":{"type":"boolean","description":"Include one top-hit job per company with a highlighted snippet showing the tech phrase in context. Set false for the leanest payload (~6× faster).","default":true,"title":"Include Evidence"},"description":"Include one top-hit job per company with a highlighted snippet showing the tech phrase in context. Set false for the leanest payload (~6× faster)."},{"name":"enrich","in":"query","required":false,"schema":{"type":"boolean","description":"When true, hydrates each company on this page with firmographics (employee count, website, LinkedIn URL, HQ, industries, funding, revenue). Adds ~150-200ms per page. Auto-enabled when any of `hq_country_code`, `min_employee_count`, or `max_employee_count` is set.","default":false,"title":"Enrich"},"description":"When true, hydrates each company on this page with firmographics (employee count, website, LinkedIn URL, HQ, industries, funding, revenue). Adds ~150-200ms per page. Auto-enabled when any of `hq_country_code`, `min_employee_count`, or `max_employee_count` is set."},{"name":"hq_country_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":3,"maxLength":3},{"type":"null"}],"description":"Filter by company HQ ISO 3166-1 alpha-3 code (e.g. 'USA', 'GBR', 'IND', 'DEU'). Top 30 by company volume: USA, GBR, CHN, FRA, IND, DEU, BRA, BEL, ESP, CAN, AUS, NLD, ITA, NOR, ZAF, MEX, TUR, CHE, ARE, POL, SWE, IDN, ARG, PAK, COL, PRT, JPN, CHL, NGA, AUT. Full list of 250 codes via `GET /api/v2/tech/country-options`. Auto-enables `enrich`. Companies missing a country code are dropped from the page when this filter is active.","title":"Hq Country Code"},"description":"Filter by company HQ ISO 3166-1 alpha-3 code (e.g. 'USA', 'GBR', 'IND', 'DEU'). Top 30 by company volume: USA, GBR, CHN, FRA, IND, DEU, BRA, BEL, ESP, CAN, AUS, NLD, ITA, NOR, ZAF, MEX, TUR, CHE, ARE, POL, SWE, IDN, ARG, PAK, COL, PRT, JPN, CHL, NGA, AUT. Full list of 250 codes via `GET /api/v2/tech/country-options`. Auto-enables `enrich`. Companies missing a country code are dropped from the page when this filter is active."},{"name":"min_employee_count","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Inclusive lower bound on company employee count. Auto-enables `enrich`. Companies with no employee count are dropped when this filter is active.","title":"Min Employee Count"},"description":"Inclusive lower bound on company employee count. Auto-enables `enrich`. Companies with no employee count are dropped when this filter is active."},{"name":"max_employee_count","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Inclusive upper bound on company employee count. Auto-enables `enrich`. Companies with no employee count are dropped when this filter is active.","title":"Max Employee Count"},"description":"Inclusive upper bound on company employee count. Auto-enables `enrich`. Companies with no employee count are dropped when this filter is active."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/tech/companies/intent-search":{"post":{"tags":["Tech Query"],"summary":"Search Companies By Tech Stack + Activity Intent (async)","description":"Start an async tech + activity-intent search.\n\nFinds companies whose recent job posts mention `tech`, then LLM-verifies\neach company's most recent matching posting against `activity`, early-\nstopping once `limit` companies qualify. Returns a ``job_id``\nimmediately; poll ``GET /api/v2/tech/companies/intent-search/{job_id}``\nfor status and to page through results. Read-only: no signals, no\naccounts, no campaigns, no CRM.\n\nCredits are pre-checked against `limit` here, then charged on the\nactual qualified count when the job completes.","operationId":"tech_intent_search_submit_api_v2_tech_companies_intent_search_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TechIntentSearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TechIntentSubmitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/tech/companies/intent-search/{job_id}":{"get":{"tags":["Tech Query"],"summary":"Poll Tech Intent Search Job (status + results)","description":"Combined status + results for a tech intent-search job.\n\nReturns the job status, manifest, and one page of results in a single\ncall. Check ``status`` for completion (``completed``/``failed``) — NOT\n``next_cursor == null``, since a still-``running`` job can have a null\n``next_cursor`` simply because pages haven't been written yet.","operationId":"tech_intent_search_status_api_v2_tech_companies_intent_search__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Page name to read, e.g. page_0003. Omit for the first page.","title":"Cursor"},"description":"Page name to read, e.g. page_0003. Omit for the first page."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TechIntentJobResponse"}}}},"404":{"description":"Job not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/research/deep":{"post":{"tags":["Deep Research"],"summary":"Deep Research","description":"Answer one or two natural-language research questions about a company.\n\nProvide a `domain` plus at least one of `activity_question`\n(hiring / job-posting intent) or `qualifier_question` (people / org\ncomposition). Both stages run in parallel when both are present.\n\nEach stage returns:\n  - a natural-language answer suitable for inline display,\n  - a boolean verdict,\n  - structured source evidence (job postings or LinkedIn profiles).\n\nThe endpoint is read-only — no accounts, signals, audiences, or\nbackground enrichment jobs are created. Credits are charged once per\nsuccessful call (background-recorded after the response is sent).","operationId":"deep_research_api_v2_research_deep_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepResearchRequest"}}}},"responses":{"200":{"description":"Research findings with natural-language answers and source evidence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepResearchResponse"}}}},"400":{"description":"Request validation error or insufficient credits."},"404":{"description":"Domain could not be resolved to a company in the OpenFunnel companies index."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tam/build":{"post":{"tags":["TAM Builder"],"summary":"Build TAM (async)","description":"Start an async TAM build. Returns a ``job_id`` immediately; poll\n``GET /api/v1/tam/build/{job_id}`` for status + paged results. Charges per unique\ncompany (incrementally, per band) as the build progresses.","operationId":"tam_build_submit_api_v1_tam_build_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TamBuildRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TamBuildSubmitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tam/build/{job_id}":{"get":{"tags":["TAM Builder"],"summary":"Poll TAM build (status + results)","description":"Combined status + manifest + live progress + one page of the TAM master set.","operationId":"tam_build_status_api_v1_tam_build__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Page name to read, e.g. page_0003. Omit for the first page.","title":"Cursor"},"description":"Page name to read, e.g. page_0003. Omit for the first page."},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TamBuildJobResponse"}}}},"404":{"description":"Job not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tam/build/{job_id}/cancel":{"post":{"tags":["TAM Builder"],"summary":"Cancel TAM build","description":"Request cancellation (terminal). For a running/pausing job, flips to a transient\n``cancelling`` state and the worker stops at its next checkpoint; for an already\n``paused`` job (no running worker), settles it to ``cancelled`` directly. Either way\nthe delivered pages stay readable and only the delivered count was charged.\nAlready-terminal jobs return 409.","operationId":"tam_build_cancel_api_v1_tam_build__job_id__cancel_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TamBuildCancelResponse"}}}},"404":{"description":"Job not found"},"409":{"description":"Job already finished"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tam/build/{job_id}/pause":{"post":{"tags":["TAM Builder"],"summary":"Pause TAM build","description":"Request a pause. Flips the job to a transient ``pausing`` state; the worker finishes\nthe in-flight band (writing + checkpointing it) and then settles to ``paused`` —\nresumable via ``POST /api/v1/tam/build/{job_id}/resume``. Idempotent for an\nalready-pausing/paused job; terminal/cancelling jobs return 409.","operationId":"tam_build_pause_api_v1_tam_build__job_id__pause_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TamBuildPauseResponse"}}}},"404":{"description":"Job not found"},"409":{"description":"Job already finished"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tam/build/{job_id}/resume":{"post":{"tags":["TAM Builder"],"summary":"Resume TAM build","description":"Resume a ``paused`` build from its checkpoint. Continues from the next ICP band,\nrebuilding the dedup set from the already-delivered blob pages (so completed bands are\nneither re-delivered nor re-charged). Only a ``paused`` job can resume; a guarded\n``paused -> running`` transition rejects a double-resume with 409.","operationId":"tam_build_resume_api_v1_tam_build__job_id__resume_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TamBuildResumeResponse"}}}},"404":{"description":"Job not found"},"409":{"description":"Job is not paused"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/verticals":{"get":{"tags":["Events"],"summary":"List Verticals","description":"List all user-facing verticals available for event exploration.","operationId":"list_verticals_api_v1_verticals_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVerticalsResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/verticals/{vertical_id}/event-types":{"get":{"tags":["Events"],"summary":"List Event Types For Vertical","description":"List event types within a vertical, including account and people counts.","operationId":"list_vertical_event_types_api_v1_verticals__vertical_id__event_types_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"vertical_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Vertical ID","title":"Vertical Id"},"description":"Vertical ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVerticalEventTypesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts/find":{"get":{"tags":["Events"],"summary":"Find Accounts","description":"Find accounts in a vertical using slim, paginated results.","operationId":"find_accounts_api_v1_accounts_find_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"vertical_id","in":"query","required":true,"schema":{"type":"integer","minimum":1,"description":"Vertical ID to search within","title":"Vertical Id"},"description":"Vertical ID to search within"},{"name":"event_type_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Optional event type ID filter","title":"Event Type Id"},"description":"Optional event type ID filter"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}],"description":"Search by account name or domain","title":"Search"},"description":"Search by account name or domain"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Repeat the query param to include multiple account HQ countries","title":"Country"},"description":"Repeat the query param to include multiple account HQ countries"},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Repeat the query param to include multiple industries","title":"Industry"},"description":"Repeat the query param to include multiple industries"},{"name":"funding_stage","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Repeat the query param to include multiple funding stages","title":"Funding Stage"},"description":"Repeat the query param to include multiple funding stages"},{"name":"employee_count_range","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Repeat the query param to include multiple employee count ranges","title":"Employee Count Range"},"description":"Repeat the query param to include multiple employee count ranges"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"1-indexed page number","default":1,"title":"Page"},"description":"1-indexed page number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum results to return (1-100)","default":20,"title":"Limit"},"description":"Maximum results to return (1-100)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindAccountsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts/search-events":{"get":{"tags":["Events"],"summary":"Search Accounts With Events","description":"Search accounts by name or domain inside a vertical and embed latest events for each match.","operationId":"search_accounts_with_events_api_v1_accounts_search_events_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"vertical_id","in":"query","required":true,"schema":{"type":"integer","minimum":1,"description":"Vertical ID","title":"Vertical Id"},"description":"Vertical ID"},{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"description":"Account name or domain search query","title":"Query"},"description":"Account name or domain search query"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Maximum matching accounts to return (1-50)","default":10,"title":"Limit"},"description":"Maximum matching accounts to return (1-50)"},{"name":"events_limit","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"description":"Maximum latest events to embed per matched account (1-10)","default":5,"title":"Events Limit"},"description":"Maximum latest events to embed per matched account (1-10)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchAccountsWithEventsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/people/find":{"get":{"tags":["Events"],"summary":"Find People","description":"Find people in a vertical using slim, paginated results.","operationId":"find_people_api_v1_people_find_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"vertical_id","in":"query","required":true,"schema":{"type":"integer","minimum":1,"description":"Vertical ID to search within","title":"Vertical Id"},"description":"Vertical ID to search within"},{"name":"event_type_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Optional event type ID filter","title":"Event Type Id"},"description":"Optional event type ID filter"},{"name":"account_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Optional account ID filter","title":"Account Id"},"description":"Optional account ID filter"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}],"description":"Search by person, title, or account","title":"Search"},"description":"Search by person, title, or account"},{"name":"seniority","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Repeat the query param to include multiple seniority values","title":"Seniority"},"description":"Repeat the query param to include multiple seniority values"},{"name":"department","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Repeat the query param to include multiple departments","title":"Department"},"description":"Repeat the query param to include multiple departments"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Repeat the query param to include multiple person countries","title":"Country"},"description":"Repeat the query param to include multiple person countries"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"1-indexed page number","default":1,"title":"Page"},"description":"1-indexed page number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum results to return (1-100)","default":20,"title":"Limit"},"description":"Maximum results to return (1-100)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindPeopleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts/{account_id}":{"get":{"tags":["Events"],"summary":"Get Account Detail In Vertical","description":"Get a slim account object plus related people and events for one vertical.","operationId":"get_account_detail_api_v1_accounts__account_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Account ID","title":"Account Id"},"description":"Account ID"},{"name":"vertical_id","in":"query","required":true,"schema":{"type":"integer","minimum":1,"description":"Vertical ID","title":"Vertical Id"},"description":"Vertical ID"},{"name":"people_limit","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":1,"description":"Maximum number of related people to embed","default":5,"title":"People Limit"},"description":"Maximum number of related people to embed"},{"name":"events_limit","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":1,"description":"Maximum number of related events to embed","default":10,"title":"Events Limit"},"description":"Maximum number of related events to embed"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVerticalAccountDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts/{account_id}/events":{"get":{"tags":["Events"],"summary":"Get Account Events","description":"Get paginated event instances for an account within one vertical.","operationId":"get_account_events_api_v1_accounts__account_id__events_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Account ID","title":"Account Id"},"description":"Account ID"},{"name":"vertical_id","in":"query","required":true,"schema":{"type":"integer","minimum":1,"description":"Vertical ID","title":"Vertical Id"},"description":"Vertical ID"},{"name":"event_type_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Optional event type ID filter","title":"Event Type Id"},"description":"Optional event type ID filter"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"1-indexed page number","default":1,"title":"Page"},"description":"1-indexed page number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum results to return (1-100)","default":20,"title":"Limit"},"description":"Maximum results to return (1-100)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountEventsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/people/{person_id}/events":{"get":{"tags":["Events"],"summary":"Get Person Events","description":"Get paginated event instances for a person within one vertical.","operationId":"get_person_events_api_v1_people__person_id__events_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"person_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Person ID","title":"Person Id"},"description":"Person ID"},{"name":"vertical_id","in":"query","required":true,"schema":{"type":"integer","minimum":1,"description":"Vertical ID","title":"Vertical Id"},"description":"Vertical ID"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"1-indexed page number","default":1,"title":"Page"},"description":"1-indexed page number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum results to return (1-100)","default":20,"title":"Limit"},"description":"Maximum results to return (1-100)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonEventsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccountCRMDetails":{"properties":{"connected_crm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connected Crm"},"crm_account_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Crm Account Id"},"crm_owner_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Crm Owner Id"},"crm_owner_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Crm Owner Email"},"crm_lifecyclestage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Crm Lifecyclestage"},"crm_latest_opportunity":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Crm Latest Opportunity"},"crm_all_opportunities":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Crm All Opportunities"},"crm_last_synced_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Crm Last Synced Date"},"crm_custom_tracked_fields":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Crm Custom Tracked Fields"}},"type":"object","title":"AccountCRMDetails"},"AccountDetailPayload":{"properties":{"account":{"$ref":"#/components/schemas/SlimAccount"},"people":{"items":{"$ref":"#/components/schemas/SlimPerson"},"type":"array","title":"People"},"events":{"items":{"$ref":"#/components/schemas/EventSummary"},"type":"array","title":"Events"}},"type":"object","required":["account"],"title":"AccountDetailPayload"},"AccountEventsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/EventDetail"},"type":"array","title":"Data"},"pagination":{"$ref":"#/components/schemas/PageResponseMetadata"}},"type":"object","required":["data","pagination"],"title":"AccountEventsResponse"},"AccountFilters":{"properties":{"is_imported":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Imported","description":"Filter by whether the account was imported (true) or discovered (false)"},"is_present_in_crm":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Present In Crm","description":"Filter by whether the account exists in the connected CRM (true) or not (false)"},"min_employee_count":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Min Employee Count","description":"Minimum employee count (inclusive). Must be >= 0 and <= max_employee_count if both are provided"},"max_employee_count":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Employee Count","description":"Maximum employee count (inclusive). Must be >= 0 and >= min_employee_count if both are provided"},"funding_stages":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Funding Stages","description":"List of funding stages to filter by (e.g., ['seed', 'series_a', 'series_b'])"},"hq_country_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hq Country Codes","description":"Filter by headquarters country codes (e.g., ['US', 'UK', 'CA'])"},"include_audience_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Include Audience Ids","description":"List of audience IDs to include in the results"},"include_signal_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Include Signal Ids","description":"List of signal IDs to include in the results"}},"type":"object","title":"AccountFilters","description":"Filters for querying accounts.\n\nAll fields are optional. When multiple filters are provided, they are combined with AND logic."},"AccountFirmographics":{"properties":{"employee_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employee Count"},"funding_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Funding Stage"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"hq_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq City"},"hq_region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq Region"},"hq_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq Country"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"revenue_usd":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Revenue Usd"},"linkedin_follower_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Linkedin Follower Count"}},"type":"object","title":"AccountFirmographics"},"AccountInput":{"properties":{"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url"}},"type":"object","title":"AccountInput"},"AccountSearchResult":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"employee_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employee Count"},"funding_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Funding Stage"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"}},"type":"object","required":["id"],"title":"AccountSearchResult","description":"Single account in search results."},"AccountSearchWithEventsItem":{"properties":{"account":{"$ref":"#/components/schemas/SlimAccount"},"events":{"items":{"$ref":"#/components/schemas/EventSummary"},"type":"array","title":"Events"}},"type":"object","required":["account"],"title":"AccountSearchWithEventsItem"},"AccountTraitDetails":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"AccountTraitDetails"},"ActivityFinding":{"properties":{"question":{"type":"string","title":"Question","description":"Echo of the activity question."},"qualified":{"type":"boolean","title":"Qualified","description":"True iff the company's recent job-posting activity matches the question with high enough signal to qualify."},"answer":{"type":"string","title":"Answer","description":"Natural-language answer (1-3 sentences) summarizing the verdict and the key evidence the LLM relied on."},"confidence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Confidence","description":"LLM-reported confidence label, typically 'low' / 'medium' / 'high'. May be empty when the qualifier returned a structured-recipe verdict without an explicit confidence."},"jobs_searched":{"type":"integer","title":"Jobs Searched","description":"Number of recent job postings considered before LLM relevance scoring."},"jobs_matched":{"type":"integer","title":"Jobs Matched","description":"Number of job postings the LLM judged relevant."},"sources":{"items":{"$ref":"#/components/schemas/JobSource"},"type":"array","title":"Sources","description":"Up to ~10 matching job postings used as evidence, ordered by recency."},"elapsed_ms":{"type":"integer","title":"Elapsed Ms","description":"Stage latency in milliseconds."},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error","description":"Set when the stage failed mid-flight (e.g. company missing from the jobs index). `qualified` is False and `sources` is empty in this case."}},"type":"object","required":["question","qualified","answer","jobs_searched","jobs_matched","elapsed_ms"],"title":"ActivityFinding","description":"Result of the activity-question stage."},"AgentSignUpRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"Email address to send the verification code to"}},"type":"object","required":["email"],"title":"AgentSignUpRequest"},"AgentSignUpResponse":{"properties":{"email":{"type":"string","title":"Email"},"message":{"type":"string","title":"Message"}},"type":"object","required":["email","message"],"title":"AgentSignUpResponse"},"AgentVerifyRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"Email address used during sign-up"},"otp_code":{"type":"string","maxLength":6,"minLength":6,"title":"Otp Code","description":"6-digit verification code sent to your email"}},"type":"object","required":["email","otp_code"],"title":"AgentVerifyRequest"},"AgentVerifyResponse":{"properties":{"email":{"type":"string","title":"Email"},"api_key":{"type":"string","title":"Api Key"},"is_new_user":{"type":"boolean","title":"Is New User"}},"type":"object","required":["email","api_key","is_new_user"],"title":"AgentVerifyResponse"},"AlertInsightItem":{"properties":{"insight_id":{"type":"integer","title":"Insight Id"},"account_id":{"type":"integer","title":"Account Id"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name"},"account_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Domain"},"alert_text":{"type":"string","title":"Alert Text"},"alert_type":{"type":"string","title":"Alert Type"},"alert_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Date"},"sentiment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sentiment"},"is_net_new_account":{"type":"boolean","title":"Is Net New Account","description":"True if this account had its first-ever insight within the requested time window","default":false}},"type":"object","required":["insight_id","account_id","alert_text","alert_type"],"title":"AlertInsightItem","description":"Single insight within an alert notification."},"AlertItem":{"properties":{"alert_id":{"type":"integer","title":"Alert Id"},"view_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"View Name"},"saved_view_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Saved View Id"},"notification_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notification Type"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"recipient_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Email"},"slack_channel_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slack Channel Id"},"insight_count":{"type":"integer","title":"Insight Count","default":0},"account_count":{"type":"integer","title":"Account Count","default":0},"matched_account_ids":{"items":{"type":"integer"},"type":"array","title":"Matched Account Ids"},"insights":{"items":{"$ref":"#/components/schemas/AlertInsightItem"},"type":"array","title":"Insights"}},"type":"object","required":["alert_id"],"title":"AlertItem","description":"Single notification alert with its insights."},"AmplemarketSequenceOption":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["id"],"title":"AmplemarketSequenceOption","description":"Amplemarket sequence people can be added to."},"Audience":{"properties":{"audience_id":{"type":"integer","title":"Audience Id"},"audience_name":{"type":"string","title":"Audience Name"},"audience_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience Type"}},"type":"object","required":["audience_id","audience_name"],"title":"Audience"},"BulkAccount":{"properties":{"id":{"type":"integer","title":"Id"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"}},"type":"object","required":["id"],"title":"BulkAccount"},"BulkLookalikeCancelResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Async job id"},"status":{"type":"string","title":"Status","description":"Always `cancelling` — the cancel request was accepted","default":"cancelling"},"message":{"type":"string","title":"Message","description":"Next step: where to fetch the processed companies"}},"type":"object","required":["job_id","message"],"title":"BulkLookalikeCancelResponse","description":"Acknowledgement returned by the bulk-lookalike cancel endpoint.\n\nCancellation is asynchronous: the row is flipped to a transient `cancelling`\nstate and the worker stops at its next checkpoint. This response only\nacknowledges the request — poll the GET endpoint for the final `cancelled`\nstate and the companies processed before the cancel."},"BulkLookalikeJobResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Async job id"},"status":{"type":"string","title":"Status","description":"pending | running | cancelling | cancelled | completed | failed"},"manifest":{"anyOf":[{"$ref":"#/components/schemas/BulkLookalikeManifest"},{"type":"null"}],"description":"Result-page pointer + metadata"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Failure reason when status == failed"},"rows":{"items":{"$ref":"#/components/schemas/InstantTraitSearchResult"},"type":"array","title":"Rows","description":"Companies in the requested page"},"page":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page","description":"Name of the page returned, e.g. page_0003"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Cursor for the next page; null when this is the last available page"},"count":{"type":"integer","title":"Count","description":"Number of rows in this page","default":0},"processed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Processed","description":"Live progress: qualified companies delivered so far toward the requested limit. Null until the job starts producing progress."},"progress_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Progress Message","description":"Coarse stage label, e.g. `retrieving_companies` / `qualifying_companies` / `reranking_companies` / `completed` / `cancelled`."}},"type":"object","required":["job_id","status"],"title":"BulkLookalikeJobResponse","description":"Combined status + live progress + one page of results for a bulk lookalike job.\n\nA single GET returns progress (`processed` + `progress_message`) and data.\nWhile `status` is `running`/`cancelling` this returns whatever pages have\nlanded so far; on `completed` the manifest is fully populated, and on\n`cancelled` it points at the partial pages delivered before the cancel. Check\n`status` (not `next_cursor == null`) to know the job is done — a running job\ncan have a null `next_cursor` simply because later pages have not been written\nyet."},"BulkLookalikeManifest":{"properties":{"pages":{"type":"integer","title":"Pages","description":"Number of NDJSON page files written","default":0},"page_size":{"type":"integer","title":"Page Size","description":"Max rows per page","default":0},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count","description":"Total result rows (null on partial/failed jobs)"},"rerank_degraded":{"type":"boolean","title":"Rerank Degraded","description":"True if a rerank batch fell back to retrieval order (results partially raw)","default":false},"partial":{"type":"boolean","title":"Partial","description":"True if the job did not finish in full -- failed or cancelled after writing some pages","default":false},"stop_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stop Reason","description":"Set on a cancelled job: `cancelled` (or `deadline`); null otherwise"},"search_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Type","description":"Retrieval strategy that ran"},"derived_query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Derived Query","description":"LLM-synthesized trait when seed_domains was used"},"resolved_seed_domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Resolved Seed Domains","description":"Seed inputs that resolved"},"unresolved_seed_domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Unresolved Seed Domains","description":"Seed inputs that did not resolve"},"credits_consumed":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credits Consumed","description":"Credits charged for the completed job"}},"type":"object","title":"BulkLookalikeManifest","description":"Summary of a completed (or partial) bulk lookalike job (stored on the\nasync_jobs row, not the payload). Internal storage pointers (backend /\ncontainer / blob prefix) are intentionally not exposed."},"BulkLookalikeSearchRequest":{"properties":{"query":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Query","description":"Describe the kinds of companies you want to find. Required unless `seed_domains` is provided. When both are given, the query is used as a must-have angle when synthesizing a trait from the seeds.","examples":["B2B customer support software","AI meeting assistants","DevOps monitoring platforms"]},"seed_domains":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":10},{"type":"null"}],"title":"Seed Domains","description":"Up to 10 seed company websites. When provided, OpenFunnel resolves them against the companies index, pulls their descriptions, and uses an LLM to synthesize the trait query for you. Combine with `query` to add a must-have angle. Repeat the parameter to send multiple values.","examples":[["stripe.com","adyen.com","checkout.com"]]},"limit":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Limit","description":"Maximum number of companies to return (1-10000). Runs as an async job.","default":100},"min_employees":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Min Employees","description":"Minimum employee count (inclusive)"},"max_employees":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Employees","description":"Maximum employee count (inclusive)"},"funding_stages":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Funding Stages","description":"Funding stages to include. Allowed values: Pre-Seed, Seed, Series A, Series B, Series C, Series D, Series E, Series F, Series G, Series H, Acquired, Private, Public"},"locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Locations","description":"Headquarters country filters using supported lowercase country codes (for example: us, uk, ca, in)."},"search_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Type","description":"Retrieval strategy. `semantic` (default) uses vector search + LLM rerank. `agentic` uses an LLM-generated OpenSearch query against the companies index plus an LLM batch precision check.","default":"semantic","examples":["semantic","agentic"]}},"type":"object","title":"BulkLookalikeSearchRequest","description":"Request body for the async bulk lookalike endpoint.\n\nIdentical to ``FreeLookalikeSearchRequest`` (inherits every field validator\nand the query/seeds + employee-range rules) except the result limit is\nraised from 100 to 10000. The worker passes ``limit`` straight through as the\npipeline's ``top_k``; large requests page the retriever to assemble a big\nenough candidate pool. Sent as a JSON POST body (not query params).","examples":[{"limit":2000,"query":"B2B observability platforms","search_type":"semantic"},{"limit":10000,"seed_domains":["stripe.com","adyen.com"]}]},"BulkLookalikeSubmitResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Async job id; poll for status + results"},"status":{"type":"string","title":"Status","description":"Job status at submit time","default":"pending"},"message":{"type":"string","title":"Message","description":"Human-readable next-step hint"},"requested_top_k":{"type":"integer","title":"Requested Top K","description":"The requested result limit"}},"type":"object","required":["job_id","message","requested_top_k"],"title":"BulkLookalikeSubmitResponse","description":"Returned immediately when an async bulk lookalike job is submitted."},"CompaniesResponse":{"properties":{"tech":{"type":"string","title":"Tech","description":"The technology phrase searched."},"variations":{"items":{"type":"string"},"type":"array","title":"Variations","description":"Alternate phrasings that were OR-matched alongside `tech`."},"lookback_days":{"type":"integer","title":"Lookback Days","description":"Lookback window applied to the search, in days."},"page":{"type":"integer","title":"Page","description":"1-indexed page number returned."},"page_size":{"type":"integer","title":"Page Size","description":"Items per page. Fixed at 50."},"total_results":{"type":"integer","title":"Total Results","description":"Size of the addressable result set this page slices from. Without firmographic filters: bounded by the 50,000-result sanity cap (1000 pages × 50). With filters: equals the size of the filtered set after firmographic hydration, which is what `has_more` and page indexing are computed against."},"has_more":{"type":"boolean","title":"Has More","description":"True when at least one more page is available (`page * page_size < total_results`). Loop while this is true to walk the full result set."},"total_companies_matched":{"type":"integer","title":"Total Companies Matched","description":"Approximate total distinct companies whose recent job postings match the search, BEFORE firmographic filters are applied. Compare with `total_results` to see how aggressively your filters narrowed the result."},"filters_applied":{"$ref":"#/components/schemas/FiltersApplied","description":"Echo of the firmographic filters that produced this page. When any of these are set the page is guaranteed to return up to 50 filter-matching hits (not 50 raw hits trimmed); walk further pages with `has_more`."},"companies":{"items":{"$ref":"#/components/schemas/CompanyHit"},"type":"array","title":"Companies","description":"The ranked companies on this page."},"credits_consumed":{"type":"number","title":"Credits Consumed","description":"Credits charged for this response. Computed as `companies_returned × per-company-cost` (where the per-company-cost depends on whether firmographics were included). The charge is recorded in the background after the response is sent.","default":0},"latency_ms":{"type":"integer","title":"Latency Ms","description":"End-to-end request latency, in ms.","default":0}},"type":"object","required":["tech","lookback_days","page","page_size","total_results","has_more","total_companies_matched","companies"],"title":"CompaniesResponse"},"CompanyEvidence":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"created":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created"},"snippet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snippet"}},"type":"object","title":"CompanyEvidence"},"CompanyHit":{"properties":{"company_slug":{"type":"string","title":"Company Slug","description":"LinkedIn company slug (lowercased), e.g. 'stripe', 'snowflake-inc'."},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"Display name. When `enrich=true` this is the canonical company name; otherwise it's the name as it appeared on the most recent matching job posting."},"post_count":{"type":"integer","title":"Post Count","description":"Number of matching job postings within the lookback window."},"first_posted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Posted At","description":"ISO timestamp of the earliest matching posting."},"last_posted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Posted At","description":"ISO timestamp of the most recent matching posting — useful for detecting stale vs active hiring."},"evidence":{"anyOf":[{"$ref":"#/components/schemas/CompanyEvidence"},{"type":"null"}]},"enriched":{"type":"boolean","title":"Enriched","description":"True iff this hit carries firmographic data. False if `enrich=false` was passed, or if no firmographic record was found for this company.","default":false},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website","description":"Primary company website (domain)."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"Canonical LinkedIn company page URL."},"linkedin_org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Org Id","description":"Internal LinkedIn organization ID for the company."},"linkedin_follower_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Linkedin Follower Count","description":"LinkedIn follower count at last refresh."},"employee_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employee Count","description":"Estimated current employee count."},"industries":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Industries","description":"Industry tags associated with the company."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Short company description, truncated to 500 characters."},"hq_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq City","description":"HQ city."},"hq_region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq Region","description":"HQ state / region."},"hq_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq Country","description":"HQ country English name. Use `hq_country_code` for filtering / equality checks."},"hq_country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq Country Code","description":"ISO 3166-1 alpha-3 (USA, GBR, IND, ...). The reliable, normalized country source — use this for filtering rather than `hq_country`."},"funding_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Funding Stage","description":"Normalized stage label, e.g. 'Seed', 'Series A', 'Series E', 'Public', 'Acquired', 'No Funding Yet'."},"total_funding_usd":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Funding Usd","description":"Cumulative funding raised, in USD."},"latest_funding_usd":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latest Funding Usd","description":"Size of the most recent funding round, in USD."},"revenue_usd":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Revenue Usd","description":"Estimated annual revenue, in USD."}},"type":"object","required":["company_slug","post_count"],"title":"CompanyHit"},"CompanyInfo":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Canonical company name."},"domain":{"type":"string","title":"Domain","description":"Echo of the requested domain (normalized)."},"linkedin_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Slug","description":"LinkedIn company slug (lowercased)."},"employee_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employee Count","description":"Estimated current employee count, if known."},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage","description":"Funding stage label (e.g. 'Series B', 'Public', 'Acquired')."},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry","description":"Primary industry tag."},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location","description":"HQ city/region/country string."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Short company description from the companies index, truncated."}},"type":"object","required":["domain"],"title":"CompanyInfo","description":"Resolved firmographic context for the researched company."},"CompanyLookupInput":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url"}},"type":"object","title":"CompanyLookupInput","description":"Echo of the identifiers the caller supplied for this lookup."},"CompanyLookupItem":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Name","description":"Company name. Fuzzy — resolves to ranked candidates, not a single match."},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain","description":"Company website/domain (e.g. 'stripe.com'). Matched on the primary domain."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"Company LinkedIn URL (e.g. 'https://www.linkedin.com/company/stripe')."}},"type":"object","title":"CompanyLookupItem","description":"One company to resolve, identified by any subset of name/domain/linkedin_url."},"CompanyLookupItemResult":{"properties":{"input":{"$ref":"#/components/schemas/CompanyLookupInput","description":"The identifiers supplied for this item"},"status":{"type":"string","title":"Status","description":"'resolved' if any match, else 'not_found'"},"matches":{"items":{"$ref":"#/components/schemas/CompanyLookupMatch"},"type":"array","title":"Matches","description":"Matched companies, deduped by company_id. Exact (domain/linkedin) matches may include multiple docs that share an identifier (e.g. parent + satellite). Name matches are the top ranked candidates."}},"type":"object","required":["input","status"],"title":"CompanyLookupItemResult","description":"Resolution result for one input company."},"CompanyLookupMatch":{"properties":{"company_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Id","description":"Canonical company id (reusable as a lookalike seed/exclusion)"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Company name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain","description":"Primary domain"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"Company LinkedIn URL"},"linkedin_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Slug","description":"Company LinkedIn slug"},"employee_count_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employee Count Min","description":"Estimated employee range (lower)"},"employee_count_max":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employee Count Max","description":"Estimated employee range (upper)"},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage","description":"Funding stage"},"industries":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industries","description":"Industries (comma-separated)"},"location_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location City","description":"HQ city"},"location_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Country","description":"HQ country"},"location_country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Country Code","description":"HQ country code"},"matched_on":{"type":"string","title":"Matched On","description":"Which identifier matched: 'linkedin', 'domain', or 'name'"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score","description":"Relevance score (0-1) for name matches; null for exact domain/linkedin matches."}},"type":"object","required":["matched_on"],"title":"CompanyLookupMatch","description":"A company matched against one lookup item."},"CompanyLookupRequest":{"properties":{"companies":{"items":{"$ref":"#/components/schemas/CompanyLookupItem"},"type":"array","maxItems":100,"minItems":1,"title":"Companies","description":"1-100 companies to resolve."}},"type":"object","required":["companies"],"title":"CompanyLookupRequest","description":"Batch company lookup: resolve up to 100 companies by identifier.","examples":[{"companies":[{"domain":"stripe.com"},{"linkedin_url":"https://www.linkedin.com/company/adyen"},{"name":"Checkout"},{"domain":"plaid.com","name":"Plaid"}]}]},"CompanyLookupResponse":{"properties":{"results":{"items":{"$ref":"#/components/schemas/CompanyLookupItemResult"},"type":"array","title":"Results","description":"One result per input company, in request order"}},"type":"object","required":["results"],"title":"CompanyLookupResponse","description":"Response for the batch company lookup endpoint (one result per input, in order)."},"CompanySocialListeningRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"topic":{"type":"string","title":"Topic","description":"Topic to listen for (e.g. 'AI governance', 'warehouse automation')"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"type":"integer","title":"Icp Id","description":"ICP ID for company filtering (required)"},"timeframe":{"anyOf":[{"type":"integer","maximum":180.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Lookback window in days","default":90},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","topic","icp_id"],"title":"CompanySocialListeningRequest","description":"Companies mentioning [topic] on social"},"CompetitorActivityRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"linkedin_url":{"type":"string","title":"Linkedin Url","description":"LinkedIn profile URL of competitor salesperson to monitor"},"timeframe":{"anyOf":[{"type":"integer","maximum":180.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Time limit in days (1-180)","default":7},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID to use for filtering"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results (default: false, runs once)","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for auto-adding discovered accounts (default: '<signal name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<signal name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit to enforce on this signal. Signal will stop once max_credit_limit is hit"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM. New/unassigned accounts are created and assigned to you; existing accounts get signals enriched. Ownership is never changed.","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Automatically enrich discovered people with work emails. Uses email enrichment credits.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder in addition to fast enrichment. Consumes OpenFunnel credits","default":false}},"type":"object","required":["name","linkedin_url"],"title":"CompetitorActivityRequest"},"CompetitorEngagementRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"linkedin_url":{"type":"string","title":"Linkedin Url","description":"LinkedIn profile URL to monitor for engagement"},"timeframe":{"anyOf":[{"type":"integer","maximum":180.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Time limit in days (1-180)","default":7},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID to use for filtering"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results (default: false, runs once)","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for auto-adding discovered accounts (default: '<signal name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<signal name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit to enforce on this signal. Signal will stop once max_credit_limit is hit"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM. New/unassigned accounts are created and assigned to you; existing accounts get signals enriched. Ownership is never changed.","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Automatically enrich discovered people with work emails. Uses email enrichment credits.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder in addition to fast enrichment. Consumes OpenFunnel credits","default":false}},"type":"object","required":["name","linkedin_url"],"title":"CompetitorEngagementRequest"},"CountryOption":{"properties":{"code":{"type":"string","title":"Code","description":"ISO 3166-1 alpha-3"},"name":{"type":"string","title":"Name","description":"Canonical English name"}},"type":"object","required":["code","name"],"title":"CountryOption"},"CountryOptionsResponse":{"properties":{"total":{"type":"integer","title":"Total"},"countries":{"items":{"$ref":"#/components/schemas/CountryOption"},"type":"array","title":"Countries"}},"type":"object","required":["total","countries"],"title":"CountryOptionsResponse"},"CreateAccountAudienceRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name for the new audience"},"account_ids":{"items":{"type":"integer"},"type":"array","title":"Account Ids","description":"List of account IDs to include"}},"type":"object","required":["name","account_ids"],"title":"CreateAccountAudienceRequest"},"CreateAccountAudienceResponse":{"properties":{"audience_id":{"type":"integer","title":"Audience Id"},"audience_name":{"type":"string","title":"Audience Name"},"total_accounts":{"type":"integer","title":"Total Accounts"}},"type":"object","required":["audience_id","audience_name","total_accounts"],"title":"CreateAccountAudienceResponse"},"CreateICPRequest":{"properties":{"name":{"type":"string","title":"Name"},"target_roles":{"items":{"type":"string"},"type":"array","title":"Target Roles"},"employee_ranges":{"items":{"type":"string"},"type":"array","title":"Employee Ranges"},"min_funding":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Min Funding"},"max_funding":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Max Funding"},"employee_count_funding_config":{"anyOf":[{"type":"string","enum":["AND","OR"]},{"type":"null"}],"title":"Employee Count Funding Config"},"location":{"items":{"type":"string"},"type":"array","title":"Location"},"sub_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sub Locations"},"people_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"People Locations"},"people_sub_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"People Sub Locations"}},"type":"object","required":["name","target_roles","employee_ranges","location"],"title":"CreateICPRequest"},"CreateICPResponse":{"properties":{"icp":{"$ref":"#/components/schemas/ICPItem"}},"type":"object","required":["icp"],"title":"CreateICPResponse"},"CreateViewRequest":{"properties":{"name":{"type":"string","minLength":1,"title":"Name","description":"View name (unique per user)"},"view_type":{"type":"string","enum":["accounts","people"],"title":"View Type","description":"View type. 'accounts' (default) filters companies; its only actions are Slack / webhook / CRM assignment. 'people' filters individuals and supports ONLY Amplemarket sequencing, and is immutable after creation.","default":"accounts"},"filters":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Filters","description":"View filters. For an 'accounts' view: the field names from GET /api/v2/account/filters (e.g. funding_stage_include, country_include, signal_include). For a 'people' view: the People filter fields from GET /api/v1/people/filters (e.g. seniority_include, department_include, country_include, signal_include, acct_industry_include, and their *_exclude counterparts). Omit to match everything."},"is_default":{"type":"boolean","title":"Is Default","description":"Set this view as the default view (clears any previous default of the same view_type)","default":false},"slack_notifications":{"anyOf":[{"$ref":"#/components/schemas/ViewSlackConfig"},{"type":"null"}]},"webhook_notifications":{"anyOf":[{"$ref":"#/components/schemas/ViewWebhookConfig"},{"type":"null"}]},"crm_assignment":{"anyOf":[{"$ref":"#/components/schemas/ViewCrmAssignment"},{"type":"null"}]},"amplemarket_sequencing":{"anyOf":[{"$ref":"#/components/schemas/ViewAmplemarketConfig"},{"type":"null"}]}},"type":"object","required":["name"],"title":"CreateViewRequest","description":"Request to create a saved view (Live View)."},"CreditBalanceResponse":{"properties":{"total_credits":{"type":"number","title":"Total Credits"},"credits_used":{"type":"number","title":"Credits Used"},"credits_left":{"type":"number","title":"Credits Left"}},"type":"object","required":["total_credits","credits_used","credits_left"],"title":"CreditBalanceResponse"},"CrmUserOption":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["id"],"title":"CrmUserOption","description":"CRM user that can be assigned accounts."},"DeepResearchRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Company website domain to research (e.g. 'stripe.com'). Protocol and `www.` prefixes are stripped automatically. The domain is resolved to a LinkedIn org via the internal companies index before either stage runs.","examples":["stripe.com","notion.so","databricks.com"]},"activity_question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity Question","description":"Natural-language description of the hiring activity to look for in the company's recent job postings (e.g. 'rapidly growing their SDR team', 'hiring senior platform engineers in Europe', 'building out an AI / ML team from scratch'). Pass `null` or omit to skip this stage.","examples":["rapidly growing their SDR team","building out an AI / ML platform team"]},"qualifier_question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qualifier Question","description":"Natural-language criteria about the company's team / org structure (e.g. 'has at least 5 SDRs and a Sales Director', 'employs Kubernetes-experienced platform engineers', 'has a dedicated security team'). Evaluated against precomputed LinkedIn-profile classifications. Pass `null` or omit to skip this stage.","examples":["Has at least 5 SDRs/BDRs and a Sales Director","Has a dedicated AppSec / product-security team"]},"timeframe_days":{"type":"integer","maximum":365.0,"minimum":1.0,"title":"Timeframe Days","description":"Lookback window (days) used by the activity stage. Has no effect when `activity_question` is omitted.","default":90},"max_jobs_to_check":{"type":"integer","maximum":200.0,"minimum":1.0,"title":"Max Jobs To Check","description":"Upper bound on the number of recent job postings the activity stage scores with the LLM relevance pass. Higher values raise recall but add latency / token cost (each job is judged by an LLM call). Default 25 is tuned for interactive use; bump it for batch / data-extraction workflows where you want maximum recall. Has no effect when `activity_question` is omitted.","default":25}},"type":"object","required":["domain"],"title":"DeepResearchRequest","description":"Inputs for a single Deep Research call.\n\nProvide a `domain` plus at least one of `activity_question` or\n`qualifier_question`. Both stages run in parallel when both are\npresent.","examples":[{"activity_question":"rapidly growing their SDR team","domain":"stripe.com","max_jobs_to_check":50,"qualifier_question":"Has at least 5 SDRs/BDRs and a Sales Director","timeframe_days":90},{"domain":"notion.so","qualifier_question":"Has a dedicated AppSec / product-security team"},{"activity_question":"hiring senior platform engineers in Europe","domain":"databricks.com","timeframe_days":60}]},"DeepResearchResponse":{"properties":{"domain":{"type":"string","title":"Domain","description":"Echo of the requested domain (normalized)."},"company":{"anyOf":[{"$ref":"#/components/schemas/CompanyInfo"},{"type":"null"}],"description":"Resolved firmographic context for the company. Null only if the domain could not be resolved (in which case the endpoint returns 404 instead)."},"activity":{"anyOf":[{"$ref":"#/components/schemas/ActivityFinding"},{"type":"null"}],"description":"Findings for the activity question. Null when `activity_question` was not provided."},"qualifier":{"anyOf":[{"$ref":"#/components/schemas/QualifierFinding"},{"type":"null"}],"description":"Findings for the qualifier question. Null when `qualifier_question` was not provided."},"credits_consumed":{"type":"number","title":"Credits Consumed","description":"Credits charged for this call. Charge is recorded in the background after the response is sent. 0 when the call failed before producing any findings.","default":0},"latency_ms":{"type":"integer","title":"Latency Ms","description":"End-to-end request latency in milliseconds."}},"type":"object","required":["domain","latency_ms"],"title":"DeepResearchResponse","description":"Top-level Deep Research response."},"DeleteSignalError":{"properties":{"signal_id":{"type":"integer","title":"Signal Id"},"error_code":{"type":"string","title":"Error Code","description":"Machine-readable error code (e.g., SIGNAL_NOT_FOUND, NOT_RESOURCE_OWNER)"},"message":{"type":"string","title":"Message","description":"Human-readable error message"}},"type":"object","required":["signal_id","error_code","message"],"title":"DeleteSignalError","description":"Structured per-ID failure for the batch delete signals endpoint."},"DeleteSignalsResponse":{"properties":{"status":{"type":"string","title":"Status","description":"`accepted` = all deletions queued, `partial` = some queued and some failed, `failed` = nothing queued."},"queued_signal_ids":{"items":{"type":"integer"},"type":"array","title":"Queued Signal Ids","description":"Signal IDs queued for background deletion."},"errors":{"items":{"$ref":"#/components/schemas/DeleteSignalError"},"type":"array","title":"Errors","description":"Per-ID failures for signals that could not be deleted."},"message":{"type":"string","title":"Message"}},"type":"object","required":["status","message"],"title":"DeleteSignalsResponse","description":"Per-ID outcome breakdown for the batch delete signals endpoint."},"DeleteViewV1Response":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"deleted_notification_logs":{"type":"integer","title":"Deleted Notification Logs","default":0}},"type":"object","required":["success","message"],"title":"DeleteViewV1Response","description":"Response for the delete view endpoint."},"DepartmentFilter":{"type":"string","enum":["ENGINEERING","PRODUCT","DATA","SALES","MARKETING","OPERATIONS","FINANCE","HR","LEGAL","EXECUTIVE","CUSTOMER_SUCCESS","SECURITY","IT","OTHER"],"title":"DepartmentFilter","description":"Job department/function categories for people discovery filtering."},"DeprecatedSignalResponse":{"properties":{"detail":{"type":"string","title":"Detail","description":"Human-readable deprecation message."},"deprecated":{"type":"boolean","title":"Deprecated","description":"Always true for deprecated endpoints.","default":true},"replacement_docs":{"items":{"type":"string"},"type":"array","title":"Replacement Docs","description":"Docs for the replacement signal APIs to migrate to."}},"type":"object","required":["detail","replacement_docs"],"title":"DeprecatedSignalResponse","description":"Body returned by deprecated deploy endpoints (HTTP 410 Gone)."},"EnrichAccountBatchPollResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Job ID"},"status":{"type":"string","title":"Status","description":"'pending', 'running', 'completed', or 'failed'"},"progress":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Progress","description":"Progress info: {total, completed, new_accounts, updated_accounts}"},"result":{"anyOf":[{"items":{"$ref":"#/components/schemas/EnrichAccountBatchResult"},"type":"array"},{"type":"null"}],"title":"Result","description":"Per-domain results — available when status is 'completed'"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Error details — present only when status is 'failed'"}},"type":"object","required":["job_id","status"],"title":"EnrichAccountBatchPollResponse","description":"Response from polling a batch account enrichment job."},"EnrichAccountBatchRequest":{"properties":{"domains":{"items":{"type":"string"},"type":"array","maxItems":500,"minItems":1,"title":"Domains","description":"List of company domains to enrich (max 500 per request)","examples":[["stripe.com","notion.so","databricks.com"]]}},"type":"object","required":["domains"],"title":"EnrichAccountBatchRequest","description":"Request to enrich multiple company accounts with firmographic data in one batch.\n\nStarts an async job. Poll ``GET /api/v1/enrich/accounts/{job_id}`` for results.","examples":[{"domains":["stripe.com","notion.so","databricks.com"]}]},"EnrichAccountBatchResult":{"properties":{"domain":{"type":"string","title":"Domain","description":"Input domain"},"account_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Account Id","description":"Account ID (None if failed)"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Company name"},"is_new_account":{"type":"boolean","title":"Is New Account","description":"True if a new account was created","default":false},"fields_updated":{"items":{"type":"string"},"type":"array","title":"Fields Updated","description":"Firmographic fields that were updated"},"status":{"type":"string","title":"Status","description":"'enriched' — existing account updated, 'unchanged' — existing account with no new data, 'created' — new account created, 'failed' — error"}},"type":"object","required":["domain","status"],"title":"EnrichAccountBatchResult","description":"Enrichment result for a single account in a batch."},"EnrichAccountBatchStartResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Unique job ID for polling via GET /api/v1/enrich/accounts/{job_id}"},"status":{"type":"string","title":"Status","description":"Job status — always 'pending' at creation","default":"pending"},"message":{"type":"string","title":"Message","description":"Human-readable status message"},"total_accounts":{"type":"integer","title":"Total Accounts","description":"Number of unique domains queued for enrichment"}},"type":"object","required":["job_id","message","total_accounts"],"title":"EnrichAccountBatchStartResponse","description":"Response from starting a batch account enrichment job."},"EnrichAccountRequest":{"properties":{"domain":{"type":"string","maxLength":200,"minLength":1,"title":"Domain","description":"Company website domain (e.g., 'stripe.com', 'notion.so')","examples":["stripe.com","notion.so","databricks.com"]}},"type":"object","required":["domain"],"title":"EnrichAccountRequest","description":"Request to enrich a company account with firmographic data.\n\nProvide a company domain to look up firmographic data (employee count,\nfunding stage, HQ location, industry, revenue, LinkedIn followers, description).\nIf the account already exists, missing fields are backfilled.\nIf not, a new account is created with all available data.","examples":[{"domain":"stripe.com"},{"domain":"notion.so"}]},"EnrichAccountResponse":{"properties":{"account_id":{"type":"integer","title":"Account Id","description":"Account ID in OpenFunnel"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Company name"},"domain":{"type":"string","title":"Domain","description":"Normalized company domain"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn company page URL"},"is_new_account":{"type":"boolean","title":"Is New Account","description":"True if a new account was created, False if an existing account was updated"},"firmographics":{"$ref":"#/components/schemas/AccountFirmographics","description":"Firmographic data from enrichment"},"fields_updated":{"items":{"type":"string"},"type":"array","title":"Fields Updated","description":"List of firmographic field names that were newly populated. Empty if all fields were already set or no data was found. Possible values: employee_count, funding_stage, location, hq_city, hq_region, hq_country, industry, revenue_usd, linkedin_follower_count, description"}},"type":"object","required":["account_id","domain","is_new_account","firmographics"],"title":"EnrichAccountResponse","description":"Response from account firmographic enrichment.\n\nContains the enriched account with all available firmographic data.\n``fields_updated`` lists which fields were newly populated (empty if the account\nalready had all data or no data was found for this domain)."},"EnrichPeopleCreditsUsed":{"properties":{"emails":{"type":"number","title":"Emails","description":"Credits consumed for email enrichment","default":0},"phones":{"type":"number","title":"Phones","description":"Credits consumed for phone enrichment","default":0},"total":{"type":"number","title":"Total","description":"Total credits consumed","default":0}},"type":"object","title":"EnrichPeopleCreditsUsed","description":"Credits consumed by a people enrichment job.\n\nCredits are charged per successful email or phone found, not per lookup attempt."},"EnrichPeoplePollResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Job ID"},"status":{"type":"string","title":"Status","description":"'pending', 'running', 'completed', or 'failed'"},"progress":{"anyOf":[{"$ref":"#/components/schemas/EnrichPeopleProgress"},{"type":"null"}],"description":"Progress info — available when status is 'running' or 'completed'"},"credits_used":{"anyOf":[{"$ref":"#/components/schemas/EnrichPeopleCreditsUsed"},{"type":"null"}],"description":"Credits consumed — available when status is 'completed'"},"result":{"anyOf":[{"items":{"$ref":"#/components/schemas/EnrichPersonResult"},"type":"array"},{"type":"null"}],"title":"Result","description":"Per-person enrichment results — available when status is 'completed'"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Error details — present only when status is 'failed'"}},"type":"object","required":["job_id","status"],"title":"EnrichPeoplePollResponse","description":"Response from polling a people enrichment job.\n\n**Status values:**\n- ``pending`` — Job created, not yet started\n- ``running`` — Enrichment in progress\n- ``completed`` — All done; ``result`` contains per-person data\n- ``failed`` — Job failed; check ``error_message``\n\n**Polling recommendation:** Every 3-5 seconds. Typical enrichment takes\n~2 seconds per person due to upstream API rate limiting."},"EnrichPeopleProgress":{"properties":{"total":{"type":"integer","title":"Total","description":"Total people in the job"},"completed":{"type":"integer","title":"Completed","description":"People processed so far","default":0},"emails_found":{"type":"integer","title":"Emails Found","description":"Work emails successfully found","default":0},"phones_found":{"type":"integer","title":"Phones Found","description":"Phone numbers successfully found","default":0}},"type":"object","required":["total"],"title":"EnrichPeopleProgress","description":"Progress tracking for a people enrichment job."},"EnrichPeopleRequest":{"properties":{"people_ids":{"items":{"type":"integer"},"type":"array","maxItems":500,"minItems":1,"title":"People Ids","description":"List of people IDs to enrich (max 500 per request)"},"enrich_emails":{"type":"boolean","title":"Enrich Emails","description":"Whether to enrich with work email addresses","default":true},"enrich_phones":{"type":"boolean","title":"Enrich Phones","description":"Whether to enrich with phone numbers (additional credits per phone found)","default":false}},"type":"object","required":["people_ids"],"title":"EnrichPeopleRequest","description":"Request to enrich people with email addresses and/or phone numbers.\n\nStarts an async enrichment job. Each person is looked up via their LinkedIn URL.\nCredits are charged per successful email or phone found.\n\nPoll the returned job_id via ``GET /api/v1/enrich/people/{job_id}`` for results.","examples":[{"enrich_emails":true,"enrich_phones":false,"people_ids":[101,102,103]},{"enrich_emails":true,"enrich_phones":true,"people_ids":[201,202]}]},"EnrichPeopleStartResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Unique job ID for polling status via GET /api/v1/enrich/people/{job_id}"},"status":{"type":"string","title":"Status","description":"Job status — always 'pending' at creation","default":"pending"},"message":{"type":"string","title":"Message","description":"Human-readable status message"},"total_people":{"type":"integer","title":"Total People","description":"Number of people queued for enrichment"}},"type":"object","required":["job_id","message","total_people"],"title":"EnrichPeopleStartResponse","description":"Response from starting a people enrichment job.\n\nReturns immediately with a job_id. Poll ``GET /api/v1/enrich/people/{job_id}``\nfor progress and results."},"EnrichPersonResult":{"properties":{"person_id":{"type":"integer","title":"Person Id","description":"Person ID"},"person_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Name","description":"Person's full name"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"LinkedIn profile URL"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Work email found (None if not found or not requested)"},"email_bounce_rate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Bounce Rate","description":"Email deliverability status (e.g. DELIVERABLE, HIGH_PROBABILITY, CATCH_ALL)"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"Phone number found (None if not found or not requested)"},"status":{"type":"string","title":"Status","description":"Enrichment outcome for this person. Values: 'enriched' — at least one new field found, 'not_found' — lookup succeeded but no data found, 'already_enriched' — person already had requested data, 'no_linkedin_url' — person has no LinkedIn URL, 'error' — lookup failed"}},"type":"object","required":["person_id","status"],"title":"EnrichPersonResult","description":"Enrichment result for a single person."},"EventDetail":{"properties":{"id":{"type":"integer","title":"Id"},"event_type_id":{"type":"integer","title":"Event Type Id"},"event_type_name":{"type":"string","title":"Event Type Name"},"signal_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Type"},"event_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Date"},"team_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Name"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"people":{"items":{"$ref":"#/components/schemas/EventPersonSummary"},"type":"array","title":"People"}},"type":"object","required":["id","event_type_id","event_type_name"],"title":"EventDetail"},"EventPersonSummary":{"properties":{"id":{"type":"integer","title":"Id"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["id"],"title":"EventPersonSummary"},"EventSummary":{"properties":{"id":{"type":"integer","title":"Id"},"event_type_id":{"type":"integer","title":"Event Type Id"},"event_type_name":{"type":"string","title":"Event Type Name"},"signal_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Type"},"event_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Date"},"team_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Name"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"}},"type":"object","required":["id","event_type_id","event_type_name"],"title":"EventSummary"},"EventTypeSummary":{"properties":{"id":{"type":"integer","title":"Id"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"account_count":{"type":"integer","title":"Account Count","default":0},"people_count":{"type":"integer","title":"People Count","default":0},"latest_event_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Event Date"}},"type":"object","required":["id","name"],"title":"EventTypeSummary"},"FastPeoplePollResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Job ID"},"status":{"type":"string","title":"Status","description":"'pending', 'running', 'completed', or 'failed'"},"progress":{"anyOf":[{"$ref":"#/components/schemas/FastPeopleProgress"},{"type":"null"}],"description":"Progress info — available when status is 'running' or 'completed'"},"account_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Account Id","description":"Account ID that was enriched"},"people_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"People Ids","description":"IDs of discovered people — available when status is 'completed'. Use GET /api/v1/people/batch to fetch full details."},"audience_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience Url","description":"Audience URL if an audience was created"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Error details — present only when status is 'failed'"}},"type":"object","required":["job_id","status"],"title":"FastPeoplePollResponse","description":"Response from polling a fast people discovery job.\n\n**Status values:**\n- ``pending`` — Job created, not yet started\n- ``running`` — Discovery in progress\n- ``completed`` — All done; ``result`` contains discovered people\n- ``failed`` — Job failed; check ``error_message``\n\n**Polling recommendation:** Every 2-3 seconds. Typical discovery completes in 1-5 seconds."},"FastPeopleProgress":{"properties":{"total_found":{"type":"integer","title":"Total Found","description":"Total people found","default":0},"total_stored":{"type":"integer","title":"Total Stored","description":"People stored in OpenFunnel","default":0},"credits_used":{"type":"number","title":"Credits Used","description":"Credits consumed for new people stored","default":0}},"type":"object","title":"FastPeopleProgress","description":"Progress tracking for a fast people discovery job."},"FastPeopleRequest":{"properties":{"account_id":{"type":"integer","title":"Account Id","description":"account ID to discover people for"},"seniority_filters":{"items":{"$ref":"#/components/schemas/SeniorityFilter"},"type":"array","minItems":1,"title":"Seniority Filters","description":"Seniority levels to filter by (e.g., ['VP', 'DIRECTOR', 'HEAD'])"},"department_filters":{"items":{"$ref":"#/components/schemas/DepartmentFilter"},"type":"array","minItems":1,"title":"Department Filters","description":"Departments to filter by (e.g., ['ENGINEERING', 'PRODUCT', 'SALES'])"},"audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience Name","description":"Optional audience name. If provided, discovered people are added to this audience."},"max_credit_limit":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Max Credit Limit","description":"Maximum number of credits to spend. If omitted, uses your account default."},"people_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"People Locations","description":"List of 2-letter country codes to filter people by location (e.g., ['us', 'uk', 'eu'])"}},"type":"object","required":["account_id","seniority_filters","department_filters"],"title":"FastPeopleRequest","examples":[{"account_id":12345,"department_filters":["ENGINEERING","PRODUCT"],"seniority_filters":["VP","DIRECTOR"]},{"account_id":12345,"audience_name":"Q1 Outbound","department_filters":["SALES"],"max_credit_limit":50,"seniority_filters":["HEAD"]}]},"FastPeopleStartResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Unique job ID for polling via GET /api/v1/enrich/fast-people-enrichment/{job_id}"},"status":{"type":"string","title":"Status","description":"Job status — always 'pending' at creation","default":"pending"},"message":{"type":"string","title":"Message","description":"Human-readable status message"},"account_id":{"type":"integer","title":"Account Id","description":"Account ID being searched"},"audience_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience Url","description":"Audience URL if audience_name was provided"}},"type":"object","required":["job_id","message","account_id"],"title":"FastPeopleStartResponse","description":"Response from starting a fast people discovery job.\n\nReturns immediately with a job_id. Poll ``GET /api/v1/enrich/fast-people-enrichment/{job_id}``\nfor progress and results."},"FilterFieldDefinition":{"properties":{"field_name":{"type":"string","title":"Field Name"},"description":{"type":"string","title":"Description"},"type":{"type":"string","title":"Type"},"required":{"type":"boolean","title":"Required","default":false},"options":{"anyOf":[{"items":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/FilterOption"}]},"type":"array"},{"type":"null"}],"title":"Options"},"schema_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schema Description"}},"type":"object","required":["field_name","description","type"],"title":"FilterFieldDefinition","description":"Definition of a single filter field with metadata and available options."},"FilterOption":{"properties":{"value":{"type":"string","title":"Value"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","required":["value"],"title":"FilterOption","description":"A single filter option with value and optional display label."},"FiltersApplied":{"properties":{"hq_country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq Country Code","description":"ISO 3166-1 alpha-3 HQ country code applied to this page, if any."},"min_employee_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Employee Count","description":"Inclusive lower bound on employee count, if applied."},"max_employee_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Employee Count","description":"Inclusive upper bound on employee count, if applied."}},"type":"object","title":"FiltersApplied"},"FindAccountsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/SlimAccount"},"type":"array","title":"Data"},"pagination":{"$ref":"#/components/schemas/PageResponseMetadata"}},"type":"object","required":["data","pagination"],"title":"FindAccountsResponse"},"FindPeopleResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PeopleSearchResult"},"type":"array","title":"Data"},"pagination":{"$ref":"#/components/schemas/PageResponseMetadata"}},"type":"object","required":["data","pagination"],"title":"FindPeopleResponse"},"FirmographicEmployeeBound":{"properties":{"minimum":{"type":"integer","title":"Minimum","description":"Smallest accepted value (inclusive)."},"maximum":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Maximum","description":"Largest accepted value (inclusive), or null if unbounded."}},"type":"object","required":["minimum"],"title":"FirmographicEmployeeBound","description":"Accepted range for an employee-count filter on lookalike search."},"FirmographicLocationOption":{"properties":{"code":{"type":"string","title":"Code","description":"ISO 3166-1 alpha-3 country code (e.g. `USA`, `GBR`, `DEU`) to pass in `locations`."},"name":{"type":"string","title":"Name","description":"Canonical country name."}},"type":"object","required":["code","name"],"title":"FirmographicLocationOption","description":"A supported HQ-country choice for the lookalike `locations` filter."},"FirmographicOptionsResponse":{"properties":{"min_employees":{"$ref":"#/components/schemas/FirmographicEmployeeBound","description":"Bounds for the `min_employees` filter."},"max_employees":{"$ref":"#/components/schemas/FirmographicEmployeeBound","description":"Bounds for the `max_employees` filter."},"funding_stages":{"items":{"type":"string"},"type":"array","title":"Funding Stages","description":"Exact funding-stage labels accepted by `funding_stages`. Input is matched case-insensitively and canonicalized to these values."},"locations":{"items":{"$ref":"#/components/schemas/FirmographicLocationOption"},"type":"array","title":"Locations","description":"Supported HQ-country filters. Pass the ISO 3166-1 alpha-3 `code` (e.g. `USA`, `GBR`) in `locations`."}},"type":"object","required":["min_employees","max_employees","funding_stages","locations"],"title":"FirmographicOptionsResponse","description":"Acceptable firmographic filter values for the lookalike search endpoints\n(`GET /search-lookalikes` and `POST /search-lookalikes-bulk`)."},"FirstHireForRoleRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"role":{"type":"string","title":"Role","description":"Role to detect first hire for (e.g. 'Head of Security', 'Revenue Operations')"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID for firmographic filtering. Required unless accounts provided."},"timeframe":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Lookback window in days","default":90},"speed_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Speed Mode","description":"Skip blocklist/dedup for faster results","default":false},"accounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/AccountInput"},"type":"array"},{"type":"null"}],"title":"Accounts","description":"Upload accounts (website/linkedin_url) instead of trait search"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","role"],"title":"FirstHireForRoleRequest","description":"[descriptive_icp] companies hiring for [role] for the first time (job posting signal)"},"GetAccountBulkV2Request":{"properties":{"account_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Account Ids","description":"List of account IDs to get details for. Either account_ids or account_domains is required."},"account_domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Account Domains","description":"List of account domains to get details for. Either account_ids or account_domains is required."},"icp_people_page":{"type":"integer","minimum":1.0,"title":"Icp People Page","description":"Page number for icp_people pagination (1-indexed, default 1)","default":1},"icp_people_page_size":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Icp People Page Size","description":"Number of icp_people to return per page (default 100, max 500)","default":100},"max_signals_per_account":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Max Signals Per Account","description":"Maximum number of most recent signals to return per account (default 10, max 100)","default":10},"raw_content":{"type":"boolean","title":"Raw Content","description":"When false, it fetches faster responses that omit job_title, job_posting, post_content, and similar content-derived fields. Set to true to fetch full signal_content for each signal (job postings, social posts, etc.).","default":false}},"type":"object","title":"GetAccountBulkV2Request","description":"V2 extension with icp_people pagination."},"GetAccountFiltersV2Response":{"properties":{"filters":{"items":{"$ref":"#/components/schemas/FilterFieldDefinition"},"type":"array","title":"Filters"}},"type":"object","required":["filters"],"title":"GetAccountFiltersV2Response","description":"All available filter fields for the account listing API."},"GetAccountListRequest":{"properties":{"filters":{"anyOf":[{"$ref":"#/components/schemas/AccountFilters"},{"type":"null"}],"description":"Optional filters to apply when querying accounts. All filters are combined with AND logic."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/PaginationParams"},{"type":"null"}],"description":"Pagination parameters for the request"}},"type":"object","title":"GetAccountListRequest"},"GetAccountListResponse":{"properties":{"accounts":{"items":{"$ref":"#/components/schemas/BulkAccount"},"type":"array","title":"Accounts"},"total_count":{"type":"integer","title":"Total Count"},"pagination":{"anyOf":[{"$ref":"#/components/schemas/PaginationMetadata"},{"type":"null"}],"description":"Pagination metadata (included when pagination is requested)"}},"type":"object","required":["accounts","total_count"],"title":"GetAccountListResponse","description":"Paginated response for account list."},"GetAccountListV2Request":{"properties":{"filters":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Filters","description":"Filters using V2 field names (matching /filters endpoint output). Mutually exclusive with view_id."},"view_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"View Id","description":"Saved view ID — applies the view's stored filters instead of inline filters. Mutually exclusive with filters."},"sort_key":{"type":"string","title":"Sort Key","default":"insights_count"},"sort_direction":{"type":"string","title":"Sort Direction","default":"desc"},"page":{"type":"integer","minimum":0.0,"title":"Page","default":0},"page_size":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Page Size","default":50}},"type":"object","title":"GetAccountListV2Request"},"GetAccountListV2Response":{"properties":{"account_ids":{"items":{"type":"integer"},"type":"array","title":"Account Ids"},"total_count":{"type":"integer","title":"Total Count"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"has_more":{"type":"boolean","title":"Has More"}},"type":"object","required":["account_ids","total_count","page","page_size","has_more"],"title":"GetAccountListV2Response"},"GetAccountV2BulkResponse":{"properties":{"accounts":{"items":{"$ref":"#/components/schemas/GetAccountV2Response"},"type":"array","title":"Accounts"},"total_count":{"type":"integer","title":"Total Count"}},"type":"object","required":["accounts","total_count"],"title":"GetAccountV2BulkResponse"},"GetAccountV2Response":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url"},"is_present_in_crm":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Present In Crm"},"crm_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Crm Status"},"imported_account":{"type":"boolean","title":"Imported Account"},"enrichment_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enrichment Status"},"narrative_and_key_signals":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Narrative And Key Signals"},"account_discovered_at":{"type":"string","title":"Account Discovered At"},"signal_count":{"type":"integer","title":"Signal Count"},"technographics":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Technographics"},"crm_details":{"anyOf":[{"$ref":"#/components/schemas/AccountCRMDetails"},{"type":"null"}]},"traits":{"anyOf":[{"$ref":"#/components/schemas/AccountTraitDetails"},{"type":"null"}]},"firmographics":{"anyOf":[{"$ref":"#/components/schemas/AccountFirmographics"},{"type":"null"}]},"hiring":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/VerticalHiringSignalV2"},"type":"object"},{"type":"null"}],"title":"Hiring","description":"Hiring signals keyed by discovered_signal_id. Example: {\"927353\": {discovered_signal_id: 927353, ...}}","x-key-description":"discovered_signal_id"},"socials":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/VerticalSocialSignalV2"},"type":"object"},{"type":"null"}],"title":"Socials","description":"Social signals keyed by discovered_signal_id. Example: {\"927353\": {discovered_signal_id: 927353, ...}}","x-key-description":"discovered_signal_id"},"linkedin_engagement":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/ICPInteractionV2"},"type":"object"},{"type":"null"}],"title":"Linkedin Engagement","description":"LinkedIn engagement signals keyed by discovered_signal_id. Example: {\"927353\": {discovered_signal_id: 927353, ...}}","x-key-description":"discovered_signal_id"},"job_changes":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/ICPJobChangesV2"},"type":"object"},{"type":"null"}],"title":"Job Changes","description":"Job change signals keyed by discovered_signal_id. Example: {\"927353\": {discovered_signal_id: 927353, ...}}","x-key-description":"discovered_signal_id"},"technography_signals":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/VerticalTechnographySignalV2"},"type":"object"},{"type":"null"}],"title":"Technography Signals","description":"Technography signals keyed by discovered_signal_id.","x-key-description":"discovered_signal_id"},"icp_people":{"anyOf":[{"items":{"$ref":"#/components/schemas/SignalPerson"},"type":"array"},{"type":"null"}],"title":"Icp People"},"icp_people_total_count":{"type":"integer","title":"Icp People Total Count","description":"Total number of ICP people (before pagination)","default":0},"icp_people_has_more":{"type":"boolean","title":"Icp People Has More","description":"Whether there are more ICP people beyond this page","default":false}},"type":"object","required":["id","name","imported_account","account_discovered_at","signal_count"],"title":"GetAccountV2Response"},"GetAudienceListResponse":{"properties":{"audiences":{"items":{"$ref":"#/components/schemas/Audience"},"type":"array","title":"Audiences"},"total_count":{"type":"integer","title":"Total Count"},"pagination":{"anyOf":[{"$ref":"#/components/schemas/PaginationMetadata"},{"type":"null"}],"description":"Pagination metadata (included when pagination is requested)"}},"type":"object","required":["audiences","total_count"],"title":"GetAudienceListResponse","description":"Paginated response for audience list."},"GetAudienceResponse":{"properties":{"audience_id":{"type":"integer","title":"Audience Id"},"audience_name":{"type":"string","title":"Audience Name"},"audience_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience Type"},"account_ids":{"items":{"type":"integer"},"type":"array","title":"Account Ids","default":[]},"total_accounts":{"type":"integer","title":"Total Accounts"},"people_ids":{"items":{"type":"integer"},"type":"array","title":"People Ids","default":[]},"total_people":{"type":"integer","title":"Total People"}},"type":"object","required":["audience_id","audience_name","total_accounts","total_people"],"title":"GetAudienceResponse"},"GetPeopleBatchV2Response":{"properties":{"people":{"items":{"$ref":"#/components/schemas/PersonBatchDetail"},"type":"array","title":"People"},"total_count":{"type":"integer","title":"Total Count"}},"type":"object","required":["people","total_count"],"title":"GetPeopleBatchV2Response"},"GetPeopleFiltersV2Response":{"properties":{"filters":{"items":{"$ref":"#/components/schemas/FilterFieldDefinition"},"type":"array","title":"Filters"}},"type":"object","required":["filters"],"title":"GetPeopleFiltersV2Response","description":"All available filter fields for the people listing API."},"GetPeopleListV2Request":{"properties":{"filters":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Filters","description":"Filters using V2 field names (matching /people/filters endpoint output)"},"sort_key":{"type":"string","title":"Sort Key","default":"latest_signal_date"},"sort_direction":{"type":"string","title":"Sort Direction","default":"desc"},"page":{"type":"integer","minimum":0.0,"title":"Page","default":0},"page_size":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Page Size","default":50}},"type":"object","title":"GetPeopleListV2Request"},"GetPeopleListV2Response":{"properties":{"people_ids":{"items":{"type":"integer"},"type":"array","title":"People Ids"},"total_count":{"type":"integer","title":"Total Count"},"total_accounts_count":{"type":"integer","title":"Total Accounts Count"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"has_more":{"type":"boolean","title":"Has More"}},"type":"object","required":["people_ids","total_count","total_accounts_count","page","page_size","has_more"],"title":"GetPeopleListV2Response"},"GetSignalListRequest":{"properties":{"filters":{"anyOf":[{"$ref":"#/components/schemas/SignalFilters"},{"type":"null"}],"description":"Optional filters to apply when querying signals. All filters are combined with AND logic."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/PaginationParams"},{"type":"null"}],"description":"Pagination parameters for the request"}},"type":"object","title":"GetSignalListRequest"},"GetSignalListResponse":{"properties":{"signals":{"items":{"$ref":"#/components/schemas/Signal"},"type":"array","title":"Signals"},"total_count":{"type":"integer","title":"Total Count"},"pagination":{"anyOf":[{"$ref":"#/components/schemas/PaginationMetadata"},{"type":"null"}],"description":"Pagination metadata (included when pagination is requested)"}},"type":"object","required":["signals","total_count"],"title":"GetSignalListResponse","description":"Paginated response for signal list."},"GetSignalResponse":{"properties":{"signal_id":{"type":"integer","title":"Signal Id"},"signal_name":{"type":"string","title":"Signal Name"},"owner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner","description":"Email of the workspace member who owns this signal."},"signal_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Type"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Signal processing status. Poll until value is `completed` to know when results are ready."},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run Daily toggle. If `true`, this signal runs automatically every day. Can be `true`, `false`, or `null`."},"icp":{"anyOf":[{"$ref":"#/components/schemas/SignalICP"},{"type":"null"}],"description":"ICP (Ideal Customer Profile) associated with this signal. Only non-null fields are returned."},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit"},"safe_crm_sync_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Safe Crm Sync Enabled"},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails"},"advanced_people_finder_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder Enabled"},"account_ids":{"items":{"type":"integer"},"type":"array","title":"Account Ids","default":[]},"total_accounts":{"type":"integer","title":"Total Accounts"},"people_ids":{"items":{"type":"integer"},"type":"array","title":"People Ids","default":[]},"total_people":{"type":"integer","title":"Total People"}},"type":"object","required":["signal_id","signal_name","total_accounts","total_people"],"title":"GetSignalResponse"},"GetVerticalAccountDetailResponse":{"properties":{"data":{"$ref":"#/components/schemas/AccountDetailPayload"}},"type":"object","required":["data"],"title":"GetVerticalAccountDetailResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HiringForConceptsRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"concept":{"type":"string","title":"Concept","description":"Concept to find in job posts (e.g. 'self hosted models', 'AI governance')"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID for firmographic filtering. Required unless accounts provided."},"timeframe":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Lookback window in days","default":90},"speed_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Speed Mode","description":"Skip blocklist/dedup for faster results","default":false},"accounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/AccountInput"},"type":"array"},{"type":"null"}],"title":"Accounts","description":"Upload accounts (website/linkedin_url) instead of trait search"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","concept"],"title":"HiringForConceptsRequest","description":"[descriptive_icp] companies mentioning [concept]"},"HiringForInitiativeRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"initiative":{"type":"string","title":"Initiative","description":"Initiative to search for (e.g. 'ERP migration', 'AI agent rollout')"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID for firmographic filtering. Required unless accounts provided."},"timeframe":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Lookback window in days","default":90},"speed_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Speed Mode","description":"Skip blocklist/dedup for faster results","default":false},"accounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/AccountInput"},"type":"array"},{"type":"null"}],"title":"Accounts","description":"Upload accounts (website/linkedin_url) instead of trait search"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","initiative"],"title":"HiringForInitiativeRequest","description":"[descriptive_icp] companies having the initiative of [initiative]"},"HiringForRoleRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"role":{"type":"string","title":"Role","description":"Role to search for (e.g. 'Solutions Engineer', 'VP of Sales')"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID for firmographic filtering. Required unless accounts provided."},"timeframe":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Lookback window in days","default":90},"speed_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Speed Mode","description":"Skip blocklist/dedup for faster results","default":false},"accounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/AccountInput"},"type":"array"},{"type":"null"}],"title":"Accounts","description":"Upload accounts (website/linkedin_url) instead of trait search"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","role"],"title":"HiringForRoleRequest","description":"[descriptive_icp] companies hiring for [role]"},"HiringSpikeForConceptRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"term":{"type":"string","title":"Term","description":"Concept/keyword to detect spike for (e.g. 'kubernetes migration', 'AI governance')"},"count_threshold":{"type":"integer","minimum":2.0,"title":"Count Threshold","description":"Minimum number of matching job posts to qualify as a spike"},"window_days":{"type":"integer","maximum":365.0,"minimum":1.0,"title":"Window Days","description":"Window in days to count posts within"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID for firmographic filtering. Required unless accounts provided."},"speed_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Speed Mode","description":"Skip blocklist/dedup for faster results","default":false},"accounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/AccountInput"},"type":"array"},{"type":"null"}],"title":"Accounts","description":"Upload accounts (website/linkedin_url) instead of trait search"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","term","count_threshold","window_days"],"title":"HiringSpikeForConceptRequest","description":"[descriptive_icp] companies with [count_threshold]+ job posts mentioning [term] in [window_days] days"},"HiringSpikeForRoleRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"role":{"type":"string","title":"Role","description":"Role to detect hiring spike for (e.g. 'data engineer', 'AI engineer')"},"count_threshold":{"type":"integer","minimum":2.0,"title":"Count Threshold","description":"Minimum number of matching job posts to qualify as a spike"},"window_days":{"type":"integer","maximum":365.0,"minimum":1.0,"title":"Window Days","description":"Window in days to count posts within"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID for firmographic filtering. Required unless accounts provided."},"speed_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Speed Mode","description":"Skip blocklist/dedup for faster results","default":false},"accounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/AccountInput"},"type":"array"},{"type":"null"}],"title":"Accounts","description":"Upload accounts (website/linkedin_url) instead of trait search"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","role","count_threshold","window_days"],"title":"HiringSpikeForRoleRequest","description":"[descriptive_icp] companies hiring for [role] in [count_threshold]+ job posts in [window_days] days"},"ICPInteractionV2":{"properties":{"signal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Signal Id"},"signal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Name"},"post_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Post Link"},"post_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Post Content"},"interaction_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interaction Type"},"posted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Posted At"},"detected_by_openfunnel_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detected By Openfunnel At"},"interactor_details":{"anyOf":[{"$ref":"#/components/schemas/SignalPerson"},{"type":"null"}]},"discovered_signal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Discovered Signal Id"},"signal_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Date"},"archived":{"type":"boolean","title":"Archived","description":"True when the signal's date (signal_date) is older than 7 days or unknown — the signal is shown under Archived rather than Recent.","default":false},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"people":{"items":{"$ref":"#/components/schemas/SignalPerson"},"type":"array","title":"People"}},"type":"object","title":"ICPInteractionV2"},"ICPItem":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"target_roles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Target Roles"},"min_employee":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Employee"},"max_employee":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Employee"},"min_funding":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Min Funding"},"max_funding":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Max Funding"},"location":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Location"},"sub_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sub Locations"},"people_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"People Locations"},"people_sub_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"People Sub Locations"},"employee_count_funding_config":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employee Count Funding Config"}},"type":"object","required":["id"],"title":"ICPItem"},"ICPJobChangeRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID to use for filtering"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results (default: false, runs once)","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for auto-adding discovered accounts (default: '<signal name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<signal name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit to enforce on this signal. Signal will stop once max_credit_limit is hit"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM. New/unassigned accounts are created and assigned to you; existing accounts get signals enriched. Ownership is never changed.","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Automatically enrich discovered people with work emails. Uses email enrichment credits.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder in addition to fast enrichment. Consumes OpenFunnel credits","default":false}},"type":"object","required":["name"],"title":"ICPJobChangeRequest"},"ICPJobChangesV2":{"properties":{"signal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Signal Id"},"signal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Name"},"change_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Type"},"detected_by_openfunnel_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detected By Openfunnel At"},"person_details":{"anyOf":[{"$ref":"#/components/schemas/SignalPerson"},{"type":"null"}]},"discovered_signal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Discovered Signal Id"},"signal_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Date"},"archived":{"type":"boolean","title":"Archived","description":"True when the signal's date (signal_date) is older than 7 days or unknown — the signal is shown under Archived rather than Recent.","default":false},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"people":{"items":{"$ref":"#/components/schemas/SignalPerson"},"type":"array","title":"People"}},"type":"object","title":"ICPJobChangesV2"},"ICPOptionsResponse":{"properties":{"employee_ranges":{"items":{"type":"string"},"type":"array","title":"Employee Ranges"},"funding_stages":{"items":{"type":"string"},"type":"array","title":"Funding Stages"},"locations":{"items":{"$ref":"#/components/schemas/OptionItem"},"type":"array","title":"Locations"},"sub_locations":{"items":{"$ref":"#/components/schemas/OptionItem"},"type":"array","title":"Sub Locations"},"people_locations":{"items":{"$ref":"#/components/schemas/OptionItem"},"type":"array","title":"People Locations"},"people_sub_locations":{"items":{"$ref":"#/components/schemas/OptionItem"},"type":"array","title":"People Sub Locations"}},"type":"object","required":["employee_ranges","funding_stages","locations","sub_locations","people_locations","people_sub_locations"],"title":"ICPOptionsResponse"},"InstantTraitSearchResponse":{"properties":{"query":{"type":"string","title":"Query","description":"Original user query (may be empty when seed_domains was used without a query)"},"results":{"items":{"$ref":"#/components/schemas/InstantTraitSearchResult"},"type":"array","title":"Results","description":"Matching companies"},"total":{"type":"integer","title":"Total","description":"Number of results returned"},"credits_consumed":{"type":"number","title":"Credits Consumed","description":"Credits charged for this response. Computed as `results_returned × per-company-cost`. The charge is recorded in the background after the response is sent, so it will not appear in the same-request credit balance but will be reflected by your next call.","default":0},"derived_query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Derived Query","description":"When `seed_domains` was provided, this is the LLM-synthesized trait query that was actually run against the lookalike pipeline. Null for pure-query requests."},"resolved_seed_domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Resolved Seed Domains","description":"Seed input strings that matched a company in the OpenFunnel companies index. Null when `seed_domains` was not provided."},"unresolved_seed_domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Unresolved Seed Domains","description":"Seed input strings that could not be resolved. Skipped silently as long as at least one seed resolved. Null when `seed_domains` was not provided."},"partial":{"type":"boolean","title":"Partial","description":"True if the search stopped early before exhausting the requested limit -- either the 90s time budget was hit or the client disconnected. The `results` are still valid, just fewer than `limit`. Credits are charged only on the results actually returned.","default":false},"stop_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stop Reason","description":"Why the search stopped early: `deadline` (timeout), `cancelled`, or null."}},"type":"object","required":["query","results","total"],"title":"InstantTraitSearchResponse","description":"Response for the public lookalike search."},"InstantTraitSearchResult":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Company name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain","description":"Primary company domain"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"Company LinkedIn URL"},"headquarters":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Headquarters","description":"Best available headquarters location"},"match_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Match Reason","description":"One-sentence LLM justification for why this company matches the trait query, with the supporting phrases from the company's description / industries wrapped in double quotes. Useful for human review of why a result was returned. May be null if the validator did not attach a reason (e.g. early-exit path)."},"rerank_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rerank Score","description":"ZeroEntropy relevance score from the rerank stage, when available. A numeric signal for sorting/thresholding. Always present on the bulk endpoint's ranked head; may be null for tail rows of very large bulk results or when the reranker was unavailable."},"employee_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employee Count","description":"Estimated employee count."},"funding_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Funding Stage","description":"Latest funding stage, e.g. 'Series C'."},"revenue_usd":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Revenue Usd","description":"Estimated annual revenue, in USD."},"industries":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Industries","description":"Industry tags."},"hq_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq City","description":"HQ city."},"hq_region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq Region","description":"HQ state / region."},"hq_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq Country","description":"HQ country."},"linkedin_follower_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Linkedin Follower Count","description":"LinkedIn follower count."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Short company description."},"tagline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tagline","description":"Company tagline / LinkedIn headline."}},"type":"object","title":"InstantTraitSearchResult","description":"Single company returned by the public lookalike search endpoint."},"JobChangeRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"type":"integer","title":"Icp Id","description":"ICP ID for company filtering (required)"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","icp_id"],"title":"JobChangeRequest","description":"People who joined [descriptive_icp] companies"},"JobPostFirstTimeMentionRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"term":{"type":"string","title":"Term","description":"Concept/keyword to detect first-time mention for (e.g. 'ERP Migration', 'AI agents')"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID for firmographic filtering. Required unless accounts provided."},"timeframe":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Lookback window in days","default":90},"speed_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Speed Mode","description":"Skip blocklist/dedup for faster results","default":false},"accounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/AccountInput"},"type":"array"},{"type":"null"}],"title":"Accounts","description":"Upload accounts (website/linkedin_url) instead of trait search"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","term"],"title":"JobPostFirstTimeMentionRequest","description":"[descriptive_icp] companies mentioning [term] in job posts for the first time"},"JobSource":{"properties":{"title":{"type":"string","title":"Title","description":"Job title as posted."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Canonical URL to the job posting."},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location","description":"Posted location string."},"created":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created","description":"ISO timestamp of when the posting first appeared in the index."},"why_relevant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Why Relevant","description":"Short LLM-generated explanation of why this posting is evidence for the activity question."}},"type":"object","required":["title"],"title":"JobSource","description":"A job posting cited by the activity stage."},"LinkedinActivityRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"linkedin_url":{"type":"string","title":"Linkedin Url","description":"LinkedIn profile URL of person to monitor (e.g. competitor salesperson)"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"type":"integer","title":"Icp Id","description":"ICP ID for company filtering (required)"},"timeframe":{"anyOf":[{"type":"integer","maximum":180.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Days to look back for activity","default":7},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","linkedin_url","icp_id"],"title":"LinkedinActivityRequest","description":"[linkedin_url] interactions with ICP people"},"LinkedinEngagementRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"linkedin_url":{"type":"string","title":"Linkedin Url","description":"LinkedIn profile URL to monitor for engagement (e.g. 'linkedin.com/in/founder-name')"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"type":"integer","title":"Icp Id","description":"ICP ID for company filtering (required)"},"timeframe":{"anyOf":[{"type":"integer","maximum":180.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Days to look back for engagement","default":7},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","linkedin_url","icp_id"],"title":"LinkedinEngagementRequest","description":"ICP people interacting with [linkedin_url]"},"ListICPsResponse":{"properties":{"icps":{"items":{"$ref":"#/components/schemas/ICPItem"},"type":"array","title":"Icps"},"total_count":{"type":"integer","title":"Total Count"}},"type":"object","required":["icps","total_count"],"title":"ListICPsResponse"},"ListVerticalEventTypesResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/EventTypeSummary"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"ListVerticalEventTypesResponse"},"ListVerticalsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/VerticalSummary"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"ListVerticalsResponse"},"MyAlertsResponse":{"properties":{"total_alerts":{"type":"integer","title":"Total Alerts","default":0},"has_more":{"type":"boolean","title":"Has More","default":false},"net_new_account_count":{"type":"integer","title":"Net New Account Count","description":"Number of accounts appearing for the first time in this time window","default":0},"alerts":{"items":{"$ref":"#/components/schemas/AlertItem"},"type":"array","title":"Alerts"}},"type":"object","title":"MyAlertsResponse","description":"Response for get_my_alerts — user's notification history with insights."},"MySavedViewsResponse":{"properties":{"total_views":{"type":"integer","title":"Total Views","default":0},"views":{"items":{"$ref":"#/components/schemas/SavedViewItem"},"type":"array","title":"Views"}},"type":"object","title":"MySavedViewsResponse","description":"Response for get_my_saved_views."},"OptionItem":{"properties":{"value":{"type":"string","title":"Value"},"label":{"type":"string","title":"Label"}},"type":"object","required":["value","label"],"title":"OptionItem"},"PageResponseMetadata":{"properties":{"page":{"type":"integer","title":"Page","description":"1-indexed current page"},"limit":{"type":"integer","title":"Limit","description":"Number of rows requested"},"total_count":{"type":"integer","title":"Total Count","description":"Total matching rows"},"has_more":{"type":"boolean","title":"Has More","description":"Whether more rows remain after this page"}},"type":"object","required":["page","limit","total_count","has_more"],"title":"PageResponseMetadata"},"PaginationMetadata":{"properties":{"limit":{"type":"integer","title":"Limit","description":"Number of items requested per page"},"offset":{"type":"integer","title":"Offset","description":"Number of items skipped"},"total_count":{"type":"integer","title":"Total Count","description":"Total number of items available"},"has_more":{"type":"boolean","title":"Has More","description":"Whether there are more items after this page"}},"type":"object","required":["limit","offset","total_count","has_more"],"title":"PaginationMetadata","description":"Pagination metadata included in paginated responses."},"PaginationParams":{"properties":{"limit":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Limit","description":"Maximum number of items to return per page (1-500)","default":50},"offset":{"type":"integer","minimum":0.0,"title":"Offset","description":"Number of items to skip before starting to return results","default":0}},"type":"object","title":"PaginationParams","description":"Standard pagination parameters for list endpoints.\n\nUse limit and offset for paginated queries. Defaults to returning 50 items\nstarting from the beginning of the result set."},"PeopleHiredFirstTimeRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"role":{"type":"string","title":"Role","description":"Role to detect first hire for (e.g. 'Head of Security', 'Revenue Operations')"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID for firmographic filtering. Required unless accounts provided."},"timeframe":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Lookback window in days","default":90},"speed_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Speed Mode","description":"Skip blocklist/dedup for faster results","default":false},"accounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/AccountInput"},"type":"array"},{"type":"null"}],"title":"Accounts","description":"Upload accounts (website/linkedin_url) instead of trait search"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","role"],"title":"PeopleHiredFirstTimeRequest","description":"[descriptive_icp] companies that made their first hire for [role] (people index)"},"PeopleHiredForInitiativesRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"job_to_be_done":{"type":"string","title":"Job To Be Done","description":"What the person was hired to do (e.g. 'setup outbound sales', 'lead AI transformation')"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID for firmographic filtering. Required unless accounts provided."},"timeframe":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Lookback window in days","default":90},"speed_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Speed Mode","description":"Skip blocklist/dedup for faster results","default":false},"accounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/AccountInput"},"type":"array"},{"type":"null"}],"title":"Accounts","description":"Upload accounts (website/linkedin_url) instead of trait search"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","job_to_be_done"],"title":"PeopleHiredForInitiativesRequest","description":"People hired to [job_to_be_done] at [descriptive_icp] companies"},"PeopleSearchResult":{"properties":{"id":{"type":"integer","title":"Id"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"seniority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seniority"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"account":{"$ref":"#/components/schemas/SlimAccountReference"}},"type":"object","required":["id","account"],"title":"PeopleSearchResult"},"PeopleSocialListeningRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"topic":{"type":"string","title":"Topic","description":"Topic to listen for (e.g. 'AI agents', 'data residency')"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"type":"integer","title":"Icp Id","description":"ICP ID for company filtering (required)"},"timeframe":{"anyOf":[{"type":"integer","maximum":180.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Lookback window in days","default":90},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","topic","icp_id"],"title":"PeopleSocialListeningRequest","description":"People mentioning [topic] on social"},"PersonBatchDetail":{"properties":{"person_id":{"type":"integer","title":"Person Id"},"person_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Name"},"person_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Role"},"person_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Email"},"person_email_bounce_rate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Email Bounce Rate"},"person_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Location"},"person_linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Linkedin Url"},"joined_company_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Joined Company At"},"person_crm_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Crm Status"},"person_phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Phone Number"},"person_team_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Team Name"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"},"seniority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seniority"},"account_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Account Id"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name"},"account_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Domain"},"reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning"},"direct_signals":{"anyOf":[{"items":{"$ref":"#/components/schemas/PersonDirectSignal"},"type":"array"},{"type":"null"}],"title":"Direct Signals"},"connected_crm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connected Crm"},"crm_contact_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Crm Contact Id"},"crm_owner_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Crm Owner Id"}},"type":"object","required":["person_id"],"title":"PersonBatchDetail"},"PersonDirectSignal":{"properties":{"signal_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Type"},"signal_link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Link"},"true_signal_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"True Signal Date"}},"type":"object","title":"PersonDirectSignal"},"PersonEventSummary":{"properties":{"id":{"type":"integer","title":"Id"},"event_type_id":{"type":"integer","title":"Event Type Id"},"event_type_name":{"type":"string","title":"Event Type Name"},"signal_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Type"},"event_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Date"},"team_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Name"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"account":{"$ref":"#/components/schemas/SlimAccountReference"}},"type":"object","required":["id","event_type_id","event_type_name","account"],"title":"PersonEventSummary"},"PersonEventsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PersonEventSummary"},"type":"array","title":"Data"},"pagination":{"$ref":"#/components/schemas/PageResponseMetadata"}},"type":"object","required":["data","pagination"],"title":"PersonEventsResponse"},"PersonSource":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Full name from the profile."},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Current job title."},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"Canonical LinkedIn profile URL."},"seniority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seniority","description":"Precomputed seniority bucket: FOUNDER, CXO, PARTNER, VP, HEAD, DIRECTOR, MANAGER, SENIOR, ENTRY, INTERN."},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department","description":"Precomputed department bucket: ENGINEERING, PRODUCT, DATA, SALES, MARKETING, OPERATIONS, FINANCE, HR, LEGAL, EXECUTIVE, CUSTOMER_SUCCESS, SECURITY, IT, OTHER."},"started_on":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started On","description":"ISO start date of the person's current role (populated only when the qualifier question implied tenure / recency, e.g. 'joined in the last 90 days')."}},"type":"object","title":"PersonSource","description":"A person cited by the qualifier stage."},"QualifierFinding":{"properties":{"question":{"type":"string","title":"Question","description":"Echo of the qualifier question."},"qualified":{"type":"boolean","title":"Qualified","description":"True iff the company's team matches the criteria."},"answer":{"type":"string","title":"Answer","description":"One-sentence natural-language summary of the verdict — suitable for inline use in a CRM note or alert."},"detailed_reasoning":{"type":"string","title":"Detailed Reasoning","description":"Longer LLM-written reasoning: which signals matched, which didn't, and any caveats. May reference specific people."},"people_evaluated":{"type":"integer","title":"People Evaluated","description":"Number of LinkedIn profiles the LLM evaluated (after department / seniority pre-filtering)."},"sources":{"items":{"$ref":"#/components/schemas/PersonSource"},"type":"array","title":"Sources","description":"Profiles the LLM cited as matching the criteria. Empty when `qualified` is False or the criteria was about absence rather than presence."},"elapsed_ms":{"type":"integer","title":"Elapsed Ms","description":"Stage latency in milliseconds."},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error","description":"Set when the stage failed mid-flight (e.g. company has no people indexed). `qualified` is False and `sources` is empty in this case."}},"type":"object","required":["question","qualified","answer","detailed_reasoning","people_evaluated","elapsed_ms"],"title":"QualifierFinding","description":"Result of the people-qualifier stage."},"QualifyAndEnrichRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Company website domain (e.g. 'stripe.com')"},"goal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Goal","description":"Search goal (overrides default pitch)"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID to fetch target roles from"},"target_icp_roles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Target Icp Roles","description":"Target ICP roles (overrides icp_id roles)"},"timeframe":{"type":"integer","maximum":365.0,"minimum":1.0,"title":"Timeframe","description":"Timeframe in days to search back","default":90},"max_jobs_to_check":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Max Jobs To Check","description":"Max jobs to check for relevance","default":200},"campaign_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Name","description":"Campaign name to create for enriched people"},"people_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"People Locations","description":"Target people locations (overrides ICP)"},"people_sub_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"People Sub Locations","description":"Target people sub-locations (overrides ICP)"}},"type":"object","required":["domain"],"title":"QualifyAndEnrichRequest","description":"Request model for end-to-end company qualification and people enrichment."},"QualifyAndEnrichResponse":{"properties":{"status":{"type":"string","title":"Status"},"account_id":{"type":"integer","title":"Account Id"},"domain":{"type":"string","title":"Domain"},"message":{"type":"string","title":"Message"}},"type":"object","required":["status","account_id","domain","message"],"title":"QualifyAndEnrichResponse"},"RelativeHiringSpikeForConceptRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"term":{"type":"string","title":"Term","description":"Concept/keyword to detect an accelerating spike for (e.g. 'kubernetes migration', 'AI governance')"},"growth_pct_threshold":{"type":"number","minimum":0.0,"title":"Growth Pct Threshold","description":"Minimum % growth in matching job posts — most recent 30-day bucket vs. average of the prior two 30-day buckets — required to qualify (e.g. 100 = doubling). Lookback is the trailing 90 days."},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID for firmographic filtering. Required unless accounts provided."},"speed_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Speed Mode","description":"Skip blocklist/dedup for faster results","default":false},"accounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/AccountInput"},"type":"array"},{"type":"null"}],"title":"Accounts","description":"Upload accounts (website/linkedin_url) instead of trait search"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","term","growth_pct_threshold"],"title":"RelativeHiringSpikeForConceptRequest","description":"[descriptive_icp] companies accelerating job posts mentioning [term] (relative spike)"},"RelativeHiringSpikeForRoleRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"role":{"type":"string","title":"Role","description":"Role to detect an accelerating hiring spike for (e.g. 'AI engineer', 'data engineer')"},"growth_pct_threshold":{"type":"number","minimum":0.0,"title":"Growth Pct Threshold","description":"Minimum % growth in matching job posts — most recent 30-day bucket vs. average of the prior two 30-day buckets — required to qualify (e.g. 100 = doubling). Lookback is the trailing 90 days."},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID for firmographic filtering. Required unless accounts provided."},"speed_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Speed Mode","description":"Skip blocklist/dedup for faster results","default":false},"accounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/AccountInput"},"type":"array"},{"type":"null"}],"title":"Accounts","description":"Upload accounts (website/linkedin_url) instead of trait search"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","role","growth_pct_threshold"],"title":"RelativeHiringSpikeForRoleRequest","description":"[descriptive_icp] companies accelerating hiring for [role] (relative spike)"},"SavedViewAlertsResponse":{"properties":{"saved_view_id":{"type":"string","title":"Saved View Id"},"view_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"View Name"},"total_alerts":{"type":"integer","title":"Total Alerts","default":0},"has_more":{"type":"boolean","title":"Has More","default":false},"pagination":{"$ref":"#/components/schemas/PaginationMetadata"},"alerts":{"items":{"$ref":"#/components/schemas/AlertItem"},"type":"array","title":"Alerts"}},"type":"object","required":["saved_view_id","pagination"],"title":"SavedViewAlertsResponse","description":"Response for a saved view's paginated alerts."},"SavedViewItem":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"name":{"type":"string","title":"Name"},"view_type":{"type":"string","title":"View Type","description":"'accounts' (company filters) or 'people' (individual filters; Amplemarket-only)","default":"accounts"},"filters":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Filters","description":"Active filters. For an 'accounts' view: the field names from GET /api/v2/account/filters. For a 'people' view: the field names from GET /api/v1/people/filters."},"is_default":{"type":"boolean","title":"Is Default","default":false},"action_config":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Action Config","description":"Configured live actions (slack_app, webhook, crm_sync, round_robin, amplemarket). The webhook signing secret is never included here; it is returned exactly once, via the top-level webhook_secret field, when configured or rotated."},"last_notified_insight_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Notified Insight Id"},"last_notification_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Notification At"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","user_id","name"],"title":"SavedViewItem","description":"Single saved view owned by a user."},"SearchAccountsResponse":{"properties":{"query":{"type":"string","title":"Query","description":"The search query that was executed"},"matches":{"items":{"$ref":"#/components/schemas/AccountSearchResult"},"type":"array","title":"Matches","description":"List of matching accounts"},"total_matches":{"type":"integer","title":"Total Matches","description":"Total number of matches found","default":0},"unique_domains":{"type":"integer","title":"Unique Domains","description":"Number of unique domains in results","default":0},"needs_clarification":{"type":"boolean","title":"Needs Clarification","description":"True if multiple accounts with different domains match - user should clarify which one","default":false}},"type":"object","required":["query"],"title":"SearchAccountsResponse","description":"Response for account search."},"SearchAccountsWithEventsResponse":{"properties":{"query":{"type":"string","title":"Query"},"data":{"items":{"$ref":"#/components/schemas/AccountSearchWithEventsItem"},"type":"array","title":"Data"},"total_count":{"type":"integer","title":"Total Count","default":0}},"type":"object","required":["query","data"],"title":"SearchAccountsWithEventsResponse"},"SeniorityFilter":{"type":"string","enum":["FOUNDER","CXO","PARTNER","VP","HEAD","DIRECTOR","MANAGER","SENIOR","ENTRY","INTERN"],"title":"SeniorityFilter","description":"Job seniority levels for people discovery filtering."},"Signal":{"properties":{"signal_id":{"type":"integer","title":"Signal Id"},"signal_name":{"type":"string","title":"Signal Name"},"owner":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner","description":"Email of the workspace member who owns this signal."},"signal_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Type"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Signal processing status. Poll until value is `completed` to know when results are ready."},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run Daily toggle. If `true`, this signal runs automatically every day. Can be `true`, `false`, or `null`."},"icp":{"anyOf":[{"$ref":"#/components/schemas/SignalICP"},{"type":"null"}],"description":"ICP (Ideal Customer Profile) associated with this signal. Only non-null fields are returned."},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit"},"safe_crm_sync_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Safe Crm Sync Enabled"},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails"},"advanced_people_finder_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder Enabled"}},"type":"object","required":["signal_id","signal_name"],"title":"Signal"},"SignalFilters":{"properties":{"signal_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Signal Types","description":"List of signal types to filter by (e.g., ['hiring', 'socials', 'linkedin_engagement', 'job_change', 'deep-company-search', 'technography'])"}},"type":"object","title":"SignalFilters"},"SignalICP":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"target_roles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Target Roles"},"min_employee":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Employee"},"max_employee":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Employee"},"min_funding":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Min Funding"},"max_funding":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Max Funding"},"location":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Location"},"sub_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sub Locations"},"people_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"People Locations"},"people_sub_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"People Sub Locations"}},"type":"object","required":["id"],"title":"SignalICP"},"SignalPerson":{"properties":{"person_id":{"type":"integer","title":"Person Id"},"person_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Name"},"person_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Role"},"person_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Email"},"person_email_bounce_rate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Email Bounce Rate"},"person_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Location"},"person_linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Linkedin Url"},"joined_company_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Joined Company At"},"person_crm_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Crm Status"},"person_salesforce_contact_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Salesforce Contact Id"},"person_salesforce_owner_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Salesforce Owner Id"},"person_team_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Team Name"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"}},"type":"object","required":["person_id"],"title":"SignalPerson","description":"Person in V2 API — extends PersonDetails with scoring and reasoning."},"SlackChannelOption":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"SlackChannelOption","description":"Slack channel the OpenFunnel bot can post to."},"SlimAccount":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url"},"employee_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employee Count"},"employee_count_range":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employee Count Range"},"funding_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Funding Stage"},"hq_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq Country"},"hq_region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq Region"},"hq_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq City"},"industries":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Industries"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"linkedin_follower_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Linkedin Follower Count"},"company_logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Logo Url"}},"type":"object","required":["id"],"title":"SlimAccount"},"SlimAccountReference":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"}},"type":"object","required":["id"],"title":"SlimAccountReference"},"SlimPerson":{"properties":{"id":{"type":"integer","title":"Id"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"seniority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seniority"},"department":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url"},"team_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Name"},"linkedin_profile_picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Profile Picture"}},"type":"object","required":["id"],"title":"SlimPerson"},"SocialListeningRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"search_query":{"type":"string","title":"Search Query","description":"LinkedIn search keyword (e.g. 'AI tools')"},"signal_target":{"type":"string","enum":["account","people"],"title":"Signal Target","description":"Whether to discover accounts or people","default":"account"},"timeframe":{"type":"integer","maximum":180.0,"minimum":1.0,"title":"Timeframe","description":"Time limit in days (1-180)"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID to use for filtering"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results (default: false, runs once)","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for auto-adding discovered accounts (default: '<signal name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<signal name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit to enforce on this signal. Signal will stop once max_credit_limit is hit"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM. New/unassigned accounts are created and assigned to you; existing accounts get signals enriched. Ownership is never changed.","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Automatically enrich discovered people with work emails. Uses email enrichment credits.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder in addition to fast enrichment. Consumes OpenFunnel credits","default":false}},"type":"object","required":["name","search_query","timeframe"],"title":"SocialListeningRequest"},"SyncAccountsJobRequest":{"properties":{"account_ids":{"items":{"type":"integer"},"type":"array","maxItems":500,"minItems":1,"title":"Account Ids","description":"Account IDs to sync to CRM"},"assigned_user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned User Email","description":"Email of user to assign CRM records to. If omitted, assigns to authenticated user."}},"type":"object","required":["account_ids"],"title":"SyncAccountsJobRequest"},"SyncJobStartResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"},"connected_crm":{"type":"string","title":"Connected Crm"},"total_records":{"type":"integer","title":"Total Records"}},"type":"object","required":["job_id","status","message","connected_crm","total_records"],"title":"SyncJobStartResponse"},"SyncJobStatusResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"job_type":{"type":"string","title":"Job Type"},"status":{"type":"string","title":"Status"},"connected_crm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connected Crm"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"result":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Result"}},"type":"object","required":["job_id","job_type","status"],"title":"SyncJobStatusResponse"},"SyncPeopleJobRequest":{"properties":{"people_ids":{"items":{"type":"integer"},"type":"array","maxItems":500,"minItems":1,"title":"People Ids","description":"People IDs to sync to CRM (accounts resolved automatically)"},"assigned_user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assigned User Email","description":"Email of user to assign CRM records to. If omitted, assigns to authenticated user."}},"type":"object","required":["people_ids"],"title":"SyncPeopleJobRequest"},"TamBuildCancelResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Async job id"},"status":{"type":"string","title":"Status","description":"`cancelling` (running job) or `cancelled` (a paused job settled directly)","default":"cancelling"},"message":{"type":"string","title":"Message","description":"Next step: where to fetch the companies built before the cancel"}},"type":"object","required":["job_id","message"],"title":"TamBuildCancelResponse","description":"Acknowledgement returned by the TAM build cancel endpoint."},"TamBuildJobResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Async job id"},"status":{"type":"string","title":"Status","description":"pending | running | pausing | paused | cancelling | cancelled | completed | failed"},"manifest":{"anyOf":[{"$ref":"#/components/schemas/TamBuildManifest"},{"type":"null"}],"description":"Result-page pointer + metadata"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"Failure reason when status == failed"},"rows":{"items":{"$ref":"#/components/schemas/TamCompanyResult"},"type":"array","title":"Rows","description":"Companies in the requested page"},"page":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page","description":"Name of the page returned, e.g. page_0003"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Cursor for the next page; null on the last available page"},"count":{"type":"integer","title":"Count","description":"Number of rows in this page","default":0},"processed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Processed","description":"Live progress: unique companies in the TAM so far"},"progress_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Progress Message","description":"Coarse stage label, e.g. `planning` / `band 201-1000` / `completed` / `cancelled`"},"bands_done":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bands Done","description":"Grid bands completed so far"},"bands_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bands Total","description":"Total grid bands"},"degraded":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Degraded","description":"True if some cells errored and were skipped"}},"type":"object","required":["job_id","status"],"title":"TamBuildJobResponse","description":"Combined status + live progress + one page of the TAM master set.\n\nCheck `status` for a terminal state (`completed`/`failed`/`cancelled`) — NOT\n`next_cursor == null`, since a running job can have a null next_cursor simply\nbecause later pages have not been written yet."},"TamBuildManifest":{"properties":{"pages":{"type":"integer","title":"Pages","description":"Number of NDJSON page files written","default":0},"page_size":{"type":"integer","title":"Page Size","description":"Max rows per page","default":0},"unique_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unique Count","description":"Unique companies in the deduped TAM (null on failed jobs)"},"partial":{"type":"boolean","title":"Partial","description":"True if the build was cancelled or failed after writing some pages","default":false},"degraded":{"type":"boolean","title":"Degraded","description":"True if one or more grid cells errored and were skipped","default":false},"ranked":{"type":"boolean","title":"Ranked","description":"Always true: pages are emitted in ICP-band priority order, best-fit-first (by LLM closeness score) within each band.","default":true},"stop_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stop Reason","description":"`cancelled` / `paused` when stopped early; null otherwise"},"credits_consumed":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credits Consumed","description":"Credits charged (unique_count x per-company cost)"},"appended":{"type":"boolean","title":"Appended","description":"True if this build was RESUMED — later pages were appended after a pause.","default":false}},"type":"object","title":"TamBuildManifest","description":"Summary of a completed/partial TAM build (stored on the async_jobs row)."},"TamBuildPauseResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Async job id"},"status":{"type":"string","title":"Status","description":"`pausing` (will pause at the next band boundary), or already `paused`","default":"pausing"},"message":{"type":"string","title":"Message","description":"Next step: the in-flight band finishes, then resume with the resume endpoint"}},"type":"object","required":["job_id","message"],"title":"TamBuildPauseResponse","description":"Acknowledgement returned by the TAM build pause endpoint."},"TamBuildRequest":{"properties":{"query":{"type":"string","maxLength":500,"minLength":1,"title":"Query","description":"Natural-language description of the market to build (e.g. 'SMS marketing platforms for Shopify and DTC brands').","examples":["Enterprise Vertical AI companies","cloud observability and monitoring tools"]},"seed_domains":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":10},{"type":"null"}],"title":"Seed Domains","description":"Up to 10 seed company websites to anchor trait synthesis."},"min_employees":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Min Employees","description":"Hard floor on employee count (inclusive)."},"max_employees":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Employees","description":"Hard ceiling on employee count (inclusive)."},"funding_stages":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Funding Stages","description":"Funding stages to include. Allowed values: Pre-Seed, Seed, Series A, Series B, Series C, Series D, Series E, Series F, Series G, Series H, Acquired, Private, Public"},"locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Locations","description":"Headquarters country filters using supported lowercase country codes (e.g. us, uk, ca, in)."},"min_founded_year":{"anyOf":[{"type":"integer","maximum":2100.0,"minimum":1800.0},{"type":"null"}],"title":"Min Founded Year","description":"Only include companies founded in or after this year (e.g. 2020 for 'founded after 2020')."},"max_founded_year":{"anyOf":[{"type":"integer","maximum":2100.0,"minimum":1800.0},{"type":"null"}],"title":"Max Founded Year","description":"Only include companies founded in or before this year."},"search_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Type","description":"Retrieval strategy. `semantic` (default) uses vector search.","default":"semantic"},"query_variations":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":50},{"type":"null"}],"title":"Query Variations","description":"Override: explicit query variations to fan out (bypasses LLM variation generation)."},"employee_bands":{"anyOf":[{"items":{"items":{"anyOf":[{"type":"integer"},{"type":"null"}]},"type":"array"},"type":"array"},{"type":"null"}],"title":"Employee Bands","description":"Override: explicit disjoint [min, max] employee bands (max=null means open-ended); bypasses the band planner."}},"type":"object","required":["query"],"title":"TamBuildRequest","description":"Request body for POST /api/v1/tam/build (async TAM builder).\n\nA natural-language ICP plus optional hard firmographic walls. The planner\nexpands `query` into divergent variations and carves disjoint ICP bands within\nthe walls; `query_variations` / `employee_bands` let power users (or tests)\nbypass the LLM planner. There is no result cap — the build runs the full grid\nand charges per unique company once.","examples":[{"min_employees":200,"query":"Enterprise Vertical AI companies"},{"query":"restaurant POS and management software"}]},"TamBuildResumeResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Async job id"},"status":{"type":"string","title":"Status","description":"Always `running` — the resume was accepted","default":"running"},"message":{"type":"string","title":"Message","description":"Next step: poll for status + the remaining result pages"}},"type":"object","required":["job_id","message"],"title":"TamBuildResumeResponse","description":"Acknowledgement returned by the TAM build resume endpoint."},"TamBuildSubmitResponse":{"properties":{"job_id":{"type":"string","title":"Job Id","description":"Async job id; poll for status + results"},"status":{"type":"string","title":"Status","description":"Job status at submit time","default":"pending"},"message":{"type":"string","title":"Message","description":"Human-readable next-step hint"}},"type":"object","required":["job_id","message"],"title":"TamBuildSubmitResponse","description":"Returned immediately when a TAM build job is submitted."},"TamCompanyResult":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Company name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain","description":"Primary company domain"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url","description":"Company LinkedIn URL"},"headquarters":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Headquarters","description":"Best available headquarters location"},"match_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Match Reason","description":"One-sentence LLM justification for why this company matches the trait query, with the supporting phrases from the company's description / industries wrapped in double quotes. Useful for human review of why a result was returned. May be null if the validator did not attach a reason (e.g. early-exit path)."},"rerank_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rerank Score","description":"ZeroEntropy relevance score from the rerank stage, when available. A numeric signal for sorting/thresholding. Always present on the bulk endpoint's ranked head; may be null for tail rows of very large bulk results or when the reranker was unavailable."},"employee_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employee Count","description":"Estimated employee count."},"funding_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Funding Stage","description":"Latest funding stage, e.g. 'Series C'."},"revenue_usd":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Revenue Usd","description":"Estimated annual revenue, in USD."},"industries":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Industries","description":"Industry tags."},"hq_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq City","description":"HQ city."},"hq_region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq Region","description":"HQ state / region."},"hq_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hq Country","description":"HQ country."},"linkedin_follower_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Linkedin Follower Count","description":"LinkedIn follower count."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Short company description."},"tagline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tagline","description":"Company tagline / LinkedIn headline."},"source_band":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Band","description":"ICP band that first surfaced this company."},"source_query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Query","description":"Query variation that first surfaced this company."},"match_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Match Score","description":"0-100 LLM closeness score to the canonical intent (100 = textbook match). Rows are ordered best-fit-first by this score within each ICP band."}},"type":"object","title":"TamCompanyResult","description":"One company in the TAM master set. Inherits the lookalike projection +\nClickHouse firmographic enrichment, plus which grid cell first surfaced it."},"TechIntentJobResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"manifest":{"anyOf":[{"$ref":"#/components/schemas/TechIntentManifest"},{"type":"null"}]},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"rows":{"items":{"type":"object"},"type":"array","title":"Rows","description":"One page of qualified companies. Each row carries the /tech/companies hit fields plus an `intent` block ({activity, reason, qualified_job})."},"page":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"count":{"type":"integer","title":"Count","default":0}},"type":"object","required":["job_id","status"],"title":"TechIntentJobResponse"},"TechIntentManifest":{"properties":{"pages":{"type":"integer","title":"Pages"},"page_size":{"type":"integer","title":"Page Size"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count","description":"Qualified companies written. Null on a partial (failed) manifest."},"partial":{"type":"boolean","title":"Partial","default":false},"tech":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tech"},"activity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activity"},"companies_scanned":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Companies Scanned","description":"Companies whose evidence job was LLM-verified."},"companies_skipped_no_evidence":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Companies Skipped No Evidence"},"companies_qualified":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Companies Qualified"},"total_companies_matched":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Companies Matched","description":"Approximate companies matching the tech search, pre-verification."},"credits_consumed":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credits Consumed"}},"type":"object","required":["pages","page_size"],"title":"TechIntentManifest"},"TechIntentSearchRequest":{"properties":{"tech":{"type":"string","maxLength":128,"minLength":1,"title":"Tech","description":"Technology to search for in job descriptions (e.g. 'Snowflake', 'Kubernetes')."},"activity":{"type":"string","maxLength":500,"minLength":1,"title":"Activity","description":"The activity intent to verify, e.g. 'using Snowflake for ML feature pipelines' or 'migrating off Redshift'. Acts as a HARD filter: a company qualifies only when its job posting mentions the tech in a way consistent with this activity."},"variations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Variations","description":"Optional alternate phrasings of the tech. Each is OR-matched as a phrase."},"lookback_days":{"type":"integer","maximum":365.0,"minimum":1.0,"title":"Lookback Days","description":"Lookback window in days (1–365).","default":365},"limit":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Limit","description":"Maximum number of QUALIFIED companies to return. The scan walks the ranked pool and early-stops once this many companies pass intent verification.","default":100},"exclude_vendor":{"type":"boolean","title":"Exclude Vendor","description":"Exclude the tech vendor's own job posts.","default":true},"exclude_aggregators":{"type":"boolean","title":"Exclude Aggregators","description":"Exclude known job aggregators/reposters.","default":true},"exclude_company_slugs":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Exclude Company Slugs","description":"Additional LinkedIn company slugs to exclude."},"enrich":{"type":"boolean","title":"Enrich","description":"Hydrate qualified companies with firmographics. Auto-enabled when any firmographic filter is set.","default":false},"hq_country_code":{"anyOf":[{"type":"string","maxLength":3,"minLength":3},{"type":"null"}],"title":"Hq Country Code","description":"Filter by HQ ISO 3166-1 alpha-3 code (full list via GET /api/v2/tech/country-options). Auto-enables `enrich`."},"min_employee_count":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Min Employee Count","description":"Inclusive lower bound on employee count. Auto-enables `enrich`."},"max_employee_count":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Employee Count","description":"Inclusive upper bound on employee count. Auto-enables `enrich`."}},"type":"object","required":["tech","activity"],"title":"TechIntentSearchRequest"},"TechIntentSubmitResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"},"requested_limit":{"type":"integer","title":"Requested Limit"}},"type":"object","required":["job_id","status","message","requested_limit"],"title":"TechIntentSubmitResponse"},"TechStackFirstMentionRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"technography":{"type":"string","title":"Technography","description":"Technology to detect first mention for (e.g. 'Kubernetes', 'dbt')"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"type":"integer","title":"Icp Id","description":"ICP ID for company filtering (required)"},"timeframe":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Lookback window in days","default":90},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","technography","icp_id"],"title":"TechStackFirstMentionRequest","description":"[descriptive_icp] companies mentioning [technography] for the first time"},"TechStackRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"technography":{"type":"string","title":"Technography","description":"Technology to search for (e.g. 'Segment', 'Snowflake', 'Kubernetes')"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"type":"integer","title":"Icp Id","description":"ICP ID for company filtering (required)"},"timeframe":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Lookback window in days","default":90},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","technography","icp_id"],"title":"TechStackRequest","description":"[descriptive_icp] companies using [technography]"},"TechStackSpikeRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"technography":{"type":"string","title":"Technography","description":"Technology to detect spike for (e.g. 'Kubernetes', 'Snowflake')"},"count_threshold":{"type":"integer","minimum":2.0,"title":"Count Threshold","description":"Minimum matching job posts to qualify as a spike"},"timeframe":{"type":"integer","maximum":365.0,"minimum":1.0,"title":"Timeframe","description":"Window in days to count posts within"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"type":"integer","title":"Icp Id","description":"ICP ID for company filtering (required)"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","technography","count_threshold","timeframe","icp_id"],"title":"TechStackSpikeRequest","description":"[descriptive_icp] companies mentioning [technography] in [count_threshold]+ job posts in [timeframe] days"},"TechUseCaseRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"technography":{"type":"string","title":"Technography","description":"Technology (e.g. 'Snowflake', 'Datadog')"},"use_case":{"type":"string","title":"Use Case","description":"Use case context (e.g. 'customer data platform', 'observability rollout')"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"type":"integer","title":"Icp Id","description":"ICP ID for company filtering (required)"},"timeframe":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Lookback window in days","default":90},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name","technography","use_case","icp_id"],"title":"TechUseCaseRequest","description":"[descriptive_icp] companies using [technography] for [use_case]"},"TimelineEvent":{"properties":{"event_id":{"type":"string","title":"Event Id","description":"Unique event identifier"},"event_type":{"type":"string","title":"Event Type","description":"Type of event: 'signal', 'crm_activity', 'person_added'"},"event_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Date","description":"ISO format datetime when the event occurred"},"title":{"type":"string","title":"Title","description":"Brief event title"},"description":{"type":"string","title":"Description","description":"Detailed event description","default":""},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"URL or source of the event"},"metadata":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional event-specific data"}},"type":"object","required":["event_id","event_type","title"],"title":"TimelineEvent","description":"A single event in an account's timeline."},"TimelineResponse":{"properties":{"account_id":{"type":"integer","title":"Account Id","description":"Account ID"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name","description":"Account name"},"events":{"items":{"$ref":"#/components/schemas/TimelineEvent"},"type":"array","title":"Events","description":"List of timeline events"},"total_events":{"type":"integer","title":"Total Events","description":"Total number of events","default":0},"pagination":{"anyOf":[{"$ref":"#/components/schemas/PaginationMetadata"},{"type":"null"}],"description":"Pagination metadata"}},"type":"object","required":["account_id"],"title":"TimelineResponse","description":"Response containing account timeline events."},"TraitOnlyRequest":{"properties":{"name":{"type":"string","title":"Name","description":"Name/identifier for this signal run"},"descriptive_icp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descriptive Icp","description":"Company type/industry (e.g. 'B2B fintech', 'Vertical SaaS')"},"icp_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Icp Id","description":"ICP ID for firmographic filtering. Required unless accounts provided."},"timeframe":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Timeframe","description":"Lookback window in days","default":90},"speed_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Speed Mode","description":"Skip blocklist/dedup for faster results","default":false},"accounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/AccountInput"},"type":"array"},{"type":"null"}],"title":"Accounts","description":"Upload accounts (website/linkedin_url) instead of trait search"},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Run this signal daily to discover new results","default":false},"account_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Audience Name","description":"Audience name for discovered accounts (default: '<name> - Accounts')"},"people_audience_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"People Audience Name","description":"Audience name for people enrichment (default: '<name> - People')"},"max_credit_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Credit Limit","description":"Credit limit for this signal"},"enable_safe_crm_addition":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Addition","description":"Auto-add discovered accounts to CRM","default":false},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Enrich discovered people with work emails. Requires enable_safe_crm_addition.","default":false},"advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Advanced People Finder","description":"Enable advanced LLM-based people finder","default":false}},"type":"object","required":["name"],"title":"TraitOnlyRequest","description":"Find [descriptive_icp] companies matching ICP"},"TraitSearchResponse":{"properties":{"query":{"type":"string","title":"Query","description":"The search query that was executed"},"results":{"items":{"$ref":"#/components/schemas/TraitSearchResult"},"type":"array","title":"Results","description":"List of matching accounts ranked by relevance"},"total":{"type":"integer","title":"Total","description":"Total number of results returned"}},"type":"object","required":["query","results","total"],"title":"TraitSearchResponse","description":"Response for trait search."},"TraitSearchResult":{"properties":{"id":{"type":"integer","title":"Id","description":"Account ID"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Company name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain","description":"Company domain"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Company description used for matching"},"similarity":{"type":"number","title":"Similarity","description":"Relevance score (0-1, higher is more relevant)"},"technographics":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Technographics","description":"Technologies used by the company"},"in_crm":{"type":"boolean","title":"In Crm","description":"Whether this account exists in your CRM","default":false},"is_exported":{"type":"boolean","title":"Is Exported","description":"Whether this account has been exported to a campaign","default":false}},"type":"object","required":["id","similarity"],"title":"TraitSearchResult","description":"Single account in trait search results."},"UpdateICPRequest":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"target_roles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Target Roles"},"employee_ranges":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Employee Ranges"},"min_funding":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Min Funding"},"max_funding":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Max Funding"},"employee_count_funding_config":{"anyOf":[{"type":"string","enum":["AND","OR"]},{"type":"null"}],"title":"Employee Count Funding Config"},"location":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Location"},"sub_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sub Locations"},"people_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"People Locations"},"people_sub_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"People Sub Locations"}},"type":"object","required":["id"],"title":"UpdateICPRequest"},"UpdateICPResponse":{"properties":{"icp":{"$ref":"#/components/schemas/ICPItem"}},"type":"object","required":["icp"],"title":"UpdateICPResponse"},"UpdateSignalRequest":{"properties":{"signal_id":{"type":"integer","title":"Signal Id","description":"Signal ID to edit"},"signal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Name","description":"New signal name. Min 3 characters, must be unique within the workspace."},"enable_run_daily":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Run Daily","description":"Run Daily toggle. If `true`, this signal runs automatically every day."},"max_credit_limit":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Max Credit Limit","description":"Per-run credit budget. Send an explicit `null` to remove the limit."},"enable_safe_crm_sync":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Safe Crm Sync","description":"Safe CRM sync toggle: accounts already in the CRM only get signal/data updates — no ownership change, contacts, or notifications."},"auto_enrich_people_emails":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Enrich People Emails","description":"Automatically enrich emails for people discovered by this signal."},"enable_advanced_people_finder":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Advanced People Finder","description":"Advanced people finder: additionally run the full LLM-based people discovery pipeline on qualified accounts (charges credits). Fast people enrichment always runs regardless."}},"type":"object","required":["signal_id"],"title":"UpdateSignalRequest","description":"Editable signal settings. Omitted fields are left unchanged."},"UpdateViewRequest":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"New view name (unique per user)"},"filters":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Filters","description":"Replacement filters, in the shape matching the view's type: for an 'accounts' view the field names from GET /api/v2/account/filters (e.g. funding_stage_include, country_include); for a 'people' view the People filter fields from GET /api/v1/people/filters (e.g. seniority_include, department_include, acct_industry_include). Replaces the view's filters entirely."},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default","description":"Set or unset this view as the default view"},"slack_notifications":{"anyOf":[{"$ref":"#/components/schemas/ViewSlackConfig"},{"type":"null"}]},"webhook_notifications":{"anyOf":[{"$ref":"#/components/schemas/ViewWebhookConfig"},{"type":"null"}]},"crm_assignment":{"anyOf":[{"$ref":"#/components/schemas/ViewCrmAssignment"},{"type":"null"}]},"amplemarket_sequencing":{"anyOf":[{"$ref":"#/components/schemas/ViewAmplemarketConfig"},{"type":"null"}]}},"type":"object","title":"UpdateViewRequest","description":"Request to partially update a saved view. Omitted fields are left unchanged.\n\nview_type cannot be changed after creation, so it is not a field here."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyPeopleJobRequest":{"properties":{"people_ids":{"items":{"type":"integer"},"type":"array","maxItems":500,"minItems":1,"title":"People Ids","description":"People IDs to verify against their associated companies (max 500 per request)"}},"type":"object","required":["people_ids"],"title":"VerifyPeopleJobRequest","description":"Request to start a people verification job."},"VerifyPeopleJobStartResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"},"total_people":{"type":"integer","title":"Total People"}},"type":"object","required":["job_id","status","message","total_people"],"title":"VerifyPeopleJobStartResponse","description":"Response when a people verification job is created."},"VerifyPeopleJobStatusResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"job_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Type"},"status":{"type":"string","title":"Status"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"result":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Result"}},"type":"object","required":["job_id","status"],"title":"VerifyPeopleJobStatusResponse","description":"Response when polling a people verification job status."},"VerticalHiringSignalV2":{"properties":{"signal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Signal Id"},"signal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Name"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"job_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title"},"job_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Location"},"job_posting":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Posting"},"job_posted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Posted At"},"detected_by_openfunnel_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detected By Openfunnel At"},"extracted_team_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extracted Team Name"},"discovered_signal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Discovered Signal Id"},"signal_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Date"},"archived":{"type":"boolean","title":"Archived","description":"True when the signal's date (signal_date) is older than 7 days or unknown — the signal is shown under Archived rather than Recent.","default":false},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"people":{"items":{"$ref":"#/components/schemas/SignalPerson"},"type":"array","title":"People"}},"type":"object","title":"VerticalHiringSignalV2"},"VerticalSocialSignalV2":{"properties":{"signal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Signal Id"},"signal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Name"},"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"post_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Post Content"},"posted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Posted At"},"detected_by_openfunnel_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detected By Openfunnel At"},"is_poster_person":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Poster Person"},"poster_person":{"anyOf":[{"$ref":"#/components/schemas/SignalPerson"},{"type":"null"}]},"extracted_team_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Extracted Team Name"},"discovered_signal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Discovered Signal Id"},"signal_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Date"},"archived":{"type":"boolean","title":"Archived","description":"True when the signal's date (signal_date) is older than 7 days or unknown — the signal is shown under Archived rather than Recent.","default":false},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"people":{"items":{"$ref":"#/components/schemas/SignalPerson"},"type":"array","title":"People"}},"type":"object","title":"VerticalSocialSignalV2"},"VerticalSummary":{"properties":{"id":{"type":"integer","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"event_type_count":{"type":"integer","title":"Event Type Count","default":0}},"type":"object","required":["id","slug","name"],"title":"VerticalSummary"},"VerticalTechnographySignalV2":{"properties":{"signal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Signal Id"},"signal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Name"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"job_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title"},"job_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Location"},"job_posting":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Posting"},"job_posted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Posted At"},"detected_by_openfunnel_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detected By Openfunnel At"},"matched_technographics":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Matched Technographics"},"context_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context Summary"},"posting_qualification_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Posting Qualification Reasoning"},"discovered_signal_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Discovered Signal Id"},"signal_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Date"},"archived":{"type":"boolean","title":"Archived","description":"True when the signal's date (signal_date) is older than 7 days or unknown — the signal is shown under Archived rather than Recent.","default":false},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"},"people":{"items":{"$ref":"#/components/schemas/SignalPerson"},"type":"array","title":"People"}},"type":"object","title":"VerticalTechnographySignalV2"},"ViewAmplemarketConfig":{"properties":{"enabled":{"type":"boolean","title":"Enabled","description":"Whether new people matching this view are auto-added to an Amplemarket sequence"},"sequence_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sequence Id","description":"Amplemarket sequence ID (from GET /api/v1/views/options). Required when enabled."}},"type":"object","required":["enabled"],"title":"ViewAmplemarketConfig","description":"Amplemarket sequencing settings for a view."},"ViewCrmAssignment":{"properties":{"enabled":{"type":"boolean","title":"Enabled","description":"Whether matched accounts are synced and assigned in the connected CRM"},"mode":{"anyOf":[{"type":"string","enum":["single","round_robin"]},{"type":"null"}],"title":"Mode","description":"'single' assigns every account to one user; 'round_robin' rotates across users. Required when enabled."},"assignee_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee Id","description":"CRM user ID to assign accounts to (from GET /api/v1/views/options). Required when mode is 'single'."},"assignee_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Assignee Ids","description":"CRM user IDs to rotate assignments across. Required (non-empty) when mode is 'round_robin'."},"override_owner_ids":{"items":{"type":"string"},"type":"array","title":"Override Owner Ids","description":"CRM user IDs whose existing account ownership may be overridden. Accounts owned by anyone else keep their owner."}},"type":"object","required":["enabled"],"title":"ViewCrmAssignment","description":"CRM assignment settings for a view.\n\nThe CRM type (Salesforce or HubSpot) is detected automatically from the\nconnected CRM integration, so it does not need to be specified."},"ViewDetailResponse":{"properties":{"view":{"$ref":"#/components/schemas/SavedViewItem"}},"type":"object","required":["view"],"title":"ViewDetailResponse","description":"Response for the get view endpoint. Never carries the webhook secret."},"ViewOptionsAmplemarket":{"properties":{"connected":{"type":"boolean","title":"Connected","default":false},"sequences":{"items":{"$ref":"#/components/schemas/AmplemarketSequenceOption"},"type":"array","title":"Sequences"}},"type":"object","title":"ViewOptionsAmplemarket","description":"Amplemarket configuration options for views."},"ViewOptionsCrm":{"properties":{"connected":{"type":"boolean","title":"Connected","default":false},"crm_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Crm Type","description":"'salesforce' or 'hubspot' when connected"},"users":{"items":{"$ref":"#/components/schemas/CrmUserOption"},"type":"array","title":"Users"}},"type":"object","title":"ViewOptionsCrm","description":"CRM configuration options for views."},"ViewOptionsResponse":{"properties":{"slack":{"$ref":"#/components/schemas/ViewOptionsSlack"},"crm":{"$ref":"#/components/schemas/ViewOptionsCrm"},"amplemarket":{"$ref":"#/components/schemas/ViewOptionsAmplemarket"}},"type":"object","required":["slack","crm","amplemarket"],"title":"ViewOptionsResponse","description":"Everything needed to build a view's notification / assignment config."},"ViewOptionsSlack":{"properties":{"connected":{"type":"boolean","title":"Connected","default":false},"channels":{"items":{"$ref":"#/components/schemas/SlackChannelOption"},"type":"array","title":"Channels"}},"type":"object","title":"ViewOptionsSlack","description":"Slack configuration options for views."},"ViewResponse":{"properties":{"view":{"$ref":"#/components/schemas/SavedViewItem"},"webhook_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Secret","description":"Webhook signing secret, returned only once, when a webhook is configured or its URL changes. Store it securely."},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["view"],"title":"ViewResponse","description":"Response for the create / update view endpoints."},"ViewSlackConfig":{"properties":{"enabled":{"type":"boolean","title":"Enabled","description":"Whether Slack notifications are enabled for this view"},"target":{"type":"string","enum":["dm","channel"],"title":"Target","description":"Where to send notifications: 'dm' (direct message to the connected Slack user) or 'channel'","default":"dm"},"channel_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel Id","description":"Slack channel ID to notify (from GET /api/v1/views/options). Required when target is 'channel'."}},"type":"object","required":["enabled"],"title":"ViewSlackConfig","description":"Slack notification settings for a view."},"ViewWebhookConfig":{"properties":{"enabled":{"type":"boolean","title":"Enabled","description":"Whether webhook notifications are enabled for this view"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"HTTPS URL that receives insight alert payloads. Required when enabled."}},"type":"object","required":["enabled"],"title":"ViewWebhookConfig","description":"Webhook notification settings for a view."}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}