Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.wokelo.ai/llms.txt

Use this file to discover all available pages before exploring further.

1. Overview

The Target Screening API identifies and scores potential acquisition targets for a defined acquirer. Given an acquirer and a set of strategic criteria, Wokelo’s AI pipeline searches its coverage universe of 3M+ companies, evaluates each candidate target against the acquirer’s profile, M&A history, and stated thesis, and returns a ranked list with AI-generated deal scores, synergy commentary, and full firmographic and financial profiles. This is an asynchronous API — submitting a request returns a request_id immediately, and you must poll for status and then retrieve results once the job is complete. Read more about the async pattern in How Async APIs work. Each target in the result set is evaluated across five dimensions:
  • Overall Score — composite strategic fit rating (1–10)
  • Query Relevance Score — how closely the target matches the stated thesis in detailed_query and keywords
  • Deal Feasibility Score — likelihood the acquirer can financially execute the acquisition given size, balance sheet, and deal history
  • Deal Precedent Score — alignment with the acquirer’s historical M&A pattern and deal size
  • Synergy Potential Score — quantified revenue and cost synergy opportunity between acquirer and target
Each score is accompanied by an AI-written rationale and a Commentary paragraph synthesising the deal thesis — calling out specific product overlaps, customer-base expansion, integration challenges, and valuation considerations. Common use cases:
  • Corporate development — Generate a scored target pipeline for a strategic acquirer’s M&A team, refreshed quarterly
  • Buy-side M&A advisory — Build a target universe for a sponsor or strategic client engagement
  • Private equity bolt-on sourcing — Identify add-on acquisitions for portfolio companies based on their existing profile
  • Investment banking — Populate target lists for buy-side mandate pitch books or thesis-driven outreach
  • Strategic planning — Build-vs-buy analyses for new product categories or geographic expansion
This API is asynchronous. You submit a job, receive a request_id, poll until status is "COMPLETED", and then read results from the same response. See How Async APIs work.

2. Quick Start

Step 1 — Submit the job
curl --location 'https://api.wokelo.ai/api/enterprise/target-screening/enrich/' \
  --header 'Authorization: Bearer <YOUR_API_TOKEN>' \
  --header 'Content-Type: application/json' \
  --data '{
    "company": "microsoft",
    "parameters": {
      "detailed_query": "B2B SaaS companies in the cybersecurity space",
      "keywords": ["zero trust", "endpoint security"],
      "sample_companies": ["crowdstrike", "sentinelone"],
      "geography": ["USA"],
      "company_type": "private"
    }
  }'
Step 2 — Poll for completion
import time

while True:
    status_resp = requests.get(
        f"https://api.wokelo.ai/api/enterprise/request/{request_id}/status/",
        headers={"Authorization": "Bearer <YOUR_API_TOKEN>"}
    )
    status = status_resp.json()["status"]
    if status == "COMPLETED":
        break
    elif status == "FAILED":
        raise Exception("Job failed")
    print(f"Status: {status} — waiting...")
    time.sleep(5)
Step 3 — Read results
result_resp = requests.get(
    f"https://api.wokelo.ai/api/enterprise/request/{request_id}/result/",
    headers={"Authorization": "Bearer <YOUR_API_TOKEN>"}
)
targets = result_resp.json()["result"]
for t in targets:
    print(t["Name"], "— Overall Score:", t.get("Overall Score"))

3. Authentication

All requests must include a Bearer token in the Authorization HTTP header. No other authentication method is supported.
Authorization: Bearer <YOUR_API_TOKEN>
API tokens are issued from your Wokelo account. Navigate to Account Details → API Credentials in the Wokelo dashboard to get your client id and client secret. Contact support@wokelo.ai if you do not yet have API access.
Never expose your token in client-side code, browser requests, or public repositories. A missing or invalid token returns 401 Unauthorized. A valid token without sufficient plan permissions returns 403 Forbidden.

4. Request Reference

