---
title: "Company Signal Enrichment"
method: POST
path: "/functions/v1/api/v2/company-signals"
---

# Company Signal Enrichment

`POST /functions/v1/api/v2/company-signals`

## Request

- Base URL: `https://api.signaliz.com`
- URL: `https://api.signaliz.com/functions/v1/api/v2/company-signals`
- Auth: HTTP bearer

## Headers

- `Idempotency-Key` string

## Request body

- union
  - object
    - `domain` string, required: Company domain. This is the only new-enrichment input; Signaliz owns retrieval and evidence validation.
    - `dry_run` boolean: Return a conservative credit estimate without provider calls, jobs, writes, or spend
    - `signal_run_id` string: Read a previously completed signal run without duplicate spend. Incomplete runs return a terminal error
    - `job_id` string: Retrieve a recoverable Company Signal batch larger than 25 rows.
    - `page` integer
    - `page_size` integer
    - `include_partial_results` boolean
    - `idempotency_key` string: Stable cross-surface retry key. Reuse it unless an error explicitly returns retry_strategy=new_idempotency_key together with credits_used=0 and credits_charged=0.
    - `requests` CompanySignalsBatchRequest[]: Up to 25 domain-only requests run synchronously. Batches of 26-5,000 rows use one durable job. Durable requests have a strict 8 MiB UTF-8 encoded request ceiling and 25-row result pages.
      - `domain` string, required: Maximum 253 UTF-8 bytes in durable batches.
    - `research_prompt` string: Optional research lens. Omit for broad company-signal coverage.
    - `lookback_days` integer: Recent evidence window in days.
  - object
    - `domain` string: Company domain. This is the only new-enrichment input; Signaliz owns retrieval and evidence validation.
    - `dry_run` boolean: Return a conservative credit estimate without provider calls, jobs, writes, or spend
    - `signal_run_id` string, required: Read a previously completed signal run without duplicate spend. Incomplete runs return a terminal error
    - `job_id` string: Retrieve a recoverable Company Signal batch larger than 25 rows.
    - `page` integer
    - `page_size` integer
    - `include_partial_results` boolean
    - `idempotency_key` string: Stable cross-surface retry key. Reuse it unless an error explicitly returns retry_strategy=new_idempotency_key together with credits_used=0 and credits_charged=0.
    - `requests` CompanySignalsBatchRequest[]: Up to 25 domain-only requests run synchronously. Batches of 26-5,000 rows use one durable job. Durable requests have a strict 8 MiB UTF-8 encoded request ceiling and 25-row result pages.
      - `domain` string, required: Maximum 253 UTF-8 bytes in durable batches.
    - `research_prompt` string: Optional research lens. Omit for broad company-signal coverage.
    - `lookback_days` integer: Recent evidence window in days.
  - object
    - `domain` string: Company domain. This is the only new-enrichment input; Signaliz owns retrieval and evidence validation.
    - `dry_run` boolean: Return a conservative credit estimate without provider calls, jobs, writes, or spend
    - `signal_run_id` string: Read a previously completed signal run without duplicate spend. Incomplete runs return a terminal error
    - `job_id` string: Retrieve a recoverable Company Signal batch larger than 25 rows.
    - `page` integer
    - `page_size` integer
    - `include_partial_results` boolean
    - `idempotency_key` string: Stable cross-surface retry key. Reuse it unless an error explicitly returns retry_strategy=new_idempotency_key together with credits_used=0 and credits_charged=0.
    - `requests` CompanySignalsBatchRequest[], required: Up to 25 domain-only requests run synchronously. Batches of 26-5,000 rows use one durable job. Durable requests have a strict 8 MiB UTF-8 encoded request ceiling and 25-row result pages.
      - `domain` string, required: Maximum 253 UTF-8 bytes in durable batches.
    - `research_prompt` string: Optional research lens. Omit for broad company-signal coverage.
    - `lookback_days` integer: Recent evidence window in days.
  - object
    - `domain` string: Company domain. This is the only new-enrichment input; Signaliz owns retrieval and evidence validation.
    - `dry_run` boolean: Return a conservative credit estimate without provider calls, jobs, writes, or spend
    - `signal_run_id` string: Read a previously completed signal run without duplicate spend. Incomplete runs return a terminal error
    - `job_id` string, required: Retrieve a recoverable Company Signal batch larger than 25 rows.
    - `page` integer
    - `page_size` integer
    - `include_partial_results` boolean
    - `idempotency_key` string: Stable cross-surface retry key. Reuse it unless an error explicitly returns retry_strategy=new_idempotency_key together with credits_used=0 and credits_charged=0.
    - `requests` CompanySignalsBatchRequest[]: Up to 25 domain-only requests run synchronously. Batches of 26-5,000 rows use one durable job. Durable requests have a strict 8 MiB UTF-8 encoded request ceiling and 25-row result pages.
      - `domain` string, required: Maximum 253 UTF-8 bytes in durable batches.
    - `research_prompt` string: Optional research lens. Omit for broad company-signal coverage.
    - `lookback_days` integer: Recent evidence window in days.

