---
title: "List the signal library (catalog) — START HERE"
method: GET
path: "/api/v1/signal-types"
tags: ["Account Management"]
---

# List the signal library (catalog) — START HERE

`GET /api/v1/signal-types`

## Request

- Base URL: `https://api.rodz.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.rodz.io/api/v1/signal-types`
- Auth: HTTP bearer

**The entry point for building a Rodz integration.** Browse the full catalog of signal types you can create — the whole Rodz signal engine in one call, generated from the same models the API validates against, so it cannot drift from what actually works on the wire. A full integration is: call this once to pick a signal type -> `POST createEndpoint` with a body built from `configParameters` to create it -> receive leads on your `webhookUrl` shaped like `outputFields` -> `POST /api/v1/signals/{signalId}/test-webhook` to fire a synthetic test event, or `.../replay-webhook` to resend a real past one, while you build your receiver.

**Input:** none (just your API key).

**Output:** an array of signal types. Each entry gives, per type: `kind` (an open-ended `signal` or a `watchlist` narrowed to a list you supply), a use-case description, `configParameters` — the CLOSED set of request fields `createEndpoint` accepts (see `unknownParameters` for what happens to anything else), `pricingModel` — credits only, never euros, since you set your own price per credit for your customers, and at your account's own rate when it has a negotiated one — `outputFields` — the exact webhook payload shape — and `relatedSignalTypes` for the signal types it is easy to confuse this one with (a narrower watchlist sibling, the `account_watchlist` umbrella, or a similar-looking signal with different targeting). Use `createEndpoint` + `configParameters` to build the `POST /api/v1/signals/...` request, and `outputFields` to know what each delivered lead contains.

## Response `200`

Successful Response

- object: The signal library — every signal type you can create via the API.
  - `signalTypes` object[], required
    - `signalTypeId` string, required: Stable identifier for the signal type.
    - `name` string, required: Human-readable name.
    - `description` string, required: What this signal detects and delivers.
    - `category` string, required: Grouping category.
    - `kind` string, required: `"signal"` (an open-ended search) or `"watchlist"` (narrowed to a list of companies or people you supply via the watchlist membership endpoints, `GET|POST|DELETE /api/v1/watchlists/{signalId}/{companies,profiles}`).
    - `creditsPerLead` number, required: Credits your account is charged per qualified lead — your negotiated rate when your account has one, otherwise the standard price.
    - `createEndpoint` string, required: POST here (with your config) to create this signal. Always use this value rather than deriving a path from `signalTypeId` — several slugs deliberately differ from the type id (for example `company_post_reactions` is created at `/api/v1/signals/company-page-engagement`).
    - `deprecatedCreateEndpoints` string[], nullable: Older create paths for this same signal, from a past rename. Each still accepts the identical request body and delivers the identical webhook, and is kept working indefinitely — but is no longer advertised in OpenAPI as the primary path. Build new integrations against `createEndpoint`; this is only for recognising a path you may already be calling.
    - `configParameters` object, nullable: Map of the configurable `config.*` fields this signal's create endpoint accepts, keyed by the exact camelCase request field name (e.g. `companySizeFilters`, `getEmails`), each with its type, description, and allowed values / default. Copy these keys straight into your POST body. This map is CLOSED — see `unknownParameters` for what happens to a key not listed here.
    - `unknownParameters` string, nullable: What happens to a `config` key that is not one of `configParameters`' keys — either silently ignored (accepted, no effect) or rejected with a 422. There is no third option: a key you invent never changes behaviour.
    - `outputFields` string[], nullable: Dotted paths of the fields delivered on each webhook lead, in the payload's nested snake_case shape (e.g. `contact.first_name`, `company.linkedin_url`, `signal.tracked_company`).
    - `useCases` string[], nullable: Concrete example workflows this signal's leads enable — what to build with the data.
    - `pricingModel` object, nullable: How this signal is billed: credits only — no euro prices here, since you set your own price per credit for your customers.
      - `unit` string, required: The billable unit. `"per_lead_delivered"` for every signal type except `job_change_watchlist`, which bills `"per_profile_per_poll"` — see `note`.
      - `baseCredits` number, required: Credits charged per billable unit, before any add-on.
      - `addOns` object[], nullable: Optional paid enrichments this signal's `configParameters` can turn on, each charged only on success, on top of `baseCredits`.
        - `parameter` string, required: The `configParameters` key that turns this add-on on.
        - `creditsOnSuccess` number, required: Credits charged, only when the enrichment succeeds — never on a miss.
        - `description` string, required: What the add-on does.
      - `note` string, nullable: Set only when the billing unit needs explaining beyond its name.
    - `relatedSignalTypes` object[], nullable: Other signal types this one is easy to confuse with — a narrower watchlist sibling, the umbrella `account_watchlist` it can also be watched through, or a differently-targeted signal that looks similar in a UI. Check this before building a picker that merges two signal types into one toggle.
      - `signalTypeId` string, required: The other signal type's id.
      - `note` string, required: What distinguishes the two, so you pick the right one.

## Other responses

- `429`: Rate limit exceeded. Retry after the number of seconds in the `Retry-After` response header.

---

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