{"openapi":"3.1.1","info":{"title":"enrichments.io API","version":"1.0.0","summary":"B2B people and company enrichment.","description":"Search for people and companies, or enrich identifiers you already have.\n\n**Choosing an operation.** The entity type is part of the path: `/people/*` returns person\nrecords, `/companies/*` returns company records. `fields` on every request body selects which\nenrichment fields to resolve — one of `email`, `linkedin_url`, `title`, `seniority`, `department`, `location`, `country`, `company`, `company_domain`, `headline`, `phone`, `company_profile`.\n\n**A find enriches everything by default — including the work email.** Omitting `fields`\non a people request returns the full record — `linkedin_url`, `title`, `seniority`, `department`, `location`, `company`, `company_domain`, `email`. Discovery is billed at 0.25 credits per person found, the company\ndomain adds 0.5 credit each, and the work email\nis the expensive part — a multi-hop agent billed 2\ncredits per address ACTUALLY found (verification included, misses free). Because that agent\ntakes minutes, any request that includes `email` — which the default does — is answered\nASYNCHRONOUSLY (see below), never inline. For a cheap identity-only find that returns inline,\nsend an explicit `fields` list WITHOUT `email`. Sourcing passes to top up a thin index are\n3 credits each and billed only when they add\npeople, so `estimatedCredits` (and a 402 quote) is the reservation ceiling; the committed\ncharge is usually lower. Non-paid orgs have `count` clamped to 30 so a\nfull-enrich find always fits the signup grant.\n\n**Authentication.** Send your key as `Authorization: Bearer ek_live_...` or `x-api-key: ek_live_...`.\n\n**Synchronous or asynchronous.** Requests that fit inside one HTTP round trip run inline and\nreturn 200 with results: up to 5 identities for an enrich call, up to\n10 results for a search. Anything larger — and anything requesting the\n`email` field, which runs a multi-hop discovery agent — returns 202 with a job id, a\n`Location` header and a `Retry-After` hint. Poll `GET /jobs/{id}` until `job.status` is\nterminal (`succeeded`, `empty`, `failed` or `cancelled`). Send `Prefer: respond-async` or\n`\"async\": true` to force the asynchronous path for any request.\n\n**Idempotency.** Send `Idempotency-Key` on any POST. A repeat of the same key returns the\nORIGINAL job and never starts or charges for a second one; keys are honoured for at least\n24 hours. Reusing a key with a different payload is a 422.\n\n**Credits.** Credits are reserved before any work starts, so an over-quota request is\nrejected with 402 before it costs anything. Only rows that actually produced data are\ncharged; a job that finds nothing costs zero. On an enrich request a row is charged only\nif at least one of the `fields` you requested was resolved BY US: a row we identify but\nadd nothing to is free, and an identifier you supplied that comes back unchanged is not a\nresolved field. `evidence` is the audit trail — a field whose `source` is `input` was\nyours, and was never billed. A search row is charged for the person or company it\ndiscovered, since there the identity itself is what you did not have.\n\n**Mobile numbers** are available as the `phone` field, billed per number found and sourced\nfrom a LinkedIn profile URL. They never carry a deliverability verdict — nothing checks a\nphone the way a mailbox can be checked. A number being available is not advice that it is\nlawful to call; TCPA, DNC and local consent obligations are the caller's.","contact":{"name":"enrichments.io","url":"https://www.enrichments.io"}},"servers":[{"url":"https://www.enrichments.io/api/v1","description":"Production"}],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"tags":[{"name":"Enrichment","description":"Search and enrich people and companies."},{"name":"Jobs","description":"Poll asynchronous work."}],"paths":{"/people/search":{"post":{"operationId":"searchPeople","summary":"Search for people","description":"Find people matching an ideal-customer profile AND enrich them in one call. Filters are optional; `query` carries the natural-language intent. `fields` selects which enrichment fields to resolve and DEFAULTS to the full record including the work email — so a default search is answered asynchronously (poll the returned job). Pass explicit `fields` without `email` for a cheap identity-only find that returns inline.","tags":["Enrichment"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/Prefer"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleSearchRequest"}}}},"responses":{"200":{"description":"The job ran inline and the results are in the body.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Correlation id for this response."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per window."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window resets."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleJobResponse"}}}},"202":{"description":"The job was accepted and is running in the background. `results` is null; poll `job.url`.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Correlation id for this response."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per window."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window resets."},"Location":{"schema":{"type":"string","format":"uri"},"description":"Job status URL to poll."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before polling."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleJobResponse"}}}},"400":{"description":"Malformed request — unparseable JSON, or an invalid query parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked, expired or unrecognised API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits to run the request. Nothing was queued and nothing was charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The API key is valid but lacks the required scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"The request parsed but is not runnable — invalid parameters, an unsupported enrichment field (including any phone field), or an `Idempotency-Key` reused with a different payload.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The API key's request rate limit or quota is exhausted. See `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error. Quote `request_id` when reporting it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The upstream data provider is unavailable. Retry shortly.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"options":{"summary":"CORS preflight","security":[],"responses":{"204":{"description":"Allowed methods and headers."}}}},"/people/enrich":{"post":{"operationId":"enrichPeople","summary":"Enrich people","description":"Resolve up to 100 identities (LinkedIn URL, email, or name plus employer) into full person records. This is where work email addresses come from: send `\"fields\": [\"email\"]` along with every identifier you hold for each person, since an address is discovered from a name plus a company domain. Rows that cannot be matched come back with status `not_found` and cost nothing — and a row that matches but yields none of the `fields` you asked for is also free.","tags":["Enrichment"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/Prefer"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleEnrichRequest"}}}},"responses":{"200":{"description":"The job ran inline and the results are in the body.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Correlation id for this response."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per window."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window resets."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleJobResponse"}}}},"202":{"description":"The job was accepted and is running in the background. `results` is null; poll `job.url`.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Correlation id for this response."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per window."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window resets."},"Location":{"schema":{"type":"string","format":"uri"},"description":"Job status URL to poll."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before polling."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleJobResponse"}}}},"400":{"description":"Malformed request — unparseable JSON, or an invalid query parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked, expired or unrecognised API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits to run the request. Nothing was queued and nothing was charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The API key is valid but lacks the required scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"The request parsed but is not runnable — invalid parameters, an unsupported enrichment field (including any phone field), or an `Idempotency-Key` reused with a different payload.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The API key's request rate limit or quota is exhausted. See `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error. Quote `request_id` when reporting it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The upstream data provider is unavailable. Retry shortly.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"options":{"summary":"CORS preflight","security":[],"responses":{"204":{"description":"Allowed methods and headers."}}}},"/companies/search":{"post":{"operationId":"searchCompanies","summary":"Search for companies","description":"Find companies matching firmographic filters and a natural-language query.","tags":["Enrichment"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/Prefer"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanySearchRequest"}}}},"responses":{"200":{"description":"The job ran inline and the results are in the body.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Correlation id for this response."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per window."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window resets."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyJobResponse"}}}},"202":{"description":"The job was accepted and is running in the background. `results` is null; poll `job.url`.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Correlation id for this response."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per window."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window resets."},"Location":{"schema":{"type":"string","format":"uri"},"description":"Job status URL to poll."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before polling."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyJobResponse"}}}},"400":{"description":"Malformed request — unparseable JSON, or an invalid query parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked, expired or unrecognised API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits to run the request. Nothing was queued and nothing was charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The API key is valid but lacks the required scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"The request parsed but is not runnable — invalid parameters, an unsupported enrichment field (including any phone field), or an `Idempotency-Key` reused with a different payload.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The API key's request rate limit or quota is exhausted. See `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error. Quote `request_id` when reporting it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The upstream data provider is unavailable. Retry shortly.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"options":{"summary":"CORS preflight","security":[],"responses":{"204":{"description":"Allowed methods and headers."}}}},"/companies/enrich":{"post":{"operationId":"enrichCompanies","summary":"Enrich companies","description":"Resolve up to 100 domains, names or LinkedIn URLs into company records.","tags":["Enrichment"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/Prefer"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyEnrichRequest"}}}},"responses":{"200":{"description":"The job ran inline and the results are in the body.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Correlation id for this response."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per window."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window resets."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyJobResponse"}}}},"202":{"description":"The job was accepted and is running in the background. `results` is null; poll `job.url`.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Correlation id for this response."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per window."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window resets."},"Location":{"schema":{"type":"string","format":"uri"},"description":"Job status URL to poll."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before polling."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyJobResponse"}}}},"400":{"description":"Malformed request — unparseable JSON, or an invalid query parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, revoked, expired or unrecognised API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits to run the request. Nothing was queued and nothing was charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The API key is valid but lacks the required scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"The request parsed but is not runnable — invalid parameters, an unsupported enrichment field (including any phone field), or an `Idempotency-Key` reused with a different payload.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The API key's request rate limit or quota is exhausted. See `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error. Quote `request_id` when reporting it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The upstream data provider is unavailable. Retry shortly.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"options":{"summary":"CORS preflight","security":[],"responses":{"204":{"description":"Allowed methods and headers."}}}},"/jobs/{id}":{"get":{"operationId":"getJob","summary":"Get a job","description":"Poll a job. Always 200 — read `job.status`. `results` is null until the job reaches a terminal state, then pages with an opaque forward-only cursor.","tags":["Jobs"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Job id returned by a search or enrich call."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"description":"Results per page."},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Opaque cursor from `page.nextCursor` of a previous response."}],"responses":{"200":{"description":"The job, plus a page of results once it has finished.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Correlation id for this response."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per window."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests left in the window."},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the window resets."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}}},"401":{"description":"Missing, revoked, expired or unrecognised API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The API key is valid but lacks the required scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such job in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The API key's request rate limit or quota is exhausted. See `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected server error. Quote `request_id` when reporting it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"options":{"summary":"CORS preflight","security":[],"responses":{"204":{"description":"Allowed methods and headers."}}}},"/openapi":{"get":{"operationId":"getOpenApi","summary":"This document","security":[],"responses":{"200":{"description":"OpenAPI 3.1 description of the v1 API.","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"`Authorization: Bearer ek_live_...`"},"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"`x-api-key: ek_live_...`"}},"parameters":{"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Caller-generated key. Repeating it returns the original job instead of starting a second one."},"Prefer":{"name":"Prefer","in":"header","required":false,"schema":{"type":"string","enum":["respond-async"]},"description":"`respond-async` forces the 202 job path even for a small request."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["type","code","message","request_id"],"properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","permission_error","not_found_error","conflict_error","billing_error","rate_limit_error","api_error"],"description":"Coarse, permanently stable error class. Branch on this."},"code":{"type":"string","description":"Specific machine-readable reason, e.g. `insufficient_credits`, `phone_not_supported`."},"message":{"type":"string","description":"One sentence describing what to do next. Safe to show to an agent."},"details":{"description":"Structured context, e.g. per-field validation issues."},"request_id":{"type":"string"}}}}},"Job":{"type":"object","required":["object","id","type","status","url"],"properties":{"object":{"type":"string","const":"job"},"id":{"type":"string"},"type":{"type":"string","enum":["people_search","people_enrich","company_search","company_enrich"]},"status":{"type":"string","enum":["queued","running","succeeded","empty","failed","cancelled"],"description":"`empty` means the job ran cleanly and matched nothing. It cost zero."},"fields":{"type":"array","items":{"type":"string","enum":["email","linkedin_url","title","seniority","department","location","country","company","company_domain","headline","phone","company_profile"]}},"requestedCount":{"type":"integer"},"resultCount":{"type":"integer"},"creditsUsed":{"type":"number","description":"Credits charged so far, from the ledger."},"error":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"startedAt":{"type":["string","null"],"format":"date-time"},"finishedAt":{"type":["string","null"],"format":"date-time"},"url":{"type":"string","format":"uri"}}},"Page":{"type":"object","required":["hasMore","nextCursor"],"properties":{"hasMore":{"type":"boolean"},"nextCursor":{"type":["string","null"]}}},"FieldEvidence":{"type":"object","properties":{"source":{"type":"string","enum":["search.people","search.company","contents.summary","answer","agent.run","pattern.probe","apify.leads","apify.linkedin_email","derived","input"]},"url":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"confidence":{"type":"number","minimum":0,"maximum":1},"retrievedAt":{"type":"string"},"cached":{"default":false,"type":"boolean"}},"required":["source","url","confidence","retrievedAt","cached"],"additionalProperties":false},"Evidence":{"type":"object","description":"Per-field provenance, keyed by result field name.","additionalProperties":{"$ref":"#/components/schemas/FieldEvidence"}},"PersonRecord":{"type":"object","properties":{"fullName":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"firstName":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"lastName":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"emailStatus":{"default":null,"anyOf":[{"type":"string","enum":["verified","probable","unverified","risky","undeliverable","unknown"]},{"type":"null"}]},"linkedinUrl":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"title":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"seniority":{"default":null,"anyOf":[{"type":"string","enum":["founder","c_level","vp","director","manager","senior","entry"]},{"type":"null"}]},"department":{"default":null,"anyOf":[{"type":"string","enum":["engineering","product","design","sales","marketing","finance","operations","people","legal","support","data","it","executive","other"]},{"type":"null"}]},"location":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"companyName":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"companyDomain":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"headline":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"company":{"default":null,"anyOf":[{"type":"object","properties":{"name":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"domain":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"linkedinUrl":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"industry":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"employeeCount":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"employeeRange":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"foundedYear":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"logoUrl":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"revenueAnnualUsd":{"default":null,"anyOf":[{"type":"number"},{"type":"null"}]},"fundingTotalUsd":{"default":null,"anyOf":[{"type":"number"},{"type":"null"}]},"latestFundingRound":{"default":null,"anyOf":[{"type":"object","properties":{"name":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"date":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"amountUsd":{"default":null,"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["name","date","amountUsd"],"additionalProperties":false},{"type":"null"}]},"monthlyVisits":{"default":null,"anyOf":[{"type":"number"},{"type":"null"}]},"raw":{"default":null,"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"source":{"default":null,"anyOf":[{"type":"string","enum":["search.people","search.company","contents.summary","answer","agent.run","pattern.probe","apify.leads","apify.linkedin_email","derived","input"]},{"type":"null"}]},"lastVerifiedAt":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","domain","linkedinUrl","description","industry","employeeCount","employeeRange","location","country","foundedYear","logoUrl","revenueAnnualUsd","fundingTotalUsd","latestFundingRound","monthlyVisits","raw","source","lastVerifiedAt"],"additionalProperties":false},{"type":"null"}]},"raw":{"default":null,"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"source":{"default":null,"anyOf":[{"type":"string","enum":["search.people","search.company","contents.summary","answer","agent.run","pattern.probe","apify.leads","apify.linkedin_email","derived","input"]},{"type":"null"}]},"confidence":{"default":null,"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"lastVerifiedAt":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["fullName","firstName","lastName","email","emailStatus","linkedinUrl","title","seniority","department","location","country","companyName","companyDomain","headline","phone","company","raw","source","confidence","lastVerifiedAt"],"additionalProperties":false},"CompanyRecord":{"type":"object","properties":{"name":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"domain":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"linkedinUrl":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"industry":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"employeeCount":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"employeeRange":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"foundedYear":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"logoUrl":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"revenueAnnualUsd":{"default":null,"anyOf":[{"type":"number"},{"type":"null"}]},"fundingTotalUsd":{"default":null,"anyOf":[{"type":"number"},{"type":"null"}]},"latestFundingRound":{"default":null,"anyOf":[{"type":"object","properties":{"name":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"date":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]},"amountUsd":{"default":null,"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["name","date","amountUsd"],"additionalProperties":false},{"type":"null"}]},"monthlyVisits":{"default":null,"anyOf":[{"type":"number"},{"type":"null"}]},"raw":{"default":null,"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"source":{"default":null,"anyOf":[{"type":"string","enum":["search.people","search.company","contents.summary","answer","agent.run","pattern.probe","apify.leads","apify.linkedin_email","derived","input"]},{"type":"null"}]},"lastVerifiedAt":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","domain","linkedinUrl","description","industry","employeeCount","employeeRange","location","country","foundedYear","logoUrl","revenueAnnualUsd","fundingTotalUsd","latestFundingRound","monthlyVisits","raw","source","lastVerifiedAt"],"additionalProperties":false},"PersonResultItem":{"type":"object","required":["position","status","data","evidence","error"],"properties":{"position":{"type":"integer","description":"Row index within the job."},"status":{"type":"string","enum":["pending","running","succeeded","not_found","failed"],"description":"`not_found` is a clean miss and is never charged. `succeeded` does not by itself mean charged: an enrich row that resolves the person but none of the requested fields is free too — check `evidence` to see which fields we actually resolved."},"data":{"oneOf":[{"$ref":"#/components/schemas/PersonRecord"},{"type":"null"}]},"evidence":{"oneOf":[{"$ref":"#/components/schemas/Evidence"},{"type":"null"}]},"error":{"type":["string","null"]}}},"CompanyResultItem":{"type":"object","required":["position","status","data","evidence","error"],"properties":{"position":{"type":"integer","description":"Row index within the job."},"status":{"type":"string","enum":["pending","running","succeeded","not_found","failed"],"description":"`not_found` is a clean miss and is never charged. `succeeded` does not by itself mean charged: an enrich row that resolves the person but none of the requested fields is free too — check `evidence` to see which fields we actually resolved."},"data":{"oneOf":[{"$ref":"#/components/schemas/CompanyRecord"},{"type":"null"}]},"evidence":{"oneOf":[{"$ref":"#/components/schemas/Evidence"},{"type":"null"}]},"error":{"type":["string","null"]}}},"PeopleSearchRequest":{"type":"object","properties":{"query":{"type":"string","minLength":3,"maxLength":2000},"count":{"default":25,"type":"integer","minimum":1,"maximum":100},"fields":{"default":["linkedin_url","title","seniority","department","location","company","company_domain","email"],"maxItems":12,"type":"array","items":{"type":"string","enum":["email","linkedin_url","title","seniority","department","location","country","company","company_domain","headline","phone","company_profile"]}},"titles":{"description":"Job titles to match. At most 20. For a broad brief prefer `seniorities` and `departments`, which cover a whole band in a few values — a long list of near-synonymous titles is both capped and less accurate.","maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"seniorities":{"maxItems":7,"type":"array","items":{"type":"string","enum":["founder","c_level","vp","director","manager","senior","entry"]}},"departments":{"maxItems":14,"type":"array","items":{"type":"string","enum":["engineering","product","design","sales","marketing","finance","operations","people","legal","support","data","it","executive","other"]}},"locations":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"countries":{"maxItems":20,"type":"array","items":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"}},"companyDomains":{"maxItems":50,"type":"array","items":{"type":"string","minLength":3,"maxLength":253}},"companyNames":{"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"maxPerCompany":{"type":"integer","minimum":1,"maximum":25},"webhookUrl":{"type":"string","format":"uri","description":"HTTPS endpoint to POST a signed completion callback to."},"async":{"description":"Force the asynchronous job path even for a small request.","type":"boolean"}},"required":["query"]},"PeopleEnrichRequest":{"type":"object","properties":{"people":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"firstName":{"type":"string","minLength":1,"maxLength":100},"lastName":{"type":"string","minLength":1,"maxLength":100},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"linkedinUrl":{"type":"string"},"title":{"type":"string","minLength":1,"maxLength":200},"companyName":{"type":"string","minLength":1,"maxLength":200},"companyDomain":{"type":"string","minLength":3,"maxLength":253}}}},"fields":{"default":["linkedin_url","title","seniority","department","location","company","company_domain","email"],"minItems":1,"maxItems":12,"type":"array","items":{"type":"string","enum":["email","linkedin_url","title","seniority","department","location","country","company","company_domain","headline","phone","company_profile"]}},"webhookUrl":{"type":"string","format":"uri","description":"HTTPS endpoint to POST a signed completion callback to."},"async":{"description":"Force the asynchronous job path even for a small request.","type":"boolean"}},"required":["people"]},"CompanySearchRequest":{"type":"object","properties":{"query":{"type":"string","minLength":3,"maxLength":2000},"count":{"default":25,"type":"integer","minimum":1,"maximum":100},"fields":{"default":["company","company_domain","location","country","headline"],"maxItems":6,"type":"array","items":{"type":"string","enum":["email","linkedin_url","title","seniority","department","location","country","company","company_domain","headline","phone","company_profile"]}},"industries":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"locations":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"countries":{"maxItems":20,"type":"array","items":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"}},"employeeCountMin":{"type":"integer","minimum":0,"maximum":10000000},"employeeCountMax":{"type":"integer","minimum":1,"maximum":10000000},"foundedAfter":{"type":"integer","minimum":1800,"maximum":2100},"foundedBefore":{"type":"integer","minimum":1800,"maximum":2100},"includeDomains":{"maxItems":100,"type":"array","items":{"type":"string","minLength":3,"maxLength":253}},"webhookUrl":{"type":"string","format":"uri","description":"HTTPS endpoint to POST a signed completion callback to."},"async":{"description":"Force the asynchronous job path even for a small request.","type":"boolean"}},"required":["query"]},"CompanyEnrichRequest":{"type":"object","properties":{"companies":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":253},"name":{"type":"string","minLength":1,"maxLength":200},"linkedinUrl":{"type":"string","format":"uri"}}}},"fields":{"default":["company","company_domain","location","country","headline"],"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["email","linkedin_url","title","seniority","department","location","country","company","company_domain","headline","phone","company_profile"]}},"webhookUrl":{"type":"string","format":"uri","description":"HTTPS endpoint to POST a signed completion callback to."},"async":{"description":"Force the asynchronous job path even for a small request.","type":"boolean"}},"required":["companies"]},"PeopleJobResponse":{"type":"object","required":["job","results","page","estimatedCredits"],"properties":{"job":{"$ref":"#/components/schemas/Job"},"results":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/PersonResultItem"}},{"type":"null"}],"description":"Null until the job reaches a terminal state."},"page":{"oneOf":[{"$ref":"#/components/schemas/Page"},{"type":"null"}]},"estimatedCredits":{"type":"number","description":"Upper bound reserved for the job. The final charge is usually lower."}}},"CompanyJobResponse":{"type":"object","required":["job","results","page","estimatedCredits"],"properties":{"job":{"$ref":"#/components/schemas/Job"},"results":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/CompanyResultItem"}},{"type":"null"}],"description":"Null until the job reaches a terminal state."},"page":{"oneOf":[{"$ref":"#/components/schemas/Page"},{"type":"null"}]},"estimatedCredits":{"type":"number","description":"Upper bound reserved for the job. The final charge is usually lower."}}},"JobResponse":{"type":"object","required":["job","results","page","estimatedCredits"],"properties":{"job":{"$ref":"#/components/schemas/Job"},"results":{"oneOf":[{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/PersonResultItem"},{"$ref":"#/components/schemas/CompanyResultItem"}]}},{"type":"null"}],"description":"Null until the job reaches a terminal state."},"page":{"oneOf":[{"$ref":"#/components/schemas/Page"},{"type":"null"}]},"estimatedCredits":{"type":"number","description":"Upper bound reserved for the job. The final charge is usually lower."}}}}}}