## Response `200`

Evidence-backed company signals

- CompanySignalsResult
  - `success` boolean
  - `index` integer
  - `duplicate_of` integer: Stable input index containing the full result for this exact duplicate.
  - `dry_run` true
  - `input_count` integer
  - `fresh_input_count` integer
  - `unique_fresh_input_count` integer
  - `recovery_read_count` integer
  - `unique_recovery_read_count` integer
  - `plan` object
  - `estimate` object
  - `estimated_credits` object
  - `credits_charged` 0
  - `side_effects` unknown[]
    - unknown
  - `company` CompanyIdentity
    - `name` string, nullable, required
    - `domain` string, nullable, required
  - `signals` CompanySignal[]
    - `date` string, date, required: Inclusive event date from the verified source.
    - `signal_type` string, required: Controlled signal classification.
    - `signal_title` string, required: Source-backed signal headline when available.
    - `signal_summary` string, required: Source-backed signal summary when available.
    - `source` string, uri, required: Verified source URL supporting the signal.
  - `signal_count` integer
  - `signal_run_id` string
  - `credits_used` number
  - `cache_hit` boolean
  - `live_provider_called` boolean
  - `result_returned_from` 'available_data' | 'fresh_signal_enrichment' | 'negative_cache'
  - `status` string
  - `job_id` string
  - `job_capability` 'enrich_company_signals'
  - `next_poll_after_seconds` integer
  - `page` integer
  - `page_size` integer
  - `total_results` integer
  - `total_pages` integer
  - `has_more` boolean
  - `idempotency_replayed` boolean
  - `idempotency_key` string
  - `invalid_input_count` integer
  - `total` integer
  - `succeeded` integer
  - `failed` integer
  - `input_duplicates_suppressed` integer
  - `unique_tasks_dispatched` integer
  - `results` CompanySignalsResult[]

## Other responses

- `202`: A 26-5,000-row Company Signal batch was queued; retrieve bounded pages with job_id.
- `409`: RESULT_INTEGRITY_001: retained result pages failed a deterministic integrity check. Do not automatically resubmit provider work.
- `410`: BATCH_RESULTS_EXPIRED: the durable job completed, but retained result pages were cleaned up. Review before resubmitting provider work.
- `413`: PAYLOAD_TOO_LARGE: a durable batch exceeded a published per-field UTF-8 bound or the 8 MiB encoded request ceiling. No provider work or credits were consumed.
- `429`: Rate limited. Retry after the indicated delay.
- `504`: A single request or synchronous batch did not finish within the request window.

---

[API](https://skmtc.dev/signaliz/apis/signaliz-api.md) · [All operations](https://skmtc.dev/signaliz/apis/signaliz-api/llms.txt) · [OpenAPI document](https://skmtc.dev/signaliz/apis/signaliz-api/revisions/53cb64feddad?raw)
