---
title: "Signal to Copy AI"
method: POST
path: "/functions/v1/api/v2/signal-to-copy"
---

# Signal to Copy AI

`POST /functions/v1/api/v2/signal-to-copy`

## Request

- Base URL: `https://api.signaliz.com`
- URL: `https://api.signaliz.com/functions/v1/api/v2/signal-to-copy`
- Auth: HTTP bearer

## Headers

- `Idempotency-Key` string

## Request body

- union
  - object
    - `company_domain` string, required
    - `person_name` string, required
    - `title` string, required
    - `campaign_offer` string, required
    - `research_prompt` string
    - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
    - `lookback_days` integer: Maximum signal age accepted for evidence and research.
    - `signal_run_id` string: Resume with the durable copy_ token returned by Signal to Copy. A Company Signal run ID can be supplied with the original recipient and campaign fields.
    - `fact_id` string: Canonical fact to resolve at its latest active event. Supported in single calls and synchronous batches of 25 or fewer.
    - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported in single calls and synchronous batches of 25 or fewer.
    - `job_id` string: Retrieve a recoverable Signal Copy batch larger than 25 rows.
    - `page` integer
    - `page_size` integer
    - `include_partial_results` boolean
    - `compact_duplicates` boolean: Return duplicate rows as duplicate_of references instead of repeating the full result payload.
    - `company_signal_result` 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[]
    - `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.
    - `max_wait_ms` integer
    - `enable_deep_search` boolean: Use the full deep-research provider portfolio. The default uses bounded credit-free first-party and Bing grounding.
    - `dry_run` boolean: Return a conservative credit estimate without provider calls, jobs, writes, or spend
    - `requests` SignalToCopyBatchRequest[]: Up to 25 requests run synchronously and may reuse signal_search_run_id, fact_id, or event_id. Batches of 26-5,000 do not accept those canonical references; they complete missing company signal research, enforce a strict 8 MiB UTF-8 encoded request ceiling, create one recoverable durable job, and return 100-row pages.
      - union: One Signal to Copy batch row. Provide signal_run_id, company_signal_result, or company_domain with person_name, title, and campaign_offer. Canonical snapshot/fact/event references are supported only when the parent batch has 25 rows or fewer.
        - object
          - `company_domain` string, required: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string, required: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string, required: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string, required: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` 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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
        - object
          - `company_domain` string: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string, required
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` 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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
        - object
          - `company_domain` string: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` CompanySignalsResult, required
            - `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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
    - `concurrency` integer
    - `batch_item_indices` integer[]: Stable global indexes for client-side chunks; one unique non-negative integer per request.
  - object
    - `company_domain` string
    - `person_name` string
    - `title` string
    - `campaign_offer` string
    - `research_prompt` string
    - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
    - `lookback_days` integer: Maximum signal age accepted for evidence and research.
    - `signal_run_id` string, required: Resume with the durable copy_ token returned by Signal to Copy. A Company Signal run ID can be supplied with the original recipient and campaign fields.
    - `fact_id` string: Canonical fact to resolve at its latest active event. Supported in single calls and synchronous batches of 25 or fewer.
    - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported in single calls and synchronous batches of 25 or fewer.
    - `job_id` string: Retrieve a recoverable Signal Copy batch larger than 25 rows.
    - `page` integer
    - `page_size` integer
    - `include_partial_results` boolean
    - `compact_duplicates` boolean: Return duplicate rows as duplicate_of references instead of repeating the full result payload.
    - `company_signal_result` 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[]
    - `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.
    - `max_wait_ms` integer
    - `enable_deep_search` boolean: Use the full deep-research provider portfolio. The default uses bounded credit-free first-party and Bing grounding.
    - `dry_run` boolean: Return a conservative credit estimate without provider calls, jobs, writes, or spend
    - `requests` SignalToCopyBatchRequest[]: Up to 25 requests run synchronously and may reuse signal_search_run_id, fact_id, or event_id. Batches of 26-5,000 do not accept those canonical references; they complete missing company signal research, enforce a strict 8 MiB UTF-8 encoded request ceiling, create one recoverable durable job, and return 100-row pages.
      - union: One Signal to Copy batch row. Provide signal_run_id, company_signal_result, or company_domain with person_name, title, and campaign_offer. Canonical snapshot/fact/event references are supported only when the parent batch has 25 rows or fewer.
        - object
          - `company_domain` string, required: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string, required: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string, required: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string, required: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` 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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
        - object
          - `company_domain` string: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string, required
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` 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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
        - object
          - `company_domain` string: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` CompanySignalsResult, required
            - `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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
    - `concurrency` integer
    - `batch_item_indices` integer[]: Stable global indexes for client-side chunks; one unique non-negative integer per request.
  - object
    - `company_domain` string
    - `person_name` string
    - `title` string
    - `campaign_offer` string
    - `research_prompt` string
    - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
    - `lookback_days` integer: Maximum signal age accepted for evidence and research.
    - `signal_run_id` string: Resume with the durable copy_ token returned by Signal to Copy. A Company Signal run ID can be supplied with the original recipient and campaign fields.
    - `fact_id` string: Canonical fact to resolve at its latest active event. Supported in single calls and synchronous batches of 25 or fewer.
    - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported in single calls and synchronous batches of 25 or fewer.
    - `job_id` string: Retrieve a recoverable Signal Copy batch larger than 25 rows.
    - `page` integer
    - `page_size` integer
    - `include_partial_results` boolean
    - `compact_duplicates` boolean: Return duplicate rows as duplicate_of references instead of repeating the full result payload.
    - `company_signal_result` CompanySignalsResult, required
      - `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[]
    - `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.
    - `max_wait_ms` integer
    - `enable_deep_search` boolean: Use the full deep-research provider portfolio. The default uses bounded credit-free first-party and Bing grounding.
    - `dry_run` boolean: Return a conservative credit estimate without provider calls, jobs, writes, or spend
    - `requests` SignalToCopyBatchRequest[]: Up to 25 requests run synchronously and may reuse signal_search_run_id, fact_id, or event_id. Batches of 26-5,000 do not accept those canonical references; they complete missing company signal research, enforce a strict 8 MiB UTF-8 encoded request ceiling, create one recoverable durable job, and return 100-row pages.
      - union: One Signal to Copy batch row. Provide signal_run_id, company_signal_result, or company_domain with person_name, title, and campaign_offer. Canonical snapshot/fact/event references are supported only when the parent batch has 25 rows or fewer.
        - object
          - `company_domain` string, required: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string, required: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string, required: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string, required: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` 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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
        - object
          - `company_domain` string: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string, required
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` 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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
        - object
          - `company_domain` string: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` CompanySignalsResult, required
            - `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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
    - `concurrency` integer
    - `batch_item_indices` integer[]: Stable global indexes for client-side chunks; one unique non-negative integer per request.
  - object
    - `company_domain` string
    - `person_name` string
    - `title` string
    - `campaign_offer` string
    - `research_prompt` string
    - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
    - `lookback_days` integer: Maximum signal age accepted for evidence and research.
    - `signal_run_id` string: Resume with the durable copy_ token returned by Signal to Copy. A Company Signal run ID can be supplied with the original recipient and campaign fields.
    - `fact_id` string: Canonical fact to resolve at its latest active event. Supported in single calls and synchronous batches of 25 or fewer.
    - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported in single calls and synchronous batches of 25 or fewer.
    - `job_id` string: Retrieve a recoverable Signal Copy batch larger than 25 rows.
    - `page` integer
    - `page_size` integer
    - `include_partial_results` boolean
    - `compact_duplicates` boolean: Return duplicate rows as duplicate_of references instead of repeating the full result payload.
    - `company_signal_result` 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[]
    - `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.
    - `max_wait_ms` integer
    - `enable_deep_search` boolean: Use the full deep-research provider portfolio. The default uses bounded credit-free first-party and Bing grounding.
    - `dry_run` boolean: Return a conservative credit estimate without provider calls, jobs, writes, or spend
    - `requests` SignalToCopyBatchRequest[], required: Up to 25 requests run synchronously and may reuse signal_search_run_id, fact_id, or event_id. Batches of 26-5,000 do not accept those canonical references; they complete missing company signal research, enforce a strict 8 MiB UTF-8 encoded request ceiling, create one recoverable durable job, and return 100-row pages.
      - union: One Signal to Copy batch row. Provide signal_run_id, company_signal_result, or company_domain with person_name, title, and campaign_offer. Canonical snapshot/fact/event references are supported only when the parent batch has 25 rows or fewer.
        - object
          - `company_domain` string, required: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string, required: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string, required: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string, required: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` 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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
        - object
          - `company_domain` string: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string, required
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` 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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
        - object
          - `company_domain` string: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` CompanySignalsResult, required
            - `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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
    - `concurrency` integer
    - `batch_item_indices` integer[]: Stable global indexes for client-side chunks; one unique non-negative integer per request.
  - object
    - `company_domain` string
    - `person_name` string
    - `title` string
    - `campaign_offer` string
    - `research_prompt` string
    - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
    - `lookback_days` integer: Maximum signal age accepted for evidence and research.
    - `signal_run_id` string: Resume with the durable copy_ token returned by Signal to Copy. A Company Signal run ID can be supplied with the original recipient and campaign fields.
    - `fact_id` string: Canonical fact to resolve at its latest active event. Supported in single calls and synchronous batches of 25 or fewer.
    - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported in single calls and synchronous batches of 25 or fewer.
    - `job_id` string, required: Retrieve a recoverable Signal Copy batch larger than 25 rows.
    - `page` integer
    - `page_size` integer
    - `include_partial_results` boolean
    - `compact_duplicates` boolean: Return duplicate rows as duplicate_of references instead of repeating the full result payload.
    - `company_signal_result` 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[]
    - `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.
    - `max_wait_ms` integer
    - `enable_deep_search` boolean: Use the full deep-research provider portfolio. The default uses bounded credit-free first-party and Bing grounding.
    - `dry_run` boolean: Return a conservative credit estimate without provider calls, jobs, writes, or spend
    - `requests` SignalToCopyBatchRequest[]: Up to 25 requests run synchronously and may reuse signal_search_run_id, fact_id, or event_id. Batches of 26-5,000 do not accept those canonical references; they complete missing company signal research, enforce a strict 8 MiB UTF-8 encoded request ceiling, create one recoverable durable job, and return 100-row pages.
      - union: One Signal to Copy batch row. Provide signal_run_id, company_signal_result, or company_domain with person_name, title, and campaign_offer. Canonical snapshot/fact/event references are supported only when the parent batch has 25 rows or fewer.
        - object
          - `company_domain` string, required: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string, required: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string, required: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string, required: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` 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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
        - object
          - `company_domain` string: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string, required
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` 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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
        - object
          - `company_domain` string: Maximum 253 UTF-8 bytes in durable batches.
          - `person_name` string: Maximum 500 UTF-8 bytes in durable batches.
          - `title` string: Maximum 500 UTF-8 bytes in durable batches.
          - `campaign_offer` string: Maximum 4,000 UTF-8 bytes in durable batches.
          - `research_prompt` string: Maximum 2,000 UTF-8 bytes in durable batches.
          - `run_without_signal` boolean: Set true to draft from the campaign offer without researching or claiming a company signal.
          - `lookback_days` integer
          - `signal_run_id` string
          - `fact_id` string: Canonical fact to resolve at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `event_id` string: Canonical event pointer whose fact is resolved at its latest active event. Supported only when the parent batch has 25 rows or fewer.
          - `company_signal_result` CompanySignalsResult, required
            - `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[]
              - …
            - `company` CompanyIdentity
              - …
            - `signals` CompanySignal[]
              - …
            - `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[]
          - `enable_deep_search` boolean
          - `max_wait_ms` integer
          - `idempotency_key` string
    - `concurrency` integer
    - `batch_item_indices` integer[]: Stable global indexes for client-side chunks; one unique non-negative integer per request.