Endpoint
POST https://api.wokelo.ai/api/enterprise/target-screening/enrich/
The request body is JSON. Only company is required; all parameters fields are optional refinements. The parameters object itself must always be included in the request body — pass empty values ("", [], {}) for any fields you do not want to filter on.
ParameterTypeRequiredDescription
companystringRequiredPermalink (e.g. "microsoft") or full URL of the acquirer doing the screening. Use the Company Search API to resolve a permalink if needed.
parameters.detailed_querystringOptionalA natural-language description of the ideal target profile, strategic rationale, or deal criteria. The single highest-impact parameter for result quality. Example: "B2B SaaS companies in endpoint security and zero-trust networking with mid-market and enterprise distribution".
parameters.keywordsstring[]OptionalKeywords used to identify and filter relevant target companies. Use 3–6 product or category terms. Example: ["zero trust", "endpoint security", "EDR"].
parameters.sample_companiesstring[]OptionalPermalinks (e.g. "crowdstrike") or full URLs of representative companies to anchor the target search. Strongly recommended for niche or jargon-heavy markets. Use the Company Search API to resolve permalinks.
parameters.geographystring[]OptionalGeographic scope as ISO country codes (e.g. ["USA", "GBR"]). Defaults to global if omitted.
parameters.company_typestringOptionalOwnership type filter. Accepted values: "private", "public", "all". Defaults to "all".
parameters.employee_countstring[]OptionalHeadcount band filter. Accepted values: "1-10", "11-50", "51-100", "101-250", "251-500", "501-1000", "1001-5000", "5001-10000", "10000+". Empty array = all.
parameters.founded_yearobjectOptionalFilter by founding year. Accepts { "from": 2010 }, { "to": 2020 }, or both.
parameters.funding_stagestring[]OptionalFilter by most-recent funding stage. Accepted values: "Non-Equity Assistance", "Angel round", "Pre-seed", "Seed", "Series A" through "Series J", "Corporate-Funded", "Debt-Funded", "Private equity round", "Others". Empty array = all.
parameters.total_fundingobjectOptionalFilter by total funding raised in USD. Accepts { "from": 1000000 }, { "to": 50000000 }, or both.
parameters.revenueobjectOptionalFilter by annual revenue in USD. Accepts from and/or to values. Most useful when combined with company_type: "public".
Full request example:
curl --location 'https://api.wokelo.ai/api/enterprise/target-screening/enrich/' \
  --header 'Authorization: Bearer <YOUR_API_TOKEN>' \
  --header 'Content-Type: application/json' \
  --data '{
    "company": "microsoft",
    "parameters": {
      "detailed_query": "B2B SaaS companies in endpoint security and zero-trust networking",
      "keywords": ["zero trust", "endpoint security", "EDR"],
      "sample_companies": ["crowdstrike", "sentinelone"],
      "geography": ["USA"],
      "company_type": "private",
      "employee_count": ["101-250", "251-500"],
      "founded_year": { "from": 2015 },
      "funding_stage": ["Series B", "Series C"],
      "total_funding": { "from": 20000000 }
    }
  }'

5. Response

Job submission response

When you submit the job, you receive a response immediately with a request_id and an initial status.
{
  "request_id": "8583f59e-0412-4f1e-81e5-13cc70349cb6",
  "status": "PENDING"
}
FieldTypeDescription
request_idstringUnique identifier for this job. Use it to poll status and retrieve results.
statusstringInitial job state. One of "PENDING", "PROCESSING", "COMPLETED", "FAILED".

Completed result response

Once status is "COMPLETED", the result contains a result array of target objects.
{
  "request_id": "8583f59e-0412-4f1e-81e5-13cc70349cb6",
  "status": "COMPLETED",
  "result": [ ...target objects... ]
}

Target object fields

