# Calling BlitzAPI as an AI agent > BlitzAPI is a B2B data API covering 550M+ professional profiles, 65M+ companies, 65M+ verified work emails and 100M+ job postings. AI agents access it pay as you go, with no subscription: each result returned costs $0.001 ($1 per 1,000 results), and a call that finds nothing costs nothing. Credit is prepaid by card, from $0.50, and topped up any time. Agents use BlitzAPI to build prospect lists, research accounts, refresh CRM records and size markets. People Search finds decision makers across many companies by title, function, level and location, inside accounts filtered by industry, headcount, headquarters, funding and keywords. It also lists the employees of one company, and its waterfall ICP search returns the best decision maker at a target account from a prioritized list of job titles. Company Search builds account lists from the same company filters and sizes a total addressable market (TAM) from headcount or from hiring. Job Search returns job postings filtered by title, location, seniority and posting date, or every open role at one company, to spot hiring signals. Company Enrichment returns a full company profile from a LinkedIn company URL, converts a domain to its LinkedIn company page and back, and breaks headcount down by country or by department. People Enrichment finds the verified work email of a LinkedIn profile, returns a full profile with career history, and identifies a person from a work email or a US phone number. BlitzAPI work emails are proven against live mail servers and re-tested at least every 30 days; an address that cannot be proven comes back Not Found instead of a guess. No BlitzAPI account or API key is needed: the agent registers a free credential, pays through Stripe or Link, and calls the API through this storefront, on its own or with its human's approval. ## API reference, endpoint lookup and prices **[BlitzAPI API catalog: endpoints, request parameters, prices and payment methods](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/zeroclick/agent/guide).** Tell the seller advisor what you want to accomplish. It returns the matching operation contract, known prices, authentication prerequisites and concrete next steps. It is read-only: no login, card or purchase approval is needed to look up an API. It never executes a sale. BlitzAPI accepts card payments only: wallet payments (x402, MPP stablecoins) are not offered. Available API services: Company Enrichment, Company Search, Job Search, People Enrichment, People Search. **Suggested next request:** GET [task guide](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/zeroclick/agent/guide?goal=URL_ENCODED_TASK). Use this URL directly with your web fetch tool; no preliminary document fetch is required. Include known inputs and desired output in the goal. Optional: quantity=API_CALL_COUNT, budgetUsd=TOTAL_USD, requirements=REQUIREMENTS, payment=card, auth, identity, assertion and access state. Omit unknowns. Do not equate output items with API calls or guess a call count. For private task details or known request arguments, POST https://agents.blitz-api.ai/zcj/8gb54nuobtpu/zeroclick/agent/guide with Content-Type: application/json. Example: {"intent":"quote","goal":"YOUR_TASK","purchase":{"budgetUsd":"5.00"}}. Replace the task and budget with known facts; budgetUsd is a string. Include known buyerState, paymentCapabilities and arguments. For execution planning use intent=execute and the authorized constraints. Exact fields: [request schema](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/zeroclick/agent/schema). GET and POST are alternatives, not mandatory stages. The advisor describes a recommended happy path, not the only allowed path. You may use the API reference, buyer SKILL and your own tools directly, including for catalog operations with failed probes. Missing guidance or an unverified probe is not a policy refusal. The returned requests are documented API calls; fill in the documented inputs. Check usage cost AND minimum cash required against the budget. For needs_input, supply only missing facts. Keep secrets local, and never put credentials or private payloads in URLs. Unknown does not mean absent. For a human's credit or plan purchase, reuse an existing ZeroClick credential first. Otherwise use their signed-in Link account for identity as well as payment, sharing their email only if they agree. An empty or expired Link credential list means request a credential, not fall back to anonymous. Follow [Link identity setup](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/auth.md#link-identity-preview) through issuance, presentation, registration and token exchange. Anonymous auth remains available for agents acting on their own behalf with no human in the loop. Open the checkout URL in a browser: eligible Stripe pages support Link Pay Tokens (LPT) through WebMCP or the documented DOM flow. Follow this storefront's /payment/card.md to verify the same-frame token input and merchant binding before requesting an LPT. Token submission requires payment authorization. If unavailable, privately send the checkout URL to your human to pay. When the selected route uses hosted checkout, follow [card checkout instructions](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/payment/card.md) before requesting a token. LPT goes only to Stripe, never to the advisor or ZeroClick API. Poll the returned statusUrl before using credit or retrying delivery. Verify delivery; a payment or HTTP 202 is not completion. For an unexpected result, POST the original input and continuation (version, stepId, outcome and sanitized error/accessId/paymentId). Reconcile uncertain payments or writes before retrying. Use raw HTTP for exact schemas and authenticated execution; do not reconstruct fields omitted by a summarizing web tool. The human subscription prices on the requested page describe a separate channel. Use the API quote for per-unit pricing, funding minimums and commercial terms; tier names do not prove quality or licensing. For an alternative documented path, use the [buyer SKILL](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/SKILL.md) or [full direct workflow reference](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/llms-full.txt). Confirm missing request details from seller documentation, stay within the existing catalog and what your user asked for, and respect actual access and payment requirements. ## Direct workflow reference Use the following standalone reference if the advisor is unavailable, cannot resolve the task, or your client needs direct API documentation. These are alternatives to the advisor workflow, not prerequisites. ZeroClick is a paid, transparent proxy in front of BlitzAPI's API. Send the same method, path, query, and body you would send the upstream API to `https://agents.blitz-api.ai/zcj/8gb54nuobtpu`; ZeroClick collects payment and proxies the request upstream. BlitzAPI accepts card payments only: wallet payments (x402, MPP stablecoins) are not offered. Cards pay for plan purchases; no crypto wallet is needed. Access is sold on plans: buy a plan, then call against it. Register a free agent credential before purchasing. See Buying plans below. ## Find, inspect, and execute an operation 1. Search with `GET https://agents.blitz-api.ai/zcj/8gb54nuobtpu/openapi.json?q={text}&page=1`, or choose a service at https://agents.blitz-api.ai/zcj/8gb54nuobtpu/services and read /services/{slug}/openapi.json. Search is ranked; follow info.x-next or the Link header for more results. A service spec may already contain everything needed. 2. Inspect the selected operation with `GET https://agents.blitz-api.ai/zcj/8gb54nuobtpu/openapi.json?path={path}&method={method}`. Copy the exact path template from the search result, including braces, and use a lowercase method. Omit q and page when inspecting. An optional service={slug} filter combines with path and method. Encode each query value once with URLSearchParams or encodeURIComponent; do not encode the entire URL. For example, the template /v1/quotes/{symbol} becomes path=%2Fv1%2Fquotes%2F%7Bsymbol%7D&method=get. This illustrates encoding, not an operation promised by this seller. Encode a service slug as one path segment in /services/{slug}/openapi.json. Do not substitute user inputs into the path until execution. 3. Read the selected method/path, server URL, required path/query/header/body inputs, media types, schemas and referenced definitions. Local $refs resolve against this filtered document, including x-zeroclick-definitions inside the operation. Preserve shared-operation selectors: service slugs in x-zeroclick-services and x-payment-info.rates[].service are discovery/pricing labels, never upstream arguments. Use the actual enum/const values in the input schema; filtering by service does not narrow them or prove a selector-to-service mapping. 4. Collect missing user inputs before executing. Seller-provided examples illustrate shape; they do not establish working identifiers or user intent. Values marked x-zeroclick-example-source: probe-synthesized are probe guesses. Treat x-zeroclick-contract-gaps, unresolved references, missing schemas, missing selector mappings and undocumented polling endpoints as unknowns. Do not invent values or calls to fill them. 5. Execute the inspected request using the existing payment/access client. For PAYG, send the published method, path, query and body to the storefront server at `https://agents.blitz-api.ai/zcj/8gb54nuobtpu`; pay by card per the flow in [payment.md](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/payment.md). Recheck current prices and required identity before authorizing payment. A ZeroClick buyer bearer is not a seller API key. 6. Handle the documented response and error schemas. Follow status/result URLs only when the seller contract or actual response supplies them. A 202 means accepted, not completed. Use https://agents.blitz-api.ai/zcj/8gb54nuobtpu/errors.md for platform errors; resolve an ambiguous result before retrying a mutation or purchasing again. For repeat use, retain this storefront origin (`https://agents.blitz-api.ai/zcj/8gb54nuobtpu`), this guide ([llms-full.txt](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/llms-full.txt)), and the exact inspection URL. Rediscover services through [llms.txt](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/llms.txt) or [manifest.json](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/manifest.json); do not retain credentials in notes or URLs. For conditional retrieval, retain the response ETag with its exact URL and representation (including Accept-Encoding), then send If-None-Match on the next GET. A 304 reuses that cached document; a 200 replaces it. Follow Cache-Control: ordinary documents currently allow max-age=300 and stale-while-revalidate=3600, so retrieval is not a fresh upstream verification. Chain-decorated responses use no-store and omit ETag. Reinspect when inputs/contracts change and use the current catalog and payment challenge for amounts; a cached schema never guarantees execution or price. ## Key URLs - Base URL (call through): `https://agents.blitz-api.ai/zcj/8gb54nuobtpu` - Services and pricing: https://agents.blitz-api.ai/zcj/8gb54nuobtpu/services - one readable page per service with its price matrix. - Machine catalog: https://agents.blitz-api.ai/zcj/8gb54nuobtpu/manifest.json - the same services, meters, plans, and prices as live JSON. Read it at call time; do not cache prices. - API reference: on each service page under https://agents.blitz-api.ai/zcj/8gb54nuobtpu/services - the paths, parameters, and request bodies of that service's operations. Read it before calling. Service slugs identify services in prices, the manifest, and usage reports; they are never request values. ## Quickstart This storefront sells access on plans, not per call. Buying a credit or subscription plan (`POST /plans/{planId}/purchase`) needs a registered agent credential first, so a bare purchase returns `401 bearer_required` before any price is quoted. Present `Authorization: Bearer `, settle the priced 402 once, then call against the balance or period (each call still carries your identity proof). See Buying plans below. ## No payment method yet? Pay by card Hosted card checkout: eligible pages support Link Pay Tokens (LPT) through WebMCP or the documented DOM flow. Read [card instructions](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/payment/card.md) for runtime discovery, same-frame merchant binding, authorized submission, and the human fallback. Creating a checkout does not pay; poll its returned statusUrl to confirm completion. ## Hand off to a human When the thing your human needs to do is pay, reach for the hosted card checkout first: obtain the URL with `"checkout": true` (Buying plans above / the 402's `card` block) and deliver that URL. Hand-offs are not only for declining to transact. Use one whenever your human touches BlitzAPI through you: a purchase needs their approval, they want to browse or sign up themselves, or you are citing any BlitzAPI page in your final report. In every case do not abandon the task or paste a raw seller URL. This host serves `GET /outclick`, a tracked hand-off: opening it records the referral and answers `302` to a page on BlitzAPI's own site, tagged so the seller knows an agent sent the visitor. End to end: 1. Choose the target page for your human - good targets: `https://www.blitz-api.ai/`, `https://docs.blitz-api.ai/`. Any http(s) URL on the seller's configured domains is accepted; anything else is rejected with a `400` and no redirect. 2. Build the link with the target URL-encoded in `url`, and append your `agt_` id as `agent` if you hold an agent identity (optional, best-effort attribution - an unknown value still redirects): `https://agents.blitz-api.ai/zcj/8gb54nuobtpu/outclick?url=https%3A%2F%2Fwww.blitz-api.ai%2F&agent=agt_your_agent_id` 3. Deliver the link to your human - in chat or your final report - and let them open it. Every open records a hand-off, so do not fetch it yourself to test - a self-open files a false referral and misattributes your task. The link is guaranteed to 302 to the target; it needs no verification. 4. Your human lands on the target decorated with referral UTM params. The `utm_content` value is unique to this hand-off, so the seller can trace the visit back to it: `https://www.blitz-api.ai/?utm_source=zeroclick.ai&utm_medium=agent_referral&utm_content=ocl_...` A bare `https://agents.blitz-api.ai/zcj/8gb54nuobtpu/outclick` (no `url`) is a valid hand-off too: it records the referral and forwards to `https://www.blitz-api.ai/`. Rule of thumb: every BlitzAPI URL that appears in your final message to your human should be an `/outclick` link. Raw seller URLs are for your own fetching, not for handing over. ## Authentication: credentials, not API keys Card payments are referenced, not signed: after paying a 402's card lane, retry with `zc-payment-id: `; a shared payment token answers the `method="stripe"` challenge as `Authorization: Payment `. Plan purchases and top-ups carry your agent credential as `Authorization: Bearer `. Do not send the upstream's own credentials. You do not have an upstream API key and do not need one: ZeroClick authenticates to the upstream for you by signing each request. Ignore any `Authorization`, `x-api-key`, or similar auth the upstream's docs require, and omit those headers. ## Identity is a credential, not a payment There is no anonymous per-call payment here: this storefront sells access on plans, and buying one needs a credential. Identity is a registered credential, never a payment, and it is required for anything ZeroClick will not charge you for (buying or extending a plan). Those requests answer `401 { "error": "bearer_required" }` with a recipe pointing at `/auth.md`: register once, exchange the assertion for a token, and retry with `Authorization: Bearer `. ## Buying plans with identity For a human's credit or plan purchase, reuse an existing ZeroClick credential first. Otherwise use their signed-in Link account for identity as well as payment, sharing their email only if they agree. An empty or expired Link credential list means request a credential, not fall back to anonymous. Follow [Link identity setup](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/auth.md#link-identity-preview) through issuance, presentation, registration and token exchange. Anonymous auth remains available for agents acting on their own behalf with no human in the loop. Follow [auth.md](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/auth.md) to register with type `link_identity` at `POST https://agents.blitz-api.ai/zcj/8gb54nuobtpu/agent/identity` and exchange the returned assertion at `https://agents.blitz-api.ai/zcj/8gb54nuobtpu/oauth2/token`. Save the assertion and rotating refresh token; Link-created credentials work at every ZeroClick storefront but not at the platform-wide entitlements endpoint. Plan purchases require `Authorization: Bearer ` on every payment rail. For MPP, including Link shared payment tokens, send `ZC-Agent-Authorization: Bearer ` while `Authorization` carries `Payment `. An unauthenticated purchase returns `401 bearer_required`; finish identity setup before settling the purchase's priced 402. Before buying: if you (or your human) may have bought here before, `GET https://agents.blitz-api.ai/zcj/8gb54nuobtpu/agent/entitlements` with your bearer lists what your identity already owns at this seller - see Endpoints below. Check the balance and period before authorizing any additional purchase. Purchases of plans whose `verifiedEmailPolicy` is `"requested"` or `"required"` share your human's verified email with this seller so it can tie what you bought to their account - at purchase when the claim already exists, or later once your human claims your credential. With the credential you can buy plans by card - no crypto wallet needed. Send the purchase with `"checkout": true` to get a hosted payment URL (creating it needs no funds or card; eligible pages support Link Pay Tokens (LPT) via WebMCP or the documented DOM flow - follow [card instructions](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/payment/card.md) for runtime discovery and merchant binding. Otherwise privately send the URL to your human. Poll the returned `statusUrl` to confirm completion; obtain this URL before reporting that payment is blocked). A shared payment token (an `spt_` your platform granted for this seller, single-use: mint a fresh one per purchase) settles differently: answer the purchase 402's `method="stripe"` `www-authenticate` challenge with `Authorization: Payment ` and your bearer in `ZC-Agent-Authorization: Bearer `, never as a body field. The purchase 402's `card` block is the authoritative contract. ## The 402 payment challenge When payment is required you receive a JSON body with the exact `payment.amountUsd`, the `plan`, and, for a charge of $0.60 or more, a `card` block with a `payUrl` and a `statusUrl` (plus a `method="stripe"` challenge in the `www-authenticate` header for shared payment tokens). Pay through one card lane, poll `card.statusUrl` until it reports complete, then retry the same request with `zc-payment-id: `. [Card](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/payment/card.md) lists every lane. Terms: by completing a purchase through this endpoint, whether directly or through an AI agent acting on your behalf, you agree to be bound by the platform's buyer terms of service (https://www.zeroclick.ai/legal/buyer-terms-of-service). If the purchase is made by an agent, you represent and warrant that the agent is acting with your authorization, and you agree that the agent's actions, including its acceptance of these terms, are attributed to you and bind you as if you had taken them yourself. Paying a 402 challenge completes the purchase and constitutes your affirmative acceptance of the terms linked above. The link travels in every payment challenge and receipt as `terms`. ## Endpoints - `GET https://agents.blitz-api.ai/zcj/8gb54nuobtpu/manifest.json`: machine-readable catalog of services, meters, plans and prices (JSON). Purchasable plans carry a `purchase` object (`url`, `amountRequired`, and for credit plans `minimumUsd` plus `maximumUsd` when the seller caps a single purchase, plus `cardMinimumUsd` - the effective new card purchase minimum (the larger of the plan minimum and the card floor, rounded up to cents) - and `"cardEligible": false` on a fixed-price plan the card rail cannot charge); `purchase` is `null` for pay-as-you-go. A price's `includedUnits` is the number of FREE units per period before its `priceUsd` applies. - `POST /plans/{planId}/purchase`: buy a credit or subscription plan. Body `{ "amountUsd"?: "25.000000" }` - the amount is required for credit plans (a whole-cent amount of at least the plan's `purchase.minimumUsd` and, when the plan sets one, at most `purchase.maximumUsd`) and ignored for subscription plans (the plan's base price is charged). Not valid for pay-as-you-go plans. Requires an agent bearer: a bare purchase returns `401 bearer_required` before any price is quoted, so present `Authorization: Bearer ` first, then settle the priced 402 (on MPP, move the token to `ZC-Agent-Authorization: Bearer ` so `Authorization` can carry the `Payment` credential). On success: ```json { "purchased": true, "zcAgentId": "agt_...", "access": { "id": "acs_...", "status": "active", "periodStartsAt": "...", "periodEndsAt": "...", "remainingCreditUsd": "25.000000" } } ``` - `POST /extend`: add credit to an active plan. Body `{ "amountUsd": "10.000000" }`. On success returns `{ "extended": true, "zcAgentId": "...", "access": { ... } }` with the updated balance. - `GET https://agents.blitz-api.ai/zcj/8gb54nuobtpu/agent/entitlements`: what your agent identity already owns at this seller - active plans with period and `remainingCreditUsd`, covering your credential plus (once claimed) every credential your human claimed. Needs only `Authorization: Bearer `; no payment. An empty list means no active entitlement was found; it does not rule out historical or pending accounts; a 401 means the token needs re-exchanging, never that you lack purchases. Use it after losing local state instead of re-buying. The network-wide view (all sellers at once) is `GET https://api.zeroclick.io/agent/entitlements`. - `ANY /`: any other path is proxied to the upstream API against your plan: send `Authorization: Bearer `. Without a credential the call answers `401 bearer_required`; with one but no covering plan, `403 plan_required` listing the plans that do. ## Errors Errors are JSON with the code in the top-level `error` field. The cases you must handle to recover: - `bearer_required` (401): this call needs a registered agent credential. Register via [auth.md](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/auth.md), then retry with `Authorization: Bearer `. - `payment_rail_unavailable` (409): BlitzAPI accepts card payments only and this charge cannot be paid by card (under the $0.60 card minimum, or no card lane is available). Its `hint` says what to do: buy credit or a plan by card, then retry the call with your bearer. - `payment_refunded` / `payment_failed` / `payment_released`: TERMINAL for that reference; it cannot be spent again. Reconcile the previous result using its documented status/receipt route. If no outcome check exists, stop with unknown outcome. Do not repay or repeat a mutation merely because its response was lost. - `payment_consumed`: This payment was already settled and cannot be spent again. Reconcile the original request's delivery before requesting a new challenge or making another payment. - `payment_incomplete`: the referenced payment has not finished (for a card, poll the 402's `card.statusUrl` until it reports complete), then retry. - `access_not_found` / `usage_exhausted`: no active plan to draw from, or its credit ran out. Buy or top up with `POST /plans/{planId}/purchase` / `POST /extend`. - `plan_required` (403): your plan does not include a meter this call uses, or you hold no plan and the call has no per-request price. The body's `plans` lists the plans that cover it, each with a `purchase.url`; buy one with your bearer, then retry. - `amount_required` / `amount_not_cent_increment` / `amount_below_minimum` (400): fix the `amountUsd` - a whole-cent value of at least the plan's `purchase.minimumUsd`. - `amount_above_maximum` (400): the `amountUsd` was over the plan's `purchase.maximumUsd`, the most this seller accepts in one purchase or top-up. Buy up to that amount now and top up again later. - `amount_below_card_minimum` (400): the card rail rejects amounts below $0.60. A NEW credit purchase must also satisfy the plan minimum; `purchase.cardMinimumUsd` combines both floors. - Network failures and 5xx: retry confirmed reads with bounded backoff. Reconcile the previous result using its documented status/receipt route. If no outcome check exists, stop with unknown outcome. Do not repay or repeat a mutation merely because its response was lost. Rate limits: wait the response retry_after or Retry-After before a safe retry. The full error reference - every code and how to react - is at [errors.md](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/errors.md). ## Billing modes - `credit`: prepay a balance with `POST /plans/{id}/purchase` and an `amountUsd`. Calls draw it down; top up with `POST /extend`. The amount must be a whole-cent value of at least the plan's `purchase.minimumUsd` AND the card floor when paying by card: `purchase.cardMinimumUsd` is the larger of the plan minimum and $0.60, rounded up to cents, never a lower alternative, and at most `purchase.maximumUsd` when the plan sets one; decide how much to buy from the meter prices in the catalog and what you plan to call. A credit plan is how sub-cent metered pricing stays payable by card: buy one balance above the card floor, then draw it down per call. Your remaining balance is returned as `access.remainingCreditUsd` on every purchase and top-up; an exhausted balance surfaces as a 402 - top up and retry. ## Free included units A price in the catalog may carry `includedUnits: N`: the first N units of that meter per billing period are FREE, and `priceUsd` only applies to usage beyond the allowance. On purchased plans the allowance is tracked per plan access and applied automatically. ## Ceiling pricing Some meters are priced as a ceiling: you pay only your actual usage, settled on a reserve-and-pay rail. Full mechanics and the zc-billing header are at [payment.md](https://agents.blitz-api.ai/zcj/8gb54nuobtpu/payment.md).