## Response `200`

Three complete evidence-backed email variations, or a successful completed-empty result when research has no supported signal

- SignalToCopyResult
  - `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
  - `status` string
  - `job_id` string
  - `job_capability` 'signal_to_copy'
  - `next_poll_after_seconds` integer
  - `page` integer
  - `page_size` integer
  - `total_results` integer
  - `total_pages` integer
  - `has_more` boolean
  - `run_id` string: Durable Signal Copy resume token. Re-call Signal to Copy with this ID alone.
  - `signal_run_id` string: Durable Signal Copy resume token. Equivalent to run_id on completed and recoverable responses.
  - `company_signal_run_id` string: Upstream Company Signal run used as copy evidence.
  - `signal_search_run_id` string: Signals First snapshot reused for this copy, when supplied.
  - `fact_id` string: Exact canonical fact used to draft this copy.
  - `event_id` string: Exact canonical event used to draft this copy.
  - `canonical_source_url` string, uri: Canonical source evidence used by the copy.
  - `evidence_reuse` object: Canonical evidence pointer proving the copy reused an existing signal rather than rediscovering it.
    - `source` string
    - `fact_id` string
    - `event_id` string
    - `signal_snapshot_id` string
  - `resume_context_persisted` boolean: True when run_id can rehydrate the original Signal Copy request without other fields.
  - `copy_evidence_mode` 'signal_led' | 'firmographic': Whether the copy uses company signals or only the campaign offer and research prompt.
  - `strongest_signal` string
  - `confidence` number
  - `evidence_url` string, uri
  - `variations` SignalToCopyVariation[]
    - `style` 'signal_led' | 'business_case' | 'predictive', required
    - `subject_line` string, required
    - `opening_line` string, required
    - `cta` string, required
    - `prediction` string
    - `email` string, required
  - `empty` boolean
  - `empty_reason` 'NO_SUPPORTED_SIGNAL'
  - `research_metadata` object
  - `credits_used` number
  - `cache_hit` boolean
  - `live_provider_called` boolean
  - `result_returned_from` 'stored_signal_copy' | 'available_data' | 'fresh_signal_enrichment' | 'negative_cache'
  - `unlimited_signal_to_copy` boolean: True when the current plan includes Unlimited Signal to Copy AI. Available on Team and Agency.
  - `signal_to_copy_entitlement` 'unlimited' | 'standard'
  - `total` integer
  - `succeeded` integer
  - `failed` integer
  - `input_duplicates_suppressed` integer
  - `unique_tasks_dispatched` integer
  - `unique_signal_lookups` integer
  - `credits_consumed` number
  - `idempotency_replayed` boolean
  - `idempotency_key` string
  - `results` SignalToCopyResult[]

## Other responses

- `202`: A 26-5,000-row Signal Copy 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 work.
- `410`: BATCH_RESULTS_EXPIRED: the durable job completed, but retained result pages were cleaned up. Review before resubmitting 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.
- `422`: signal_run_id belongs to a different company_domain
- `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)