Each object in the result array contains the following fields: Identity & firmographics
FieldTypeDescription
PermalinkstringWokelo company identifier for the target (e.g. "postscript", "attentive"). Use this with other Wokelo APIs.
NamestringDisplay name of the target company.
WebsitestringTarget’s primary domain (e.g. "postscript.io").
HQ CitystringHeadquarters city.
HQ CountrystringHeadquarters country.
HQ ContinentstringHeadquarters continent.
FoundedstringYear the company was founded.
TypestringOwnership type: "Public" or "Private".
Operating StatusstringCurrent operational status (e.g. "Operating", "Acquired", "IPO").
Product & business
FieldTypeDescription
Product CategorystringHigh-level category describing the target’s primary product (e.g. "SMS Marketing Platform").
Core OfferingstringAI-generated paragraph describing the target’s core business and product.
Product CatalogstringComma-separated list of key products and services offered.
People & funding
FieldTypeDescription
Employees (Crunchbase)stringEmployee count band from Crunchbase (e.g. "251-500").
Employees (LinkedIn)integer or emptyEmployee count from LinkedIn. May be empty.
Funding StagestringMost recent funding stage (e.g. "Series C"). May be empty for public or bootstrapped companies.
Total Fundingfloat or emptyTotal disclosed funding raised in USD.
Last Funding DatestringDate of the most recent funding round (YYYY-MM-DD).
Key Investorsstring[]Array of notable investors. May be empty.
Financials (primarily for public companies)
FieldTypeDescription
Revenuefloat or emptyAnnual revenue in USD.
TickerstringExchange and ticker symbol (e.g. "NASDAQ:CRWD").
EBITDAfloat or emptyEarnings before interest, taxes, depreciation, and amortisation.
Net Incomefloat or emptyNet income in USD.
EBITDA Margin (%)float or emptyEBITDA as a percentage of revenue.
Net Income Margin (%)float or emptyNet income as a percentage of revenue.
EPS Dilutedfloat or emptyDiluted earnings per share.
ROA (%)float or emptyReturn on assets.
Unlevered FCFfloat or emptyUnlevered free cash flow in USD.
D/Efloat or emptyDebt-to-equity ratio.
Market Capfloat or emptyMarket capitalisation in USD.
Enterprise Valuefloat or emptyEnterprise value in USD.
EV/Revenue (LTM)float or emptyEnterprise value to last-twelve-months revenue multiple.
EV/EBITDA (LTM)float or emptyEnterprise value to LTM EBITDA multiple.
P/E (LTM)float or emptyPrice-to-earnings ratio on LTM basis.
M&A history
FieldTypeDescription
AcquisitionsstringComma-separated list of past acquisitions made by the target with year (e.g. "Tone (2021), Privy (2021)").
InvestmentsstringNotable investments made by the target. May be empty.
AI scoring
FieldTypeDescription
Overall ScorefloatComposite strategic fit score (1–10) for the target as an acquisition for the acquirer. Higher is a stronger candidate.
Overall Score RationalestringOne-sentence explanation of the Overall Score.
CommentarystringFull AI-written deal thesis paragraph evaluating strategic rationale, synergies, integration risks, and revenue impact.
Query Relevance ScorefloatScore (1–10) measuring how closely the target matches the stated thesis in detailed_query and keywords.
Query Relevance RationalestringOne-sentence rationale for the Query Relevance Score.
Deal Feasibility ScorefloatScore (1–10) assessing whether the acquirer can financially execute the acquisition given its size, balance sheet, and deal history.
Deal Feasibility RationalestringOne-sentence rationale for the Deal Feasibility Score.
Deal Precedent ScorefloatScore (1–10) measuring how closely this deal aligns with the acquirer’s historical M&A pattern and deal size.
Deal Precedent RationalestringOne-sentence rationale for the Deal Precedent Score.
Synergy Potential ScorefloatScore (1–10) estimating the revenue and cost synergies achievable post-acquisition.
Synergy Potential RationalestringOne-sentence rationale for the Synergy Potential Score.
The Commentary field is the richest AI output in the response — a full paragraph synthesising why the target does or does not fit the acquirer’s thesis. Read this carefully before relying on the numeric scores alone.

6. Examples

Buy-side sourcing for corporate development

Find acquisition targets for Klaviyo — Series A and B SMS marketing and push notification infrastructure companies in the United States — anchored on Attentive and Postscript. Filter to high-fit candidates and sort by feasibility.
curl --location 'https://api.wokelo.ai/api/enterprise/target-screening/enrich/' \
  --header 'Authorization: Bearer <YOUR_API_TOKEN>' \
  --header 'Content-Type: application/json' \
  --data '{
    "company": "klaviyo",
    "parameters": {
      "detailed_query": "SMS marketing and push notification infrastructure companies",
      "keywords": ["SMS marketing", "push notification"],
      "sample_companies": ["attentive", "postscript"],
      "geography": ["USA"],
      "company_type": "private",
      "funding_stage": ["Series A", "Series B"]
    }
  }'
