Skip to main content
GET
/
api
/
blocked-companies
List blocked companies
curl --request GET \
  --url https://app.puffle.ai/api/blocked-companies \
  --header 'Authorization: Bearer <token>'
{ "blocked": [ { "id": "bc111111-1111-1111-1111-111111111111", "user_id": "11111111-1111-1111-1111-111111111111", "domain": "acme.com", "name": "Acme Corp", "reason": "Existing customer — don't prospect", "created_at": "2026-04-20T12:00:00Z" }, { "id": "bc222222-2222-2222-2222-222222222222", "user_id": "11111111-1111-1111-1111-111111111111", "domain": null, "name": "Globex", "reason": null, "created_at": "2026-04-19T08:00:00Z" } ] }

Overview

Two operations on this path:
  • GET — returns every blocklist entry owned by the caller, newest first.
  • POST — adds one entry ({ domain, name?, reason? }) or many at once ({ entries: [...] }). Domains are normalized server-side: lowercased, protocol and www. stripped.
Bulk-path behavior:
  • Entries with both domain and name are upserted on (user_id, domain) — a re-add updates the name.
  • Entries with domain only are inserted with ignoreDuplicates: true to preserve any existing name on that domain.
  • Entries with name only go through a per-row insert; duplicate name errors are silently skipped, other errors fill failedEntries in the response.
Matching prospects are excluded at campaign launch.

AI agent notes

Shape of blocked differs. Single-add path returns blocked: { ... } (an object). Bulk path returns blocked: [ ... ] (an array). Check Array.isArray before reading.409 only fires on the single path. The bulk path never returns 409 — duplicates are silently skipped or upserted. If you need strict duplicate detection, use the single path.Domain normalization can surprise. https://www.Acme.com/ and acme.com both map to acme.com. Downstream dedup is based on that normalized form, not the input string.No edit-in-place. To change a name or reason, call deleteBlockedCompanyById then re-add.

Authorizations

Authorization
string
header
required

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

Response

Array of blocked companies. Empty array is valid for new users.

blocked
object[]
required