Skip to main content
GET
/
api
/
signals
/
types
Get Signal Types
curl --request GET \
  --url https://app.puffle.ai/api/signals/types \
  --header 'Authorization: Bearer <token>'
{
  "types": [
    {
      "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
      "label": "<string>",
      "description": "<string>",
      "builtIn": true,
      "enabled": true,
      "position": 4503599627370495,
      "color": "<string>",
      "keywords": [
        "<string>"
      ],
      "prompt": "<string>",
      "exampleSignals": [
        {
          "source": "<string>",
          "sourceHandle": "<string>",
          "headline": "<string>",
          "timeAgoLabel": "<string>",
          "score": 0
        }
      ],
      "structuredConfig": {},
      "allowedSources": [
        "<string>"
      ],
      "sourceOverrides": [
        {
          "sourceId": "<string>",
          "enabled": true,
          "extraKeywords": [
            "<string>"
          ]
        }
      ]
    }
  ]
}
CLI:
puffle signal type
puffle signal type --ids <ids> --skip-source-enable <skip-source-enable>

Overview

Returns every signal type the caller owns, sorted by position. Each entry includes its per-source override rows under a sourceOverrides array so the UI can render the type editor without a second query. The 6 built-in defaults (Hiring, Funding, Leadership Change, Competitor Mentions, Pain Point, Product Launch) are auto-seeded on first call for new users. Existing users missing a built-in get the missing rows seeded on the next call.

AI agent notes

Seeding is idempotent. Calling this endpoint many times in rapid succession during first boot is safe.Structured vs. keyword. Structured types (kind: "structured") have empty keywords in the response — those are compiled at scan time from structuredConfig. This is expected.Filtering. Pass ids= (comma-separated) to fetch a known set of types. Omit ids= to return everything the caller owns.Cap. Up to 20 signal types per user (built-in + custom). See Create Signal Type.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

ids
string

Comma-separated type ids. Optional filter; when omitted, returns all types owned by the caller.

skipSourceEnable

When true, the lazy built-in seed runs in metadata-only mode — it inserts signal_types rows but skips the signal_source_configs upsert that enables sources. Used by onboarding so polling this endpoint doesn't accidentally activate the daily scan cron for users still in their review flow.

Available options:
true

Response

All signal types owned by the caller.

types
object[]
required