Sample response (excerpt):
{
  "request_id": "f525ae70-b6aa-4b6e-b0af-c40efaf9681c",
  "status": "COMPLETED",
  "result": [
    {
      "Permalink": "postscript",
      "Name": "Postscript",
      "Website": "postscript.io",
      "HQ City": "Scottsdale",
      "HQ Country": "United States",
      "Founded": "2018",
      "Type": "Private",
      "Product Category": "SMS Marketing Platform",
      "Core Offering": "Postscript provides SMS marketing solutions aimed at ecommerce brands...",
      "Employees (Crunchbase)": "251-500",
      "Funding Stage": "Series C",
      "Total Funding": 106200000.0,
      "Key Investors": ["Twilio", "Y Combinator", "Accel", "OpenView", "Greylock"],
      "Overall Score": 7.0,
      "Overall Score Rationale": "Strong strategic fit and product synergies offset by significant financial stretch and integration complexity for this scale of acquisition.",
      "Commentary": "Postscript acquisition would eliminate Klaviyo's primary SMS competitor while adding superior AI-powered automation and deliverability infrastructure. The combined platform would dominate ecommerce SMS with unified customer data and expanded automation flows. Revenue synergies from cross-selling existing customers could generate $200M+ incremental ARR within 24 months. Integration challenges and premium valuation require careful due diligence on customer overlap and retention metrics.",
      "Query Relevance Score": 9.0,
      "Deal Feasibility Score": 3.0,
      "Deal Precedent Score": 6.0,
      "Synergy Potential Score": 8.0
    },
    {
      "Permalink": "shoptext",
      "Name": "ShopText",
      "Website": "shoptext.com",
      "HQ City": "Norwalk",
      "HQ Country": "United States",
      "Founded": "2006",
      "Type": "Private",
      "Product Category": "Mobile marketing platform",
      "Employees (Crunchbase)": "11-50",
      "Funding Stage": "Series A",
      "Total Funding": 5700000.0,
      "Overall Score": 9.0,
      "Overall Score Rationale": "Strong strategic fit with Klaviyo's SMS marketing focus, clear synergies in mobile engagement technology, and highly feasible acquisition size.",
      "Commentary": "ShopText's ScanTxt technology would enable Klaviyo clients to capture consumer intent directly from physical advertisements through text responses...",
      "Query Relevance Score": 9.0,
      "Deal Feasibility Score": 10.0,
      "Deal Precedent Score": 7.0,
      "Synergy Potential Score": 8.0
    }
  ]
}

Bolt-on screening for a PE portfolio company

Identify bolt-on acquisitions for a portfolio company. Use a narrower thesis in detailed_query, restrict by geography, and filter to a target size that the portfolio company can realistically absorb.
import requests

response = requests.post(
    "https://api.wokelo.ai/api/enterprise/target-screening/enrich/",
    headers={
        "Authorization": "Bearer <YOUR_API_TOKEN>",
        "Content-Type": "application/json"
    },
    json={
        "company": "acme-vertical-saas",
        "parameters": {
            "detailed_query": "Bolt-on field-service software targeting commercial HVAC and plumbing contractors in North America with $1-10M ARR",
            "keywords": ["field service management", "HVAC", "dispatch"],
            "geography": ["USA", "CAN"],
            "company_type": "private",
            "employee_count": ["11-50", "51-100"],
            "total_funding": {"from": 1000000, "to": 25000000}
        }
    }
)
print(response.json()["request_id"])

Public-company target screen

For larger strategic acquirers evaluating public-to-public deals, restrict to public targets and use revenue filters to focus on scaled assets.
import requests

response = requests.post(
    "https://api.wokelo.ai/api/enterprise/target-screening/enrich/",
    headers={
        "Authorization": "Bearer <YOUR_API_TOKEN>",
        "Content-Type": "application/json"
    },
    json={
        "company": "salesforce",
        "parameters": {
            "detailed_query": "Public AI-native enterprise SaaS companies in customer data, analytics, and revenue intelligence",
            "keywords": ["customer data platform", "revenue intelligence", "AI analytics"],
            "company_type": "public",
            "geography": ["USA"],
            "revenue": {"from": 100000000}
        }
    }
)
print(response.json()["request_id"])

7. Error Handling

The API uses standard HTTP status codes. All error responses include a JSON body with a detail or message field.
StatusMeaningCause & Resolution
200 OK / 202 AcceptedSuccessJob submitted (202) or result retrieved (200) successfully.
400 Bad RequestInvalid parametersA required field is missing or a parameter value is invalid — e.g. unrecognised funding_stage, missing parameters object, or invalid ISO country code. Check the detail field.
401 UnauthorizedAuth failedThe Authorization header is missing, malformed, or contains an invalid token. Verify your key in Settings → API Keys.
403 ForbiddenInsufficient accessYour plan does not include access to this endpoint. Contact support@wokelo.ai to review your plan.
404 Not FoundResource not foundThe acquirer company permalink could not be resolved, a sample_companies permalink is invalid, or the request_id does not exist. Use the Company Search API to verify permalinks.
429 Too Many RequestsRate limit exceededImplement exponential back-off. The response includes a Retry-After header.
500 Internal Server ErrorServer errorRetry after a brief delay. If the issue persists, contact support@wokelo.ai with your request_id.
Error response example:
{
  "status": "error",
  "detail": "Company permalink 'unknown-co' could not be resolved."
}
Job failure handling:
import requests, time

