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
- Get a free key. Sign up at app.leadocean.io/register. No card, 1,000 records.
- Size and load your companies. Count the list free with
GET /v1/companies/count, then paste the domains into a Clay table, oneDomaincolumn. - Add the company column. POST each domain to
https://api.leadocean.io/v1/companies/enrichand keepcompany_data.company_description. Clay lists the HTTP API column on Growth and Enterprise (Clay pricing, September 2026). - 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).
- Pull the people. Add a second HTTP API column that calls
GET /v1/companies/{domain}/people. Records are thin, one record per person returned. - Match and enrich. Pick the roster person whose title fits a persona, then enrich by
person_idwithreveal_emailtrue. A conditional run keeps the column from firing on empty rows (Clay docs, October 2026). - 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).
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.
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 field | Clay column | Note |
|---|---|---|
data.company_data.company_description | Company line | Input to the persona AI column, when held. |
data[] from the people roster | Roster | Thin records. Filter by title in a formula. |
data[].meta.source_ids.person_id | Person ID | Where people-search rows carry the id. Send it alone to enrich. |
data.profile_data.profile_full_name | Full name | Use it in the greeting. |
data.contact_data.contact_current_experiences | Current role | Holds job_title and company_name. |
data.contact_data.email_status | Email status | Read 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
| Symptom | Cause | Fix |
|---|---|---|
| No HTTP API column | Clay Free or Launch plan | The column starts on Growth. Run the calls from a script and import the CSV. |
| 401 on every row | Wrong header | Use x-api-key, not Authorization. |
| 404 on the roster | Company has no people held | Expected and free. Skip the row. |
| No roster match for a persona | Titles differ in wording | Match on keywords, not exact strings. |
| Enrich returns 400 | Two identifiers, or a blank person_id | Send one field and skip empty cells. |
| 402 mid-run | The 1,000 free records are spent | Move to Solo or Agency. |
| 429 errors | Over 5 requests a second on Free | Lower 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 →