Playbooks API
Account intelligence for GTM engineers. Enrich any company with initiative-level signals, technology context, pressure points, and strategic gaps — sourced from job postings, team profiles, and public filings.
Playbooks goes beyond standard firmographic enrichment. Instead of flat data fields, you get structured intelligence about what a company is actively building, where their operational pressure is, and what initiatives they haven't started yet. Each signal includes confidence levels, evidence sources, and explicit caveats about what the data does and doesn't tell you.
https://api.yourplaybooks.com
Authentication
Authenticate by including your API key in the Authorization header of every request. Keys are prefixed with pb_ for easy identification.
curl https://api.yourplaybooks.com/v1/enrich \ -H "Authorization: Bearer pb_your_api_key" \ -H "Content-Type: application/json" \ -d '{"linkedin_url": "https://www.linkedin.com/company/example"}'
Your API key carries access privileges — keep it secure. Don't share it in client-side code, public repositories, or URLs.
Rate limits
Rate limits are applied per API key. Current limits are included in response headers.
| Limit | Default | Header |
|---|---|---|
| Per day | 100 requests | X-RateLimit-Remaining-Daily |
| Per minute | 10 requests | X-RateLimit-Remaining-Minute |
Need higher limits? Contact us to discuss volume pricing.
Errors
Playbooks uses conventional HTTP status codes. All errors return a JSON body with error and message fields.
// Error response format { "error": "invalid_linkedin_url", "message": "Provide a valid LinkedIn company page URL.", "example": "https://www.linkedin.com/company/general-dynamics" }
Enrich account
Enrich a single company with full Playbooks intelligence.
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
| linkedin_url | string | Required | LinkedIn company page URL |
| topic | string | Optional | Topic lens for the intelligence (e.g., "cloud migration", "device identity"). Shapes which signals and initiatives are surfaced. |
Example request
curl -X POST https://api.yourplaybooks.com/v1/enrich \ -H "Authorization: Bearer pb_your_api_key" \ -H "Content-Type: application/json" \ -d '{ "linkedin_url": "https://www.linkedin.com/company/general-dynamics-mission-systems", "topic": "device identity and PKI" }'
Example response
{
"success": true,
"linkedin_url": "https://www.linkedin.com/company/general-dynamics-mission-systems",
"generated_at": "2026-03-04T14:32:00.000Z",
"data": {
"tooling_in_context": { /* ... */ },
"current_state": { /* ... */ },
"initiatives": { /* ... */ }
}
}
Batch enrich
Enrich up to 25 accounts in a single request. Accounts are processed in parallel.
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
| accounts | array | Required | Array of objects, each with a linkedin_url field. Max 25. |
| topic | string | Optional | Default topic lens applied to all accounts. Can be overridden per account. |
Example request
curl -X POST https://api.yourplaybooks.com/v1/enrich/batch \ -H "Authorization: Bearer pb_your_api_key" \ -H "Content-Type: application/json" \ -d '{ "topic": "cloud infrastructure modernisation", "accounts": [ { "linkedin_url": "https://www.linkedin.com/company/ford-motor-company" }, { "linkedin_url": "https://www.linkedin.com/company/verizon" }, { "linkedin_url": "https://www.linkedin.com/company/boston-scientific" } ] }'
Response
{
"success": true,
"generated_at": "2026-03-04T14:32:00.000Z",
"summary": { "total": 3, "succeeded": 3, "failed": 0 },
"results": [
{
"linkedin_url": "https://www.linkedin.com/company/ford-motor-company",
"success": true,
"data": { /* full enrichment */ }
},
// ...
]
}
Usage stats
View your current usage and recent requests.
curl https://api.yourplaybooks.com/v1/usage \ -H "Authorization: Bearer pb_your_api_key"
{
"customer": "Acme Corp",
"today": {
"requests": 12,
"limit": 100,
"remaining": 88
},
"recentRequests": [ /* last 20 requests */ ]
}
Response schema
Every enrichment returns three intelligence layers, each designed for a specific question a GTM engineer needs answered.
tooling_in_context
What technologies and platforms are confirmed or indicated at this company, relevant to your topic lens. Each entry includes a confidence level and evidence sources.
confirmed_usage or required_expertise
high, medium, or low
current_state
Operational reality — pressure points, org signals, and critically, uncertainties and gaps. The gaps are often more valuable for outreach than the confirmed findings.
initiatives
What they're actively building toward and what they haven't started. Includes initiative classification, evidence, key uncertainties, and explicit non-findings.
platform_build, capability_building, governance
org-wide, divisional, team-level
high, medium, low
Clay integration
Use Playbooks as an enrichment step in any Clay table via the HTTP API integration.
Setup
In your Clay table, add an HTTP API enrichment step with the following configuration:
Method: POST URL: https://api.yourplaybooks.com/v1/enrich Headers: Authorization: Bearer pb_your_api_key Content-Type: application/json Body: { "linkedin_url": "{{linkedin_company_url}}", "topic": "your selling topic here" }
Map linkedin_url to your Clay column containing LinkedIn company URLs. The response fields can be parsed and mapped to columns in your table using Clay's JSON path selectors.
Useful field mappings
| Clay column | JSON path |
|---|---|
| Environment Summary | data.current_state.environmentOverview |
| Top Pressure Point | data.current_state.pressurePoints[0].pressure |
| Top Initiative | data.initiatives.initiatives[0].initiative |
| Key Gaps | data.initiatives.explicitNonFindings |
| Future State | data.initiatives.futureStateSummary |
Quickstart
Python
import requests response = requests.post( "https://api.yourplaybooks.com/v1/enrich", headers={ "Authorization": "Bearer pb_your_api_key", "Content-Type": "application/json", }, json={ "linkedin_url": "https://www.linkedin.com/company/ford-motor-company", "topic": "cloud infrastructure", }, ) data = response.json() # Get the top initiative top_initiative = data["data"]["initiatives"]["initiatives"][0] print(f"Top initiative: {top_initiative['initiative']}") print(f"Confidence: {top_initiative['confidence']}") # Get gaps — your best outreach angles gaps = data["data"]["initiatives"]["explicitNonFindings"] for gap in gaps: print(f"Gap: {gap}")
JavaScript / Node.js
const response = await fetch("https://api.yourplaybooks.com/v1/enrich", { method: "POST", headers: { "Authorization": "Bearer pb_your_api_key", "Content-Type": "application/json", }, body: JSON.stringify({ linkedin_url: "https://www.linkedin.com/company/ford-motor-company", topic: "cloud infrastructure", }), }); const { data } = await response.json(); // Pressure points — what's hurting them data.current_state.pressurePoints.forEach(p => console.log(`${p.pressure} (${p.confidence})`) ); // Explicit non-findings — your outreach angles data.initiatives.explicitNonFindings.forEach(gap => console.log(`Gap: ${gap}`) );