def poll_until_done(request_id, headers, interval=5, timeout=600):
    elapsed = 0
    while elapsed < timeout:
        resp = requests.get(
            f"https://api.wokelo.ai/api/enterprise/request/{request_id}/status/",
            headers=headers
        ).json()
        status = resp["status"]
        if status == "COMPLETED":
            return True
        elif status == "FAILED":
            raise Exception(f"Job {request_id} failed: {resp.get('detail', 'unknown error')}")
        time.sleep(interval)
        elapsed += interval
    raise TimeoutError(f"Job {request_id} did not complete within {timeout}s")

8. Best Practices

Write a specific detailed_query — this is the highest-leverage parameter The detailed_query is by far the most impactful way to sharpen the target universe. A vague query like "cybersecurity targets" returns a broad, noisy result set. A specific query naming the product category, customer segment, deal size, and strategic rationale returns a tight, actionable list. For example:
“B2B SaaS companies in endpoint security and zero-trust networking with mid-market and enterprise distribution, 20M20M-100M ARR, and a complementary go-to-market motion”
is far stronger than:
“cybersecurity companies”
Anchor niche or jargon-heavy markets with sample_companies For specialised verticals where the AI cannot fully infer the thesis from a topic and keywords alone, supply 2–4 representative permalinks in sample_companies. This dramatically improves precision. Use the Company Search API to resolve company names to permalinks. Always include the full parameters object Even when you don’t want to filter on a field, the API expects the parameters object with every field present. Pass empty values ("", [], {}) for unused filters. Omitting parameters entirely will return a 400 Bad Request. Use both Overall Score and Query Relevance Score for triage These two scores measure different things. Overall Score is the composite strategic fit including feasibility, precedent, and synergies. Query Relevance Score measures only how closely the target matches the stated thesis. A target with high Query Relevance but low Overall Score is an on-thesis fit that’s hard to execute (e.g. too expensive, off-precedent); a target with high Overall Score but moderate Query Relevance is an adjacent opportunity worth exploring even if it wasn’t the original ask. Filter on Deal Feasibility Score to drop financially out-of-reach targets A high Overall Score paired with a low Deal Feasibility Score (≤4) usually means the target is strategically attractive but priced beyond what the acquirer can realistically execute. For most pipelines, drop these unless the acquirer is open to merger-of-equals or stock-heavy structures. Cross-check Deal Precedent Score for stylistic fit The Deal Precedent Score measures whether the proposed deal looks like the acquirer’s prior M&A. A low score doesn’t disqualify the target, but flags that the deal would be a departure — useful context for senior-stakeholder conversations. Read the Commentary for the full deal narrative The Commentary field is the richest AI output — a full paragraph synthesising the strategic rationale, synergy thesis, integration considerations, and key risks. Use it to draft the strategic-rationale section of a board memo or buy-side pitch, and to brief deal teams before outreach. Iterate the query — treat the first run as a diagnostic Review the top 20 targets and their commentaries from the first run, then refine detailed_query, swap sample_companies, or tighten filters and re-run. Two or three iterations typically produce a substantially better target universe than a single pass. Store the request_id for auditability Target screens are associated with your account and a specific point in time. Store the request_id alongside the acquirer, thesis, and run date so you can re-retrieve the result set later, track how the universe evolves across quarterly refreshes, and audit which target list was used for a given mandate or board update.

Buyer Screening

Identify and score potential acquirers for a target company — the inverse of Target Screening.

Market Map

Discover and map all companies competing in a specific market or product category.

Competitor List

Generate a structured list of direct and indirect competitors for any company.

Company Deep Intelligence

Generate deep AI intelligence on any target — business model, financials, strategy, and M&A history.

Company Instant Enrichment

Synchronously enrich firmographic and financial data for any target in the screened list.

Industry Deep Intelligence

Generate a deep intelligence report on the industry behind the screen for thesis development.