---
title: "Duplicate Signal"
method: POST
path: "/v1/signals/{signal_id}/duplicate"
tags: ["signals"]
---

# Duplicate Signal

`POST /v1/signals/{signal_id}/duplicate`

## Request

- Base URL: `https://api.topo.io`
- URL: `https://api.topo.io/v1/signals/{signal_id}/duplicate`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/topo/apis/topo-public-api/docs/v1/signals/:signal_id/duplicate/post.ts> (a function with typed inputs; its response is checked against the schema)

Copy a signal: same preset, filters, caps and enrichment, onto a new
destination list. The copy starts active and runs a first check
immediately; the original is left unchanged. Without a `name`, the copy
is named after the source plus " (Copy)".

Requires the `signals:write` scope on the API key.

## Path parameters

- `signal_id` string, uuid, required

## Request body

- DuplicateSignalPublicInput
  - `name` string

## Response `201`

Successful Response

- SignalPublicOutput
  - `id` string, uuid, required: Unique identifier of the signal.
  - `name` string, nullable, required: Name of the signal and of its destination list.
  - `signal_type` 'LINKEDIN_OWN_POST_ENGAGEMENT' | 'LINKEDIN_COMPETITOR_POST_ENGAGEMENT' | 'LINKEDIN_PERSON_POST_ENGAGEMENT' | 'LINKEDIN_KEYWORD_MENTION' | 'LINKEDIN_OWN_COMPANY_FOLLOWERS' | 'LINKEDIN_COMPETITOR_FOLLOWERS' | 'LINKEDIN_COMPANY_PAGE_FOLLOWERS' | 'HIRING_SIGNALS' | 'JOB_DESCRIPTION_KEYWORD' | 'FUNDING_EVENTS' | 'TECH_ADOPTION' | 'NEWS_EVENTS' | 'NEW_JOB' | 'CUSTOM_EVENT' | 'LINKEDIN_PARTNER_FOLLOWERS' | 'LINKEDIN_CUSTOMER_FOLLOWERS' | 'LINKEDIN_PARTNER_POST_ENGAGEMENT' | 'LINKEDIN_CUSTOMER_POST_ENGAGEMENT' | 'LINKEDIN_COMPANY_PAGE_POST_ENGAGEMENT' | 'LINKEDIN_OWN_PROFILE_POST_ENGAGEMENT' | 'LINKEDIN_OWN_EMPLOYEES_POST_ENGAGEMENT' | 'LINKEDIN_COMPETITOR_EMPLOYEES_POST_ENGAGEMENT' | 'LINKEDIN_PARTNER_EMPLOYEES_POST_ENGAGEMENT' | 'LINKEDIN_CUSTOMER_EMPLOYEES_POST_ENGAGEMENT' | 'LINKEDIN_OWN_BRAND_MENTION' | 'LINKEDIN_COMPETITOR_MENTION' | 'LINKEDIN_PARTNER_MENTION' | 'LINKEDIN_CUSTOMER_MENTION' | 'LINKEDIN_EVENT_MENTION' | 'COMPETITOR_TECH_ADOPTION' | 'INTEGRATION_TECH_ADOPTION' | 'LINKEDIN_EVENT_PAGE_FOLLOWERS' | 'CHAMPION_CHANGED_JOB' | 'CRM_LIST_ENTRY', required
  - `status` 'ACTIVE' | 'PAUSED' | 'ARCHIVED', required
  - `cadence` 'DAILY' | 'WEEKLY', required
  - `max_per_run` integer, nullable, required: Daily ceiling on imported entries, when one was set.
  - `max_companies_per_run` integer, nullable, required: Daily ceiling on detected companies consumed, when one was set.
  - `max_contacts_per_company` integer, nullable, required: People imported per detected company, when one was set.
  - `max_per_day` integer, required: Ceiling on the entries the signal imports in one day, resolved from the caps above.
  - `enrich_email` boolean, required: Whether imported leads get their email enriched.
  - `enrich_phones` boolean, required: Whether imported leads get their phone enriched.
  - `imported_count` integer, required: Entries the signal has imported since it was created.
  - `contact_list_id` string, uuid, nullable, required: Destination list, when the signal imports people.
  - `account_list_id` string, uuid, nullable, required: Destination list, when the signal imports companies.
  - `created_at` string, date-time, required: When the signal was created.
  - `archived_at` string, date-time, nullable, required: When the signal was retired, if it was.
  - `url` string, required: Deep link to the signal in Topo.
  - `list_url` string, nullable, required: Deep link to the destination list in Topo.

## Changes

- **2026-09-09** `d037d17aecd4`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/topo/apis/topo-public-api/changes/v1/signals/:signal_id/duplicate/post.md)

---

[API](https://skmtc.dev/topo/apis/topo-public-api.md) - [All operations](https://skmtc.dev/topo/apis/topo-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/topo/apis/topo-public-api/revisions/1eb3139a398e?raw)
