PitchWhip in Clay,
Zapier and your own tools.
Write a call and email opener, find the right buyer at a company and reveal a work phone or email, from a spreadsheet row or your own code. The same rules, costs and limits as the dashboard.
https://api.pitchwhip.com/v1/apiKeys and limits.
Step 1: Make a key
A team admin opens Connections, API keys, in the dashboard. The key is shown once.
Step 2: Send it with each call
Header Authorization: Bearer followed by your key. JSON in, JSON out.
Step 3: Stay under the limit
60 calls a minute a key. Over it, the answer is 429 with Retry-After.
curl https://api.pitchwhip.com/v1/api/me \ -H "Authorization: Bearer pwk_your_key"
A key acts as your account: it spends the account's reveals and allowances, exactly as the dashboard does. Paid plans and live trials only. Revoke a key on Connections and it stops at once.
Endpoints.
All under the API address above.
GET /me Check a key
Answers with the key's name when the key works. Zapier uses it to test the connection.
Cost. Free.
{ "ok": true, "key": { "id": "ak_…", "name": "Clay" } }POST /opener Write an opener
The opening line of a cold call and the first line of a cold email for one person, written with PitchWhip's opener rules and your pitch profile.
Cost. One opener from your daily allowance, as in the extension. Live trials can use it.
linkedin_urlA LinkedIn profile link. Used only to find someone PitchWhip already holds for your account (a reveal, a list or a map). PitchWhip never opens the link.name, company, titleWho the person is. Needed when PitchWhip doesn't know them yet; title is optional.your_pitchOptional. What you sell, for this call only, in place of your pitch profile's.
{
"name": "Pat Lee",
"company": "Northwind Care",
"title": "Operations Director",
"your_pitch": "Rota software for care homes"
}{
"call_opener": "Hi Pat, it's Sam from Brightline. …",
"email_opener": "Pat, teams like Northwind's lose hours every week to manual rotas, …"
}POST /buyer Find the buyer
The best-fit senior people at a company for the role you name, with their LinkedIn profile links. It uses Map a whole company and keeps them on your account map of that company.
Cost. Needs Account Maps. People added to the map count against the month's mapped-people allowance (10 at most a request), a new company against the month's company look-ups. A company you have already mapped is answered from your map, free.
company_domainThe company's website, like northwind.example. Best, as a name can match several companies.company_nameThe company's name, when you don't have the website.role_hintOptional. Who you sell to, like "Head of Sales" or "finance".maxOptional. How many people to return, 1 to 10. Default 3.
{ "company_domain": "northwind.example", "role_hint": "Head of Operations" }{
"status": "done",
"company": { "name": "Northwind Care", "domain": "northwind.example" },
"buyers": [
{ "name": "Alex Shaw", "title": "Chief Operating Officer", "department": "Operations",
"seniority": "C-level", "country": "United Kingdom",
"linkedin_url": "https://www.linkedin.com/in/…" }
]
}A large company can take longer than one request. Then the answer is 202 with { "status": "pending", "id": "by_123" }: call GET /buyer/by_123 until status is done.
No phone number or email is looked up here. Use /reveal for that.
GET /buyer/{id} Finish a buyer request
Carries on a buyer request that answered pending, and answers the same shape when it is done.
Cost. Nothing more than the request it finishes.
{ "status": "done", "company": { … }, "buyers": [ … ] }POST /reveal Reveal a phone or email
Starts a look-up of one person's work phone, work email or both.
Cost. One reveal for each detail found, exactly as on the dashboard. A miss is refunded, and a detail your account already holds is free. Paid plans only.
linkedin_urlThe person's LinkedIn profile link (required). PitchWhip never opens it.wantphone, email or both.name, company, titleWho the person is. Needed when PitchWhip doesn't hold them yet: first and last name, and the company.
{ "linkedin_url": "https://www.linkedin.com/in/pat-lee", "want": "phone", "name": "Pat Lee", "company": "Northwind Care" }{ "id": "rv_…", "status": "pending", "reveals_used": 1 }People who asked PitchWhip not to contact them, and anyone on your team's do-not-contact or do-not-call lists, never come back with a detail.
GET /reveal/{id} Check a reveal
Most reveals finish within a minute or two. Call this until status is done or failed.
Cost. Free.
{ "status": "done", "phone": "+44 …", "reveals_used": 1 }status is pending, done or failed; an id that isn't yours is 404 with status not_found. A detail that wasn't found is simply missing.
In Clay.
Use Clay's HTTP API enrichment column, one column per call.
- In PitchWhip, a team admin opens Connections, API keys, and makes a key named Clay. Copy it: it is shown once.
- In your Clay table, add an enrichment and choose HTTP API.
- Save the key as an HTTP API (Headers) account: header Authorization, value Bearer followed by a space and your key. Clay keeps it encrypted and you can reuse it in every column.
- Set the method and URL from the examples below. In the body, type / to insert a column, and keep each column reference inside double quotes.
- Under fields to return, pick the fields you want as their own columns.
Opener
Method POST
URL https://api.pitchwhip.com/v1/api/opener
Headers Authorization: Bearer {{your key}}
{
"name": "/Full Name",
"company": "/Company Name",
"title": "/Job Title"
}Fields to return: call_opener, email_opener.
Find the buyer
Method POST
URL https://api.pitchwhip.com/v1/api/buyer
Headers Authorization: Bearer {{your key}}
{
"company_domain": "/Company Domain",
"role_hint": "Head of Operations"
}Fields to return: buyers (status, and id when pending).
Start a reveal
Method POST
URL https://api.pitchwhip.com/v1/api/reveal
Headers Authorization: Bearer {{your key}}
{
"linkedin_url": "/LinkedIn Profile",
"name": "/Full Name",
"company": "/Company Name",
"want": "both"
}Fields to return: id.
Check the reveal
Method GET
URL https://api.pitchwhip.com/v1/api/reveal/
Headers Authorization: Bearer {{your key}}
After the last slash of the URL, type / and pick the column holding the id from Start a reveal. Run it a few minutes after the reveal started, or again while status is pending.
Fields to return: status, phone, email.
Reveals finish a minute or two after they start. Add the check column after the reveal column and run it once the reveal has had time; run it again while status is pending.
Errors.
Every error is { "error": { "code": "…", "message": "…" } } with one of these.
| Status | Code | When |
|---|---|---|
| 400 | bad_request | Something in the request is missing or wrong. The message says what. |
| 400 | pitch_profile | Your pitch profile needs your name and company before PitchWhip can draft. |
| 401 | unauthorized | No API key, or a key that is wrong or revoked. |
| 402 | out_of_reveals | No reveals left. Buy a pack or wait for next month's. |
| 402 | opener_limit | Today's limit for openers is reached. It resets at midnight UK time. |
| 402 | out_of_allowance | This month's Account Maps allowance (people mapped, companies or maps) is used up. |
| 403 | plan | The account is not on a paid plan or a live trial, or the call needs something the plan doesn't include. |
| 403 | do_not_contact | The person is on your team's do-not-contact list, so nothing is looked up. |
| 404 | not_found | No such reveal, buyer request or company. |
| 429 | rate_limited | More than 60 calls in a minute with one key. Wait for the Retry-After seconds. |
| 503 | unavailable | PitchWhip couldn't finish just now. Try again shortly. |
Good to know.
Who can make a key?
A team admin, on Connections in the dashboard. Each team can have 10 live keys. A key acts as your account: it spends the account's reveals and allowances, exactly as the dashboard does.
Which plans can use the API?
Paid plans and live trials. Reveals through the API need a paid plan, because contact details leaving PitchWhip count as an export. Finding buyers needs Account Maps.
Does PitchWhip visit LinkedIn for the API?
No. A LinkedIn profile link is only a way to name a person PitchWhip already holds for your account. If it doesn't, send the name and company with it.
What is logged?
Each call's route, its answer and what it used, kept for 90 days. Never the person or the contact details.
How do I stop a key?
Revoke it on Connections. It stops working at once, and so do Zapier connections made with it.
Ready for your next conversation?
Free to install in desktop Chrome. Free scripts with a work email.