Enrich Company
OK
Not found
curl -s 'https://hcpocrfabfthlvgilymd.supabase.co/functions/v1/companies/acme.com?include=stats' \ -H 'Authorization: Bearer <SERVICE_ROLE_KEY>'
Paste-ready request bodies for Clay’s “Send to Webhook” action. Every scenario uses the same envelope — { provider, payload, external_id? } — and the same headers. Pick a scenario from the rail, copy the body, paste into Clay’s HTTP Request Body field, adjust the column mappings.
Per-row webhook fired from Clay's Companies table. The upsert is idempotent on payload.domain — use the same endpoint for find-companies output and re-enrichment runs.
Authorization: Bearer <SUPABASE_SERVICE_ROLE_KEY> Content-Type: application/json
sb_secret_* from Supabase Dashboard → Settings → API. The legacy service_role JWT still works but is on the deprecation path.{
"provider": "clay",
"payload": {
"domain": "{{column: domain}}",
"name": "{{column: name}}",
"website": "{{column: website}}",
"linkedin_url": "{{column: linkedin_url}}",
"industry": "{{column: industry}}",
"employee_count": "{{column: employee_count}}",
"country": "{{column: country}}",
"description": "{{column: description}}"
},
"external_id": "{{column: clay_row_id}}"
}{{column: name}} syntax is Clay’s mapping shorthand — replace with your actual column names. The full canonical field list lives in the API reference below.Every adapter (clay, firmable, icypeas, prospeo, manual) receives the raw payload and is responsible for normalising it into the canonical row shape before the upsert.
This keeps Clay’s output untouched (no fragile field renaming in Clay’s webhook builder), lets the adapter handle shape changes server-side (one deploy fixes all clients), and gives every raw payload a permanent audit row in raw_records.
7 endpoints · 3 schemas · service-role auth required
OK
Not found
curl -s 'https://hcpocrfabfthlvgilymd.supabase.co/functions/v1/companies/acme.com?include=stats' \ -H 'Authorization: Bearer <SERVICE_ROLE_KEY>'
OK
curl -s 'https://hcpocrfabfthlvgilymd.supabase.co/functions/v1/companies/acme.com/contacts?title=ilike.*CFO*&limit=50' \ -H 'Authorization: Bearer <SERVICE_ROLE_KEY>'
Canonical company row
Adapter rejected or skipped the payload
curl -s -X POST 'https://hcpocrfabfthlvgilymd.supabase.co/functions/v1/companies' \
-H 'Authorization: Bearer <SERVICE_ROLE_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"provider": "manual",
"payload": {"domain": "acme.com", "name": "Acme", "industry": "Software"},
"external_id": "acme-001"
}'OK
Not found
curl -s 'https://hcpocrfabfthlvgilymd.supabase.co/functions/v1/contacts/jdoe?include=company' \ -H 'Authorization: Bearer <SERVICE_ROLE_KEY>'
Canonical contact row
Adapter rejected or skipped the payload
curl -s -X POST 'https://hcpocrfabfthlvgilymd.supabase.co/functions/v1/contacts' \
-H 'Authorization: Bearer <SERVICE_ROLE_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"provider": "manual",
"payload": {
"linkedin_url": "https://www.linkedin.com/in/jdoe",
"name": "Jane Doe",
"title": "CFO",
"primary_company_domain": "acme.com"
},
"external_id": "jdoe-001"
}'Queued or processed
Sync-mode adapter failure
curl -s -X POST 'https://hcpocrfabfthlvgilymd.supabase.co/functions/v1/ingest' \
-H 'Authorization: Bearer <SERVICE_ROLE_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"provider": "clay",
"kind": "company",
"payload": {"name": "Acme", "website": "https://acme.com"},
"external_id": "clay-acme-001",
"sync": false
}'OK
curl -s 'https://hcpocrfabfthlvgilymd.supabase.co/functions/v1/admin/failed-raws?limit=100&offset=0' \ -H 'Authorization: Bearer <SERVICE_ROLE_KEY>'