Pre-Black Friday: 20% off, for as long as you stayEARLYBFon Solo and AgencyEnds Nov 28Start free

Clay recipe

LeadOcean + Clay: personalize emails with a company's target personas

A table of target domains, one HTTP API column for the company, one for the people on its roster, and an AI column that writes an email naming who the company sells to.

Get your free API key →Free to start. No credit card. 1,000 records to spend whenever you like.

You get a Clay table where each target company has a short list of the personas it sells to, the people at the company who hold those titles, and a draft email that references both. Clay's own template finds companies, imports people, then has AI name two personas the company targets, such as neurologists and psychiatrists (Clay template, October 2026). This recipe keeps that idea and replaces the people step with LeadOcean calls.

The persona line is what makes the email read as written for them. "I saw you sell to RevOps leads" beats a generic opener. It also tells you which title to write to inside the account.

How it works

  1. Get a free key. Sign up at app.leadocean.io/register. No card, 1,000 records.
  2. Size and load your companies. Count the list free with GET /v1/companies/count, then paste the domains into a Clay table, one Domain column.
  3. Add the company column. POST each domain to https://api.leadocean.io/v1/companies/enrich and keep company_data.company_description. Clay lists the HTTP API column on Growth and Enterprise (Clay pricing, September 2026).
  4. Name the personas. Add a Use AI column that reads the description and returns two buyer personas as job titles. Each AI run uses one Action plus Data Credits set by the model (Clay docs, October 2026).
  5. Pull the people. Add a second HTTP API column that calls GET /v1/companies/{domain}/people. Records are thin, one record per person returned.
  6. Match and enrich. Pick the roster person whose title fits a persona, then enrich by person_id with reveal_email true. A conditional run keeps the column from firing on empty rows (Clay docs, October 2026).
  7. Draft and review. A second AI column writes the email from the persona, the person's title and the company line. Send from your own inbox or sequencer. LeadOcean has no sequencer.

Configuration

/Domain is Clay's reference to the domain column. Store the key in a saved HTTP API account rather than in plain-text headers (Clay docs, October 2026).

text
Method:   GET
URL:      https://api.leadocean.io/v1/companies/{Domain}/people?limit=25
Headers:  x-api-key: <your LeadOcean key>

Test one domain in a terminal first.

bash
curl "https://api.leadocean.io/v1/companies/acme.com/people?limit=25" \
  -H "x-api-key: $LEADOCEAN_API_KEY"

curl -X POST "https://api.leadocean.io/v1/people/enrich" \
  -H "x-api-key: $LEADOCEAN_API_KEY" \
  -H "content-type: application/json" \
  -d '{"person_id":"<id from the roster>","reveal_email":true}'

The roster call takes a domain, limit up to 100 (default 25) and a cursor. It has no title filter, so the match happens in Clay. A 404 means no people held for that company.

Field mapping

LeadOcean fieldClay columnNote
data.company_data.company_descriptionCompany lineInput to the persona AI column, when held.
data[] from the people rosterRosterThin records. Filter by title in a formula.
data[].meta.source_ids.person_idPerson IDWhere people-search rows carry the id. Send it alone to enrich.
data.profile_data.profile_full_nameFull nameUse it in the greeting.
data.contact_data.contact_current_experiencesCurrent roleHolds job_title and company_name.
data.contact_data.email_statusEmail statusRead it before you send. No refund for bounces.

Cost at 10,000 rows

LeadOcean is $0 for the first 1,000 records. For 10,000 companies use Solo at $97 a month or Agency at $497 a month. There is no per-record price.

The roster bills one record per person returned, so limit sets the cost. At 25 a page, 10,000 companies return up to 250,000 roster records. On Solo that reaches the fair-use pace and the key slows; Agency covers it. A company with no people is a 404 and costs nothing. The enrich step counts one record per matched person.

Clay's HTTP API column starts on Growth at $495 a month billed monthly, or $446 billed yearly, with 40,000 Actions and 6,000 Data Credits (Clay pricing, September 2026). Three HTTP calls and two AI runs per company use 50,000 Actions. At 0.4 credit a row on GPT-5 Mini, the two AI columns use 8,000 credits (Clay docs, October 2026). That needs Growth's 60,000-Action and 10,000-credit tiers: $290 + $460 = $750 a month billed monthly (Clay pricing, September 2026).

Troubleshooting

SymptomCauseFix
No HTTP API columnClay Free or Launch planThe column starts on Growth. Run the calls from a script and import the CSV.
401 on every rowWrong headerUse x-api-key, not Authorization.
404 on the rosterCompany has no people heldExpected and free. Skip the row.
No roster match for a personaTitles differ in wordingMatch on keywords, not exact strings.
Enrich returns 400Two identifiers, or a blank person_idSend one field and skip empty cells.
402 mid-runThe 1,000 free records are spentMove to Solo or Agency.
429 errorsOver 5 requests a second on FreeLower the column rate limit and honor Retry-After.

FAQ

Can I filter people by title in the request?

Not on the roster call. To search by title across a market, use /v1/people/search and size it free first. For account-level lists, see personalize emails to companies by ICP.

Does it work for a list of startups?

Yes. Start from the domains, as in find emails from a YC company list.

Who writes the persona line?

Your AI column does, from the company description. LeadOcean supplies the facts and the people. The prompts are in the guide to AI-personalized cold emails.

Do I need a card to test it?

No. The free plan has no card and 1,000 records, one-off.

Back to all integrations. Plans are on pricing.

Put the right person behind every persona line. Start free.

Free to start. No credit card. 1,000 records to spend whenever you like.

Get your free API key →