Skip to main content
GET
/
api
/
enrichments
Get Enrichments
curl --request GET \
  --url https://app.puffle.ai/api/enrichments \
  --header 'Authorization: Bearer <token>'
{
  "enrichments": [
    {
      "id": "<string>",
      "slug": "<string>",
      "name": "<string>",
      "description": "<string>",
      "subject": "<string>",
      "version": "<string>",
      "enabled": true,
      "visibility": "<string>",
      "inputSchema": "<unknown>",
      "outputSchema": "<unknown>",
      "defaultOutput": {
        "target": "<string>",
        "attributeKey": "<string>"
      },
      "defaultOutputAttributeKey": "<string>",
      "outputOverridePolicy": "<unknown>",
      "costModel": {
        "creditAction": "<string>"
      },
      "toolBinding": {
        "type": "<string>",
        "payloadMapper": {
          "id": "<string>",
          "version": "<unknown>"
        },
        "taskId": "<string>"
      }
    }
  ]
}
CLI:
puffle enrichment
puffle enrichment --id <id> --q <q>

Overview

Returns the catalog of Enrichments the workspace can run. Each Enrichment is a typed contract — slug, subject (person or company), input schema, output schema, and cost model. Pass id (the Enrichment slug) as a query parameter to fetch one contract instead of the whole catalog. Hidden and internal Enrichments are excluded from normal discovery. Use this endpoint before calling Enrich leads so an agent knows which enrichmentId values exist and what inputs each requires. See also: Enrich leads · Enrichment status.

AI agent notes

The enrichment-discovery journey:
  1. GET /api/enrichments — see which Enrichments exist (work_email, website_overview, hiring_status, …).
  2. GET /api/enrichments?id={slug} — inspect input schema, output schema, and costModel for the one you want.
  3. POST /api/enrichment — dispatch with enrichmentId: {slug} and a Lead scope.
Pre-flight checks:
  • subject tells you whether the Enrichment expects person or company Leads. Passing the wrong subject in a Run returns a SUBJECT_MISMATCH planner error.
  • costModel.creditAction (when present) determines what credits will be charged. A missing creditAction means the Enrichment is internal or free and is not credit-gated.
  • The Enrichment object shape varies by slug; treat it as Record<string, unknown> and read slug, subject, inputSchema, outputSchema, and costModel defensively.
On 404: only fires when id is supplied and no matching visible Enrichment exists.

Authorizations

Authorization
string
header
required

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

Query Parameters

id
string
Minimum string length: 1
q
string

Response

List of Enrichments (omit id) or one Enrichment contract (with id).

enrichments
object[]
required