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.

Base URL: All API requests should be made to 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.

LimitDefaultHeader
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.

200 Enrichment succeeded
400 Bad request — missing or invalid parameters
401 No API key provided
403 Invalid API key
429 Rate limit exceeded
502 Enrichment pipeline error — retry the request
// 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

POST /v1/enrich

Enrich a single company with full Playbooks intelligence.

Request body

ParameterTypeRequiredDescription
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

POST /v1/enrich/batch

Enrich up to 25 accounts in a single request. Accounts are processed in parallel.

Request body

ParameterTypeRequiredDescription
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

GET /v1/usage

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.

technology string Technology or platform name
usageType enum confirmed_usage or required_expertise
confidence enum high, medium, or low
notes string Context on what the evidence does and doesn't tell you
evidenceUrls array Source URLs supporting this finding
relationshipToTopic string How this technology relates to the topic lens

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.

environmentOverview string Narrative summary of the technology environment
pressurePoints array Operational pressures and pain indicators with confidence
organizationalSignals array Team structure, operating model, and scale signals
operationalCharacteristics array How they operate — support models, deployment patterns
uncertaintiesAndGaps array What we don't know — and why that matters for your outreach

initiatives

What they're actively building toward and what they haven't started. Includes initiative classification, evidence, key uncertainties, and explicit non-findings.

initiatives[] array Active and emerging initiatives
.initiative string Initiative name
.initiativeType enum platform_build, capability_building, governance
.scope enum org-wide, divisional, team-level
.confidence enum high, medium, low
.primaryEvidence array Source evidence with URLs and reasoning
.keyUncertainties array What's still unclear — conversation hooks
explicitNonFindings array Things we looked for and did not find evidence of
futureStateSummary string Narrative overview of where the company is heading
A note on confidence levels. Unlike most enrichment tools, Playbooks explicitly tells you what it doesn't know. Low-confidence signals and explicit non-findings aren't failures — they're conversation hooks. "We found no evidence of centralised certificate management" is a better outreach angle than "they use Kubernetes."

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 columnJSON path
Environment Summarydata.current_state.environmentOverview
Top Pressure Pointdata.current_state.pressurePoints[0].pressure
Top Initiativedata.initiatives.initiatives[0].initiative
Key Gapsdata.initiatives.explicitNonFindings
Future Statedata.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}`)
);
Need help? Contact us at support@yourplaybooks.com for onboarding, custom integrations, or volume pricing.