Skip to main content

Clay (Studio)

Studio connects to Clay tables in both directions without a Clay API key. Both directions are free: no AI and no paid lookups run, so no credits are used. Available for organizations with Studio and the Clay bridge switched on.

Import from Clay​

Every Studio client has its own inbound URL. Clay's HTTP API enrichment posts each row to it.

  1. In Studio, open the client, then Lead lists, then Clay, and click Make the Clay import link. Copy the URL and the secret (the secret is shown once).
  2. In the Clay table, add an enrichment: HTTP API. Method POST, endpoint the URL.
  3. Add a header x-clay-secret with the secret (Authorization: Bearer <secret> also works).
  4. Body: a JSON object with the columns you want, for example:
{
"email": "/Work Email",
"first_name": "/First Name",
"last_name": "/Last Name",
"company": "/Company Name",
"domain": "/Company Domain",
"title": "/Job Title",
"linkedin_url": "/LinkedIn URL",
"country": "/Country",
"phone": "/Phone"
}

POST https://slazbvfvliieskvkjtav.supabase.co/functions/v1/studio-api/v1/clay/inbound/:hookId

Authheader x-clay-secret (or Authorization: Bearer), per client
Bodyone row as a JSON object, or { "rows": [ ... ] } (at most 100 rows, 256 KB)
Rate limit1,200 rows per minute per client (429 with Retry-After)
Mapped fieldsemail (work email first), first and last name (or full name), company, domain, website, title, LinkedIn (person and company), country, city, state; phone and any other column are kept as custom fields

Rows go through the same import as a CSV: duplicates (same email, already in the pool, already in the sequencer or on the never mail list) are skipped, rows without an email but with a person and a company wait for the email waterfall, and segments sort the rest. Sending the same row twice adds it once. All rows of one day form one import in the import history ("Clay 2026-10-13").

Answer (200):

{ "ok": true, "received": 1, "sent_to_pool": 1, "unusable": 0,
"import_today": { "name": "Clay 2026-10-13", "added": 12, "duplicates": 3, "already_mailed": 0, "waiting_for_email": 1, "invalid": 0 } }

import_today counts the whole import of the day so far. Errors: 401 unknown hook or wrong secret, 403 not enabled, 413 too large, 422 no usable row, 423 Studio paused, 429 rate limited, 503 retry later.

Send to Clay​

  1. In Clay, add a source to a table: Webhook, and copy its URL (https://api.clay.com/v3/sources/webhook/...). Set an auth token there if you want one.
  2. In Studio, paste the URL (and the token) under Lead lists, Clay. Owners and admins only; it is stored encrypted.
  3. In the lead list, select leads (or keep the current filter), click Send to Clay, pick the columns and send. Studio posts one JSON object per lead, a few at a time, and retries when Clay asks to slow down. At most 10,000 rows per send.