{"openapi":"3.0.0","paths":{"/v2/people/{id}":{"get":{"description":"Read one person by GetProspect id: the People Enrich profile, with your workspace's saved block and edits and any email or phone your workspace already owns. Costs no credits: it never reveals or charges anything - to reveal an email or a phone, call People Enrich. Uses 1 unit of the enrich rate limit, none when your workspace already owns the person. Returns 404 when the id names no person we can serve.","operationId":"people_get","parameters":[{"name":"id","required":true,"in":"path","description":"The GetProspect person id (24 hex characters).","schema":{"type":"string","pattern":"^[a-fA-F0-9]{24}$","example":"64f1a2b3c4d5e6f7a8b9c0d1"}}],"responses":{"200":{"description":"The person.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleGetResponse"},"example":{"success":true,"data":{"id":"64f1a2b3c4d5e6f7a8b9c0d1","full_name":"Emily Carter","first_name":"Emily","last_name":"Carter","email":{"status":"valid","address":"emily.carter.sample@intercom.com","domain":"intercom.com","provider":"google.com","verified_at":"2026-06-18T09:12:44.000Z","checked_at":"2026-06-18T09:12:44.000Z","revealed":true},"mobile_phone":{"status":"not_requested","number":null,"revealed":false,"checked_at":null},"location":{"city":"San Francisco","state":"California","state_code":"CA","country":"United States","country_code":"US","time_zone":"America/Los_Angeles","time_zone_offset":-7},"linkedin_url":"https://linkedin.com/in/emily-carter-sample","primary_position":{"job_title":"Senior Product Marketing Manager","normalized_job_title":"Product Marketing Manager","seniority":"Senior","departments":["Marketing"],"start_date":"2024-11","company":{"id":"64f1a2b3c4d5e6f7a8b9c0d2","name":"Intercom","description":"Intercom is a customer service platform that helps businesses talk to customers.","logo":"https://logos.getprospect.com/64f1a2b3c4d5e6f7a8b9c0d2.jpg","website":"intercom.com","email":{"status":"valid","address":"emily.carter.sample@intercom.com","domain":"intercom.com","provider":"google.com","verified_at":"2026-06-18T09:12:44.000Z","checked_at":"2026-06-18T09:12:44.000Z","revealed":true},"linkedin_url":"https://linkedin.com/company/intercom-inc-","social_networks":{"linkedin_url":"https://www.linkedin.com/company/intercom","facebook_url":"https://www.facebook.com/intercom","twitter_url":"https://x.com/intercom","instagram_url":"https://www.instagram.com/intercom","youtube_url":"https://www.youtube.com/@intercom","tiktok_url":null,"crunchbase_url":"https://www.crunchbase.com/organization/intercom","github_url":null,"pinterest_url":null},"industry":"Software Development","keywords":["customer messaging","help desk software"],"naics_codes":[511210],"type":"Privately Held","business_type":"B2B","revenue_stream":"Subscriptions / Recurring","founded":2011,"employee_count":900,"employee_range":"501-1000","location":{"city":"San Francisco","state":"California","state_code":"CA","country":"United States","country_code":"US","raw_address":"55 2nd St, San Francisco, CA 94105"},"other_locations":[{"city":"Dublin","state":null,"state_code":null,"country":"Ireland","country_code":"IE","raw_address":"2 Dockland Central, Dublin, Ireland"}],"technologies":[{"id":"3421","name":"Intercom","icon_url":"https://cdn.jsdelivr.net/gh/enthec/webappanalyzer@eea872af449e207e055398f7369d11ee48c8ea03/src/images/icons/Intercom.svg","website":"https://www.intercom.com","categories":[{"id":"53","name":"CRM"},{"id":"52","name":"Live chat"}]}],"technologies_checked_at":"2026-10-09T12:00:00.000Z"},"position_index":0,"id":"64f1a2b3c4d5e6f7a8b9c0e1"},"other_positions":[],"saved":{"id":null,"saved_at":"2026-05-02T11:20:00.000Z","lists":[{"id":"64f1a2b3c4d5e6f7a8b9c0f1","name":"SaaS Marketing Leaders","created_at":"2026-04-01T08:00:00.000Z"}]}},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z","matched_by":"id"}}}}},"400":{"description":"The id is not a person id (`VALIDATION_ERROR`, `payload.code: invalid_format`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"id must be a GetProspect person id (24 hex characters)","payload":{"code":"invalid_format","field":"id"}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"No person we can serve has this id (`NOT_FOUND`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over the `enrich` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get a Person","tags":["People"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/people/{id}/edits":{"patch":{"description":"Sets or clears your workspace's own first name, last name, email and phone for a person it saved; every People answer then serves them to your workspace in place of ours. A string sets the field, null or an empty string clears it (our data shows again), an absent key leaves it alone. Costs no credits and is not rate limited. 404 NOT_SAVED when the workspace has not saved the person.","operationId":"people_edits_update","parameters":[{"name":"id","required":true,"in":"path","description":"The GetProspect person id.","schema":{"type":"string","example":"64f1a2b3c4d5e6f7a8b9c0d1"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleEditsUpdateRequest"},"examples":{"set_and_clear":{"summary":"Set the first name, clear the phone","value":{"first_name":"Em","phone":null}}}}}},"responses":{"200":{"description":"The person's edits after this patch (`{}` once every field is cleared).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleEditsUpdateResponse"},"example":{"success":true,"data":{"id":"64f1a2b3c4d5e6f7a8b9c0d1","edits":{"first_name":"Em"}},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`): a field of the wrong type or format (`payload.field` names it), an id that is not a person id, or a body with no field.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"first_name must be a string","payload":{"field":"first_name","code":"wrong_type","received_value":5,"received_type":"number"}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"Your workspace has not saved this person (`NOT_SAVED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"NOT_SAVED","message":"This person is not saved in your workspace."}]}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Edit a Saved Person","tags":["People"],"x-credit-cost":"none","x-mcp":{"idempotentHint":true},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/people/bulk-enrich":{"post":{"description":"Enrich up to 50 people in one request. Each item takes the same identifiers as People Enrich and is matched independently (strongest identifier wins); the response buckets items into matched, not_matched and invalid, echoing each item's identifier so you can correlate results. One failed item never fails the batch. Credits work like People Enrich: enrich_email is on by default and costs 1 email credit per newly revealed email, and enrich_phone costs 1 phone credit per lookup. Uses 1 unit of the enrich rate limit per item, none for a person your workspace already owns. Authenticate with your API key in the x-api-key header.","operationId":"people_bulk_enrich","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleBulkEnrichRequest"},"examples":{"three_rows":{"summary":"Three rows of a sheet","value":{"data":[{"identifier":"row-1","linkedin_url":"https://linkedin.com/in/emily-carter-sample"},{"identifier":"row-2","linkedin_url":"https://linkedin.com/in/profile-that-does-not-exist-x1"},{"identifier":"row-3","first_name":"Emily"}],"enrich_email":false}}}}}},"responses":{"200":{"description":"Every item in one of `matched`, `not_matched` or `invalid`, echoing its `identifier`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleBulkEnrichResponse"},"example":{"success":true,"data":{"matched":[{"identifier":"row-1","matched_by":"linkedin_url","person":{"id":"64f1a2b3c4d5e6f7a8b9c0d1","full_name":"Emily Carter","first_name":"Emily","last_name":"Carter","email":{"status":"valid","address":"emily.carter.sample@intercom.com","domain":"intercom.com","provider":"google.com","verified_at":"2026-06-18T09:12:44.000Z","checked_at":"2026-06-18T09:12:44.000Z","revealed":true},"mobile_phone":{"status":"not_requested","number":null,"revealed":false,"checked_at":null},"location":{"city":"San Francisco","state":"California","state_code":"CA","country":"United States","country_code":"US","time_zone":"America/Los_Angeles","time_zone_offset":-7},"linkedin_url":"https://linkedin.com/in/emily-carter-sample","primary_position":{"job_title":"Senior Product Marketing Manager","normalized_job_title":"Product Marketing Manager","seniority":"Senior","departments":["Marketing"],"start_date":"2024-11","company":{"id":"64f1a2b3c4d5e6f7a8b9c0d2","name":"Intercom","description":"Intercom is a customer service platform that helps businesses talk to customers.","logo":"https://logos.getprospect.com/64f1a2b3c4d5e6f7a8b9c0d2.jpg","website":"intercom.com","email":{"status":"valid","address":"emily.carter.sample@intercom.com","domain":"intercom.com","provider":"google.com","verified_at":"2026-06-18T09:12:44.000Z","checked_at":"2026-06-18T09:12:44.000Z","revealed":true},"linkedin_url":"https://linkedin.com/company/intercom-inc-","social_networks":{"linkedin_url":"https://www.linkedin.com/company/intercom","facebook_url":"https://www.facebook.com/intercom","twitter_url":"https://x.com/intercom","instagram_url":"https://www.instagram.com/intercom","youtube_url":"https://www.youtube.com/@intercom","tiktok_url":null,"crunchbase_url":"https://www.crunchbase.com/organization/intercom","github_url":null,"pinterest_url":null},"industry":"Software Development","keywords":["customer messaging","help desk software"],"naics_codes":[511210],"type":"Privately Held","business_type":"B2B","revenue_stream":"Subscriptions / Recurring","founded":2011,"employee_count":900,"employee_range":"501-1000","location":{"city":"San Francisco","state":"California","state_code":"CA","country":"United States","country_code":"US","raw_address":"55 2nd St, San Francisco, CA 94105"},"other_locations":[{"city":"Dublin","state":null,"state_code":null,"country":"Ireland","country_code":"IE","raw_address":"2 Dockland Central, Dublin, Ireland"}]},"position_index":0,"id":"64f1a2b3c4d5e6f7a8b9c0e1"},"other_positions":[],"saved":{"id":null,"saved_at":"2026-05-02T11:20:00.000Z","lists":[{"id":"64f1a2b3c4d5e6f7a8b9c0f1","name":"SaaS Marketing Leaders","created_at":"2026-04-01T08:00:00.000Z"}]}}}],"not_matched":[{"identifier":"row-2","attempted":["linkedin_url"]}],"invalid":[{"identifier":"row-3","reason":"All provided lookup fields are invalid: name_and_company (name_and_company requires first_name and last_name). Expected at least one valid: id, linkedin_id, linkedin_url, email, first_name+last_name+company_domain/company_name.","skipped":[{"field":"name_and_company","reason":"name_and_company requires first_name and last_name"}]}]},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z","total":3,"matched_count":1,"not_matched_count":1,"invalid_count":1}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake), or one `identifier` sent with two different lookups (`payload.conflicts`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"data must contain at least 1 elements","payload":{"field":"data","code":"out_of_range","received_value":[],"received_type":"object"}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Not enough credits for every reveal the batch would bill (`PAYMENT_REQUIRED`): all or nothing, nothing is revealed.","headers":{"X-Limit-Reached":{"description":"`true` when a credit balance is exhausted.","schema":{"type":"string"}},"X-Limit-Type":{"description":"Which balance, e.g. `credits`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over the `enrich` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"People Bulk Enrich","tags":["People"],"x-credit-cost":{"type":["email_search","phone_search"],"unit":"newly revealed email; phone number found","when":"enrich_email (on by default) / enrich_phone, per item"},"x-mcp":{"readOnlyHint":false},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/people/calculate-credits":{"post":{"description":"The free preview of POST /v2/people/save (`data`: the same items, by id or LinkedIn URL) or of a whole search save (`filters` + optional `exclude_ids` / `limit`), exactly one of the two. Reports `credits_needed` (1 email credit per person with a stored valid email your workspace does not own yet), `credits_available` and `enough_credits`, with the breakdown in `emails`. Costs no credits and reserves nothing. Uses 1 unit of the search rate limit for `filters` (none when scoped to people you saved), and 1 per started 500 items for `data`.","operationId":"people_calculate_credits","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleCreditsPreviewRequest"},"examples":{"items":{"summary":"Price a save of these people","value":{"data":["64f1a2b3c4d5e6f7a8b9c0d1",{"linkedin_url":"https://linkedin.com/in/emily-carter-sample"}]}},"search":{"summary":"Price saving a whole search","value":{"filters":{"person_seniority":{"include":["VP"]},"company_country":{"include":["US"]}},"limit":1000}}}}}},"responses":{"200":{"description":"The price now; a zero balance answers `enough_credits: false`, not 402.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleCreditsPreviewResponse"},"example":{"success":true,"data":{"requested":2,"savable":1,"not_matched":1,"invalid":0,"emails":{"to_charge":1,"already_owned":0,"without_email":0,"edited":0},"credits_needed":1,"credits_available":500,"enough_credits":true,"truncated":false},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake), or neither or both of `data` / `filters`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"limit must not be less than 1","payload":{"field":"limit","code":"out_of_range","received_value":0,"received_type":"number"}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over the `search` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Preview Save Credits","tags":["People"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/people/enrich":{"post":{"description":"Retrieve the full profile of one person you already know - identity, location, work history and contact fields. Look them up by GetProspect id, LinkedIn id or URL, email, or first name + last name + company; when several identifiers are sent the strongest wins (id, then linkedin_id, linkedin_url, email, name + company). A verified business email is found and revealed by default (1 email credit per newly revealed email; set enrich_email to false to skip), and enrich_phone additionally looks up a mobile phone for 1 phone credit. When no one matches it answers 200 with `NOT_FOUND` in `errors` and charges nothing. Uses 1 unit of the enrich rate limit, none when your workspace already owns the person. A first email search can take more than a minute: set the client timeout to at least 95 seconds. Every position is a current one and carries its start_date (YYYY-MM). Authenticate with your API key in the x-api-key header.","operationId":"people_enrich","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleEnrichRequest"},"examples":{"by_linkedin_url":{"summary":"By LinkedIn URL, revealing the email","value":{"data":{"linkedin_url":"https://linkedin.com/in/emily-carter-sample"},"enrich_email":true}},"by_name_and_company":{"summary":"By name and company domain, without reveals","value":{"data":{"first_name":"Emily","last_name":"Carter","company_domain":"intercom.com"},"enrich_email":false}}}}}},"responses":{"200":{"description":"The person. When nobody matches, `success` is false, `data` is null and `errors[0].name` is `NOT_FOUND` (not charged).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleEnrichResponse"},"example":{"success":true,"data":{"id":"64f1a2b3c4d5e6f7a8b9c0d1","full_name":"Emily Carter","first_name":"Emily","last_name":"Carter","email":{"status":"valid","address":"emily.carter.sample@intercom.com","domain":"intercom.com","provider":"google.com","verified_at":"2026-06-18T09:12:44.000Z","checked_at":"2026-06-18T09:12:44.000Z","revealed":true},"mobile_phone":{"status":"not_requested","number":null,"revealed":false,"checked_at":null},"location":{"city":"San Francisco","state":"California","state_code":"CA","country":"United States","country_code":"US","time_zone":"America/Los_Angeles","time_zone_offset":-7},"linkedin_url":"https://linkedin.com/in/emily-carter-sample","primary_position":{"job_title":"Senior Product Marketing Manager","normalized_job_title":"Product Marketing Manager","seniority":"Senior","departments":["Marketing"],"start_date":"2024-11","company":{"id":"64f1a2b3c4d5e6f7a8b9c0d2","name":"Intercom","description":"Intercom is a customer service platform that helps businesses talk to customers.","logo":"https://logos.getprospect.com/64f1a2b3c4d5e6f7a8b9c0d2.jpg","website":"intercom.com","email":{"status":"valid","address":"emily.carter.sample@intercom.com","domain":"intercom.com","provider":"google.com","verified_at":"2026-06-18T09:12:44.000Z","checked_at":"2026-06-18T09:12:44.000Z","revealed":true},"linkedin_url":"https://linkedin.com/company/intercom-inc-","social_networks":{"linkedin_url":"https://www.linkedin.com/company/intercom","facebook_url":"https://www.facebook.com/intercom","twitter_url":"https://x.com/intercom","instagram_url":"https://www.instagram.com/intercom","youtube_url":"https://www.youtube.com/@intercom","tiktok_url":null,"crunchbase_url":"https://www.crunchbase.com/organization/intercom","github_url":null,"pinterest_url":null},"industry":"Software Development","keywords":["customer messaging","help desk software"],"naics_codes":[511210],"type":"Privately Held","business_type":"B2B","revenue_stream":"Subscriptions / Recurring","founded":2011,"employee_count":900,"employee_range":"501-1000","location":{"city":"San Francisco","state":"California","state_code":"CA","country":"United States","country_code":"US","raw_address":"55 2nd St, San Francisco, CA 94105"},"other_locations":[{"city":"Dublin","state":null,"state_code":null,"country":"Ireland","country_code":"IE","raw_address":"2 Dockland Central, Dublin, Ireland"}],"technologies":[{"id":"3421","name":"Intercom","icon_url":"https://cdn.jsdelivr.net/gh/enthec/webappanalyzer@eea872af449e207e055398f7369d11ee48c8ea03/src/images/icons/Intercom.svg","website":"https://www.intercom.com","categories":[{"id":"53","name":"CRM"},{"id":"52","name":"Live chat"}]}],"technologies_checked_at":"2026-10-09T12:00:00.000Z"},"position_index":0,"id":"64f1a2b3c4d5e6f7a8b9c0e1"},"other_positions":[],"saved":{"id":null,"saved_at":"2026-05-02T11:20:00.000Z","lists":[{"id":"64f1a2b3c4d5e6f7a8b9c0f1","name":"SaaS Marketing Leaders","created_at":"2026-04-01T08:00:00.000Z"}]}},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z","matched_by":"linkedin_url"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake), or no usable identifier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"enrich_mail is not a field of this request - did you mean enrich_email?","payload":{"field":"enrich_mail","code":"unknown_field","received_value":true,"received_type":"boolean","did_you_mean":"enrich_email","allowed_fields":["data","enrich_email","enrich_phone"]}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Not enough credits for the email or phone reveal asked for (`PAYMENT_REQUIRED`).","headers":{"X-Limit-Reached":{"description":"`true` when a credit balance is exhausted.","schema":{"type":"string"}},"X-Limit-Type":{"description":"Which balance, e.g. `credits`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"408":{"description":"The email search or phone lookup is still running (`REQUEST_TIMEOUT`, the older spelling of `TIMEOUT`). Not charged; ask again in a few minutes, when its result is usually stored.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over the `enrich` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"People Enrich","tags":["People"],"x-credit-cost":{"type":["email_search","phone_search"],"unit":"newly revealed email; phone number found","when":"enrich_email (on by default) / enrich_phone"},"x-mcp":{"readOnlyHint":false},"x-not-found-in-envelope":true,"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false},"x-timeout-ms":95000}},"/v2/people/enrich-search":{"post":{"description":"Looks up mobile numbers for everyone a filter set matches, up to 25000 people, skipping people your workspace already revealed a number for. Answers 202 with a `Job` and `Location: /v2/jobs/{id}`; poll it until it is `done` (a notification is sent too). Credits: 1 phone credit per number found; the run stops when the phone balance runs out. A run interrupted on our side resumes on its own and never charges a person twice. Uses 1 unit of the search rate limit (none when scoped to people you saved). One run per workspace at a time: a second start answers 409 `CONFLICT` (`limit_reached`, `job_id`). The same body sent again within 10 minutes answers the run it started.","operationId":"people_enrich_search","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleEnrichSearchRequest"},"examples":{"enrich_search":{"summary":"Buy mobiles for the first 200 people of a search","value":{"filters":{"person_seniority":{"include":["VP"]},"company_country":{"include":["US"]}},"limit":200}}}}}},"responses":{"200":{"description":"The run, already final (a replay of a finished run).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleEnrichSearchResponse"}}}},"202":{"description":"The run, still running: poll `Location` after `Retry-After` seconds.","headers":{"Location":{"description":"The job to poll: `/v2/jobs/{id}`.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before the first poll.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleEnrichSearchResponse"},"example":{"success":true,"data":{"id":"6702f1a2b3c4d5e6f7a8b9c0","type":"people_enrich_search","status":"running","total":200,"processed":50,"progress_percent":25,"error":null,"resource_url":null,"created_at":"2026-10-08T09:30:00.000Z","finished_at":null,"result":{"requested":200,"truncated":false,"found":31,"already_not_found":12,"stopped_reason":null}},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"limit must not be greater than 25000","payload":{"field":"limit","code":"out_of_range","received_value":30000,"received_type":"number"}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Your phone credit balance is zero (`PAYMENT_REQUIRED`).","headers":{"X-Limit-Reached":{"description":"`true` when a credit balance is exhausted.","schema":{"type":"string"}},"X-Limit-Type":{"description":"Which balance, e.g. `credits`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"A mobile enrichment is already running in this workspace (`CONFLICT`, `payload.code: limit_reached`, `payload.job_id` names it).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"CONFLICT","message":"A mobile enrichment is already running for this workspace. Wait for it to finish before starting another.","payload":{"code":"limit_reached","limit":1,"job_id":"6702f1a2b3c4d5e6f7a8b9c0"}}]}}}},"429":{"description":"Over the `search` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Enrich Mobiles for a Search","tags":["People"],"x-credit-cost":{"type":"phone_search","unit":"phone number found","when":"always, until the balance runs out"},"x-mcp":{"exclude":true},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/people/exists":{"post":{"deprecated":true,"description":"Checks up to 50 LinkedIn person URLs and answers which of them we hold, in matched, not_matched and invalid buckets. A matched person is a slim profile: no other_positions or saved block, and a primary_position of job_title, normalized_job_title and company.name. Costs no credits and is not rate limited. Deprecated: kept for the Zapier 2.1 app only; use People Bulk Enrich (POST /v2/people/bulk-enrich) with enrich_email set to false. Sends `Deprecation` and `Link` headers.","operationId":"people_exists","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleExistsRequest"},"examples":{"two_urls":{"summary":"Two profile URLs","value":{"linkedin_urls":["https://linkedin.com/in/emily-carter-sample","https://linkedin.com/in/profile-that-does-not-exist-x1"]}}}}}},"responses":{"200":{"description":"Every URL in one of `matched`, `not_matched` or `invalid`.","headers":{"Deprecation":{"description":"`true`: this operation is deprecated.","schema":{"type":"string"}},"Link":{"description":"The successor, `</v2/people/bulk-enrich>; rel=\"successor-version\"`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleExistsResponse"},"example":{"success":true,"data":{"matched":[{"linkedin_url":"https://linkedin.com/in/emily-carter-sample","matched_by":"linkedin_url","person":{"id":"64f1a2b3c4d5e6f7a8b9c0d1","full_name":"Emily Carter","first_name":"Emily","last_name":"Carter","email":{"status":"valid","address":null,"domain":"intercom.com","provider":"google.com","verified_at":"2026-06-18T09:12:44.000Z","checked_at":"2026-06-18T09:12:44.000Z","revealed":false},"mobile_phone":{"status":"not_requested","number":null,"revealed":false,"checked_at":null},"location":{"city":"San Francisco","state":"California","state_code":"CA","country":"United States","country_code":"US","time_zone":"America/Los_Angeles","time_zone_offset":-7},"linkedin_url":"https://linkedin.com/in/emily-carter-sample","primary_position":{"job_title":"Senior Product Marketing Manager","normalized_job_title":"Product Marketing Manager","company":{"name":"Intercom"}}}}],"not_matched":[{"linkedin_url":"https://linkedin.com/in/profile-that-does-not-exist-x1","attempted":["linkedin_url"]}],"invalid":[]},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z","total":2,"matched_count":1,"not_matched_count":1,"invalid_count":0}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"linkedin_urls must contain at least 1 elements","payload":{"field":"linkedin_urls","code":"out_of_range","received_value":[],"received_type":"object"}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"People Exists","tags":["People"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-replaced-by":"people_bulk_enrich","x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/people/save":{"post":{"description":"Saves up to 500 people into 1-20 of your v2 lists, by GetProspect id or by LinkedIn profile URL (at most 50 URL items). Credits: 1 email credit per person whose stored valid email your workspace does not own yet; when the balance runs out the rest are saved without email, and that email stays billable on a later save, enrich or search. A person already paid for is free to save again. Uses 1 unit of the enrich rate limit per `linkedin_url` item (none for one your workspace already owns); id items use none. Every item comes back in one of `saved`, `not_matched`, `invalid` or `failed`, echoing its `identifier`.","operationId":"people_save","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleSaveRequest"},"examples":{"by_id_and_url":{"summary":"One person by id, one by LinkedIn URL","value":{"data":["64f1a2b3c4d5e6f7a8b9c0d1",{"identifier":"row-2","linkedin_url":"https://linkedin.com/in/profile-that-does-not-exist-x1"}],"list_ids":["64f1a2b3c4d5e6f7a8b9c0f1"]}}}}}},"responses":{"200":{"description":"Every item in one of the four buckets; `metadata.credits` is the balance after the save.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleSaveResponse"},"example":{"success":true,"data":{"saved":[{"identifier":"64f1a2b3c4d5e6f7a8b9c0d1","id":"64f1a2b3c4d5e6f7a8b9c0d1","matched_by":"id","list_ids":["64f1a2b3c4d5e6f7a8b9c0f1"],"saved_at":"2026-10-08T09:30:00.000Z","email":{"status":"valid","address":"emily.carter.sample@intercom.com","revealed":true}}],"not_matched":[{"identifier":"row-2","attempted":["linkedin_url"]}],"invalid":[],"failed":[]},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z","credits":{"email_search":499,"email_verification":100,"reset_at":"2026-11-01T00:00:00.000Z"},"total":2,"saved_count":1,"not_matched_count":1,"invalid_count":0,"failed_count":0}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake), or `list_ids` naming a list that is not a v2 list of your workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"linkedin_url and id exclude each other: send exactly one of them","payload":{"field":"data.0.linkedin_url","code":"conflicting_fields","received_value":"https://linkedin.com/in/emily-carter-sample","received_type":"string"}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Your email credit balance is zero (`PAYMENT_REQUIRED`).","headers":{"X-Limit-Reached":{"description":"`true` when a credit balance is exhausted.","schema":{"type":"string"}},"X-Limit-Type":{"description":"Which balance, e.g. `credits`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over the `enrich` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Save People","tags":["People"],"x-credit-cost":{"type":"email_search","unit":"person whose stored valid email is handed over and was not already owned","when":"always; a re-save of a person already paid for is free"},"x-mcp":{"readOnlyHint":false,"idempotentHint":false},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/people/save-search":{"post":{"description":"Saves everyone a filter set matches (the `POST /v2/people/search` filter object), up to 25000 people, into 1-20 of your v2 lists. Answers 202 with a `Job` and `Location: /v2/jobs/{id}`; poll it until it is `done`. Credits: as POST /v2/people/save, walked in search order: 1 email credit per person whose stored valid email your workspace does not own yet; when the balance runs out the run stops (`stopped_reason: out_of_credits`). A person already paid for is free to save again. Uses 1 unit of the search rate limit (none when scoped to people you saved). One run per workspace at a time: a second start answers 409 `CONFLICT` (`limit_reached`, `job_id`). The same body sent again within 10 minutes answers the run it started.","operationId":"people_save_search","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleSaveSearchRequest"},"examples":{"save_search":{"summary":"Save the first 1,000 people of a search into a list","value":{"filters":{"person_seniority":{"include":["VP"]},"company_country":{"include":["US"]}},"limit":1000,"list_ids":["64f1a2b3c4d5e6f7a8b9c0f1"]}}}}}},"responses":{"200":{"description":"The run, already final (a replay of a finished run).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleSaveSearchResponse"}}}},"202":{"description":"The run, still running: poll `Location` after `Retry-After` seconds.","headers":{"Location":{"description":"The job to poll: `/v2/jobs/{id}`.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before the first poll.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleSaveSearchResponse"},"example":{"success":true,"data":{"id":"6702f1a2b3c4d5e6f7a8b9c0","type":"people_save_search","status":"running","total":1000,"processed":250,"progress_percent":25,"error":null,"resource_url":null,"created_at":"2026-10-08T09:30:00.000Z","finished_at":null,"result":{"requested":1000,"saved":250,"not_found":0,"stopped_reason":null,"truncated":false}},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake), or `list_ids` naming a list that is not a v2 list of your workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"limit must not be greater than 25000","payload":{"field":"limit","code":"out_of_range","received_value":30000,"received_type":"number"}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Your email credit balance is zero (`PAYMENT_REQUIRED`).","headers":{"X-Limit-Reached":{"description":"`true` when a credit balance is exhausted.","schema":{"type":"string"}},"X-Limit-Type":{"description":"Which balance, e.g. `credits`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"409":{"description":"A whole-search save is already running in this workspace (`CONFLICT`, `payload.code: limit_reached`, `payload.job_id` names it).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"CONFLICT","message":"A save of a whole search is already running for this workspace. Wait for it to finish before starting another.","payload":{"code":"limit_reached","limit":1,"job_id":"6702f1a2b3c4d5e6f7a8b9c0"}}]}}}},"429":{"description":"Over the `search` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Save a Whole Search","tags":["People"],"x-credit-cost":{"type":"email_search","unit":"person whose stored valid email is handed over and was not already owned","when":"always, in search order, until the balance runs out"},"x-mcp":{"readOnlyHint":false},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/people/search":{"post":{"description":"Search our people database by who a person is, what they do and where they work. Combine person filters (name, location), job filters (title, seniority, department, tenure, recent job change) and company filters (industry, headcount, location, keywords and more): filters AND together, and at least one include condition is required. Searching is free and every result reports email availability; set enrich_email or enrich_phone to reveal contact data for credits. Results return 25 per page by default (per_page: 25, 50 or 100), sorted by followers desc by default - see the body parameters below for every filter and its nuances. Every position is a current one and carries its start_date (YYYY-MM, LinkedIn month precision). Costs nothing without enrich flags; with enrich_email, 1 email credit per newly revealed email, and with enrich_phone, 1 phone credit per number found. Uses 1 unit of the search rate limit per 25 results returned (none for a search scoped to people you saved). Authenticate with your API key in the x-api-key header.","operationId":"people_search","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleSearchRequest"},"examples":{"product_marketers_at_intercom":{"summary":"Product marketers at a company, valid emails only","value":{"filters":{"person_job_title":{"include":["Product Marketing Manager"],"match_mode":"CONTAINS"},"company":{"name":{"include":["Intercom"]}},"contact_details":{"email":{"status":["valid"]}}},"page":1,"per_page":25}}}}}},"responses":{"200":{"description":"A page of people, in the requested order. An empty page is `data: []` with `total_count: 0`, not an error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleSearchResponse"},"example":{"success":true,"data":[{"id":"64f1a2b3c4d5e6f7a8b9c0d1","full_name":"Emily Carter","first_name":"Emily","last_name":"Carter","email":{"status":"valid","address":"emily.carter.sample@intercom.com","domain":"intercom.com","provider":"google.com","verified_at":"2026-06-18T09:12:44.000Z","checked_at":"2026-06-18T09:12:44.000Z","revealed":true},"mobile_phone":{"status":"not_requested","number":null,"revealed":false,"checked_at":null},"location":{"city":"San Francisco","state":"California","state_code":"CA","country":"United States","country_code":"US","time_zone":"America/Los_Angeles","time_zone_offset":-7},"linkedin_url":"https://linkedin.com/in/emily-carter-sample","primary_position":{"job_title":"Senior Product Marketing Manager","normalized_job_title":"Product Marketing Manager","seniority":"Senior","departments":["Marketing"],"start_date":"2024-11","company":{"id":"64f1a2b3c4d5e6f7a8b9c0d2","name":"Intercom","logo":"https://logos.getprospect.com/64f1a2b3c4d5e6f7a8b9c0d2.jpg","social_networks":{"linkedin_url":"https://www.linkedin.com/company/intercom","facebook_url":"https://www.facebook.com/intercom","twitter_url":"https://x.com/intercom","instagram_url":"https://www.instagram.com/intercom","youtube_url":"https://www.youtube.com/@intercom","tiktok_url":null,"crunchbase_url":"https://www.crunchbase.com/organization/intercom","github_url":null,"pinterest_url":null},"industry":"Software Development","keywords":["customer messaging","help desk software"],"type":"Privately Held","business_type":"B2B","revenue_stream":"Subscriptions / Recurring","founded":2011,"employee_count":900,"employee_range":"501-1000","location":{"city":"San Francisco","state":"California","state_code":"CA","country":"United States","country_code":"US","raw_address":"55 2nd St, San Francisco, CA 94105"},"other_locations":[{"city":"Dublin","state":null,"state_code":null,"country":"Ireland","country_code":"IE","raw_address":"2 Dockland Central, Dublin, Ireland"}]},"position_index":0,"id":"64f1a2b3c4d5e6f7a8b9c0e1"},"saved":{"id":null,"saved_at":"2026-05-02T11:20:00.000Z","lists":[{"id":"64f1a2b3c4d5e6f7a8b9c0f1","name":"SaaS Marketing Leaders","created_at":"2026-04-01T08:00:00.000Z"}]}}],"metadata":{"timestamp":"2026-10-08T09:30:00.000Z","sort_by":"followers","sort_direction":"desc","pagination":{"page":1,"per_page":25,"total_pages":1,"max_page":1000,"truncated":false,"total_count":1,"total_is_estimate":false}}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake), including a search with no include condition.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"filters.person_seniority.include: \"c_level\" is not an accepted value. Accepted: Owner, Partner, Chief Officer, VP, Director, Senior, Manager, Entry, Intern, Unpaid; the accepted values are listed at GET /v2/enums/seniorities","payload":{"field":"filters.person_seniority.include","code":"value_not_allowed","received_value":["c_level"],"received_type":"object","invalid_values":["c_level"],"allowed_values":["Owner","Partner","Chief Officer","VP","Director","Senior","Manager","Entry","Intern","Unpaid"],"enum":"seniorities"}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Not enough credits for the reveals `enrich_email` / `enrich_phone` asked for (`PAYMENT_REQUIRED`).","headers":{"X-Limit-Reached":{"description":"`true` when a credit balance is exhausted.","schema":{"type":"string"}},"X-Limit-Type":{"description":"Which balance, e.g. `credits`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over the `search` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"People Search","tags":["People"],"x-credit-cost":{"type":["email_search","phone_search"],"unit":"newly revealed email; phone number found","when":"only with enrich_email / enrich_phone"},"x-mcp":{"readOnlyHint":false,"exclude_params":["enrich_email","enrich_phone"]},"x-pagination":{"type":"page_number","page_param":"page","size_param":"per_page","params_in":"body","results":"$.data","total_pages":"$.metadata.pagination.total_pages","max_page":"$.metadata.pagination.max_page"},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false},"x-speakeasy-pagination":{"type":"offsetLimit","inputs":[{"name":"page","in":"requestBody","type":"page"},{"name":"per_page","in":"requestBody","type":"limit"}],"outputs":{"results":"$.data","numPages":"$.metadata.pagination.total_pages"}}}},"/v2/companies/{id}":{"get":{"description":"Read one company by its GetProspect id, with your workspace's saved block (lists, saved_at, name edit). An unknown company answers 404 NOT_FOUND. Free: spends no credits; 1 unit of the enrich rate limit, none for a company your workspace saved.","operationId":"companies_get","parameters":[{"name":"id","required":true,"in":"path","description":"The GetProspect company id (24 hexadecimal characters), as `id` on every company answer.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{24}$","example":"696fb12757da999990585cfd"}}],"responses":{"200":{"description":"The company, with `saved` when your workspace saved it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesGetResponse"},"examples":{"saved":{"$ref":"#/components/examples/companies_get_200_saved"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_format":{"$ref":"#/components/examples/companies_get_400_invalid_format"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"No such company (`NOT_FOUND`): unknown, erased, or blocked by your workspace, which are not told apart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"$ref":"#/components/examples/companies_get_404_not_found"}}}}},"429":{"description":"Over the `enrich` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Companies Get","tags":["Companies"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/companies/{id}/edits":{"patch":{"description":"Set or clear your workspace's own name for a saved company; every read in the workspace then shows it. A string sets the name, null or an empty string clears it, and sending the current value changes nothing. A company the workspace has not saved answers 404 NOT_SAVED. Free: spends no credits and no rate-limit units.","operationId":"companies_edits_update","parameters":[{"name":"id","required":true,"in":"path","description":"The GetProspect company id of a company saved in your workspace.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{24}$","example":"696fb12757da999990585cfd"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesEditsUpdateRequest"},"examples":{"rename":{"summary":"Set your workspace's name for the company","value":{"name":"Intercom (EMEA)"}},"clear":{"summary":"Clear the edit: the database name shows again","value":{"name":null}}}}}},"responses":{"200":{"description":"The company id and its edits after the write (`edits` is `{}` once cleared).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesEditsUpdateResponse"},"examples":{"renamed":{"$ref":"#/components/examples/companies_edits_update_200_renamed"},"cleared":{"$ref":"#/components/examples/companies_edits_update_200_cleared"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`): an unknown field (`payload.code`), a malformed `id` or `name`, or an empty body (`payload.field` names the field).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"unknown_field":{"$ref":"#/components/examples/companies_edits_update_400_unknown_field"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"The company is not saved in your workspace (`NOT_SAVED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_saved":{"$ref":"#/components/examples/companies_edits_update_404_not_saved"}}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Edit Saved Company","tags":["Companies"],"x-credit-cost":"none","x-mcp":{"idempotentHint":true},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/companies/bulk-enrich":{"post":{"description":"Enrich up to 50 companies in one request. Each item takes the same identifiers as Companies Enrich and is matched independently (id, then linkedin_id, linkedin_url, domain, name); the response buckets items into matched, not_matched and invalid, echoing each item's identifier so you can correlate results. Free: spends no credits; 1 unit of the enrich rate limit per item, none for companies your workspace saved. Authenticate with your API key in the x-api-key header.","operationId":"companies_bulk_enrich","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesBulkEnrichRequest"},"examples":{"mixed":{"summary":"Three items, each with its own identifier","value":{"data":[{"identifier":"acct-1","domain":"intercom.com"},{"identifier":"acct-2","domain":"domain-that-does-not-exist-x1.com"},{"identifier":"acct-3"}]}}}}}},"responses":{"200":{"description":"Every item in exactly one bucket, with the bucket counts in `metadata`. Two items with one `identifier` but different lookup keys answer 400 instead.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesBulkEnrichResponse"},"examples":{"buckets":{"$ref":"#/components/examples/companies_bulk_enrich_200_buckets"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"out_of_range":{"$ref":"#/components/examples/companies_bulk_enrich_400_out_of_range"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over the `enrich` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Companies Bulk Enrich","tags":["Companies"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/companies/enrich":{"post":{"description":"Retrieve the full profile of one company - industry, headcount, locations, domains and LinkedIn data. Look it up by GetProspect id, LinkedIn id or URL, web domain, or name; when several identifiers are sent the strongest wins (id, then linkedin_id, linkedin_url, domain, name). When no company matches, the answer is still 200, with data null and a NOT_FOUND entry in errors. Free: spends no credits; 1 unit of the enrich rate limit, none for a company your workspace saved. Authenticate with your API key in the x-api-key header.","operationId":"companies_enrich","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesEnrichRequest"},"examples":{"by_domain":{"summary":"By web domain","value":{"data":{"domain":"intercom.com"}}},"by_linkedin_url":{"summary":"By LinkedIn company page","value":{"data":{"linkedin_url":"https://www.linkedin.com/company/intercom"}}}}}}},"responses":{"200":{"description":"The company, and in `metadata.matched_by` the key that found it. When none matched, `success` is false, `data` is null and `errors[0].name` is `NOT_FOUND`, with the keys tried in `payload.attempted`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesEnrichResponse"},"examples":{"found":{"$ref":"#/components/examples/companies_enrich_200_found"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"unknown_field":{"$ref":"#/components/examples/companies_enrich_400_unknown_field"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over the `enrich` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Companies Enrich","tags":["Companies"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-not-found-in-envelope":true,"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/companies/save":{"post":{"description":"Save companies into your workspace, optionally into company lists. Send company ids, or identify a company by linkedin_id, linkedin_url or domain (at most 50 such items per request). The answer buckets every item into saved, not_matched, invalid and failed, echoing its identifier. A company already saved keeps its first saved_at, so a retry is safe. A ledger failure answers 200 with the items under failed (failed_count > 0). Free: spends no credits; 1 unit of the enrich rate limit per item without an id, none for a save by id.","operationId":"companies_save","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesSaveRequest"},"examples":{"ids_into_list":{"summary":"Save companies by id into a list","value":{"data":["696fb12757da999990585cfd"],"list_ids":["66f2c1d0a1b2c3d4e5f60718"]}},"by_domain":{"summary":"Save by domain or LinkedIn (at most 50 such items)","value":{"data":[{"identifier":"crm-17","domain":"intercom.com"},{"identifier":"crm-18","linkedin_url":"https://www.linkedin.com/company/stripe"},{"identifier":"crm-19","name":"Acme"}]}}}}}},"responses":{"200":{"description":"Every item in exactly one bucket, with the bucket counts in `metadata` (`credits` is null: nothing is spent). Retry the items under `failed`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesSaveResponse"},"examples":{"buckets":{"$ref":"#/components/examples/companies_save_200_buckets"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`): a malformed body or unknown key, more than 50 items without an id (`out_of_range`), one identifier with different lookup keys (`conflicting_fields`), or a `list_ids` entry that is not a company list of your workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"unknown_field":{"$ref":"#/components/examples/companies_save_400_unknown_field"},"out_of_range":{"$ref":"#/components/examples/companies_save_400_out_of_range"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over the `enrich` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Companies Save","tags":["Companies"],"x-credit-cost":"none","x-mcp":{"idempotentHint":true},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/companies/search":{"post":{"description":"Search our company database by identity, company attributes and free-text keywords. Look up specific companies by name, domain or LinkedIn id, or build a target list by industry, location (city, state, country or region), headcount, founded year, company type, business type, revenue stream and NAICS codes: filters AND together, and at least one include condition is required. Results return 25 per page by default (per_page: 25, 50 or 100), sorted by relevance when keywords are present and by followers otherwise - see the body parameters below for every filter and its nuances. Free: spends no credits; 1 unit of the search rate limit per 25 results. Authenticate with your API key in the x-api-key header.","operationId":"companies_search","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesSearchRequest"},"examples":{"target_list":{"summary":"US software companies of 1,001-5,000 people, largest first","value":{"filters":{"company_industry":{"include":["Software Development"]},"company_headcount_range":["1001-5000"],"company_country":{"include":["US"]}},"sort_by":"company_employee_count","sort_direction":"desc","page":1,"per_page":25}},"by_domain":{"summary":"Look up known companies by domain","value":{"filters":{"company":{"domain":{"include":["intercom.com","stripe.com"]}}}}}}}}},"responses":{"200":{"description":"A page of companies. `metadata.pagination` says where it sits: ask for the next `page` until it reaches `total_pages`; past 25,000 results `truncated` is true and `total_pages` stops at `max_page`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompaniesSearchResponse"},"examples":{"page":{"$ref":"#/components/examples/companies_search_200_page"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"unknown_field":{"$ref":"#/components/examples/companies_search_400_unknown_field"},"value_not_allowed":{"$ref":"#/components/examples/companies_search_400_value_not_allowed"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over the `search` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Companies Search","tags":["Companies"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-pagination":{"type":"page_number","page_param":"page","size_param":"per_page","results":"$.data","total_pages":"$.metadata.pagination.total_pages","max_page":"$.metadata.pagination.max_page"},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false},"x-speakeasy-pagination":{"type":"offsetLimit","inputs":[{"name":"page","in":"requestBody","type":"page"},{"name":"per_page","in":"requestBody","type":"limit"}],"outputs":{"results":"$.data","numPages":"$.metadata.pagination.total_pages"}}}},"/v2/email-finder":{"get":{"description":"GET equivalent of `POST /v2/email/find`: the same search, with the inputs as query parameters. Costs 1 email credit per served address the workspace does not already own; 1 enrich rate-limit unit. Answers as `POST /v2/email/find`, except that the query parameters are not validated up front: every 400 comes from the service, without `payload.code`. Query strings end up in URL logs, so where that matters send the `x-api-key` header rather than `api_key`, or use the POST endpoint.","operationId":"email_find_get","parameters":[{"name":"full_name","required":false,"in":"query","description":"The contact's full name (e.g. \"Dmytro Shulha\"). Use instead of first_name + last_name.","schema":{"example":"Emily Carter","type":"string"}},{"name":"first_name","required":false,"in":"query","description":"The contact's first name (e.g. \"Dmytro\"). Required if full_name is not provided.","schema":{"example":"Emily","type":"string"}},{"name":"last_name","required":false,"in":"query","description":"The contact's last name (e.g. \"Shulha\"). Required when first_name is provided.","schema":{"example":"Carter","type":"string"}},{"name":"domain","required":false,"in":"query","description":"The company domain (e.g. \"getprospect.com\"). Provides the best results.","schema":{"example":"intercom.com","type":"string"}},{"name":"company","required":false,"in":"query","description":"The company name (e.g. \"GetProspect\"). Used as a fallback when domain is not provided.","schema":{"example":"Intercom","type":"string"}},{"name":"api_key","required":false,"in":"query","description":"Your API key as a query parameter, accepted on the GET email endpoints only. The `x-api-key` header works here too and keeps the key out of URL logs.","schema":{"type":"string"}}],"responses":{"200":{"description":"The search ran. A served address has `status: valid`; when nothing could be confirmed `success` is false, `data.status` is `not_found` and `errors[0].name` is `NOT_FOUND` (not charged).","headers":{"X-RateLimit-Bucket":{"description":"The rate-limit bucket spent: `enrich`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailFindResponse"},"examples":{"found":{"$ref":"#/components/examples/email_find_get_200_found"},"not_found":{"$ref":"#/components/examples/email_find_get_200_not_found"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`). Every 400 of this alias comes from the service and carries no `payload.code`: a missing name or company, a `first_name` without `last_name`, or a domain that is not one. Switch on `errors[0].name`, or move to `POST /v2/email/find` for coded errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"missing_name":{"$ref":"#/components/examples/email_find_get_400_missing_name"},"missing_company":{"$ref":"#/components/examples/email_find_get_400_missing_company"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Not enough credits (`PAYMENT_REQUIRED`).","headers":{"X-Limit-Reached":{"description":"`true` when a credit balance is exhausted.","schema":{"type":"string"}},"X-Limit-Type":{"description":"Which balance, e.g. `credits`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"credit_limit":{"$ref":"#/components/examples/email_find_get_402_credit_limit"}}}}},"408":{"description":"The search is still running (`TIMEOUT`). Not charged; ask again after `Retry-After` seconds.","headers":{"Retry-After":{"description":"Seconds to wait before asking again (120).","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"timeout":{"$ref":"#/components/examples/email_find_get_408_timeout"}}}}},"429":{"description":"Over the `enrich` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds until the window that tripped has room again.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Bucket":{"description":"The rate-limit bucket spent: `enrich`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Find Email (GET)","tags":["Email"],"x-credit-cost":{"type":"email_search","unit":"served_address","when":"a valid address is served that the workspace does not already own (the email of a revealed or saved person, and an address charged before, are free)"},"x-mcp":{"exclude":true},"x-not-found-in-envelope":true}},"/v2/email-verifications":{"get":{"description":"List the workspace's bulk email verifications, newest first. Free: no credits. `query` matches the name, `owner` is `me`, `anyone` or a user id; `per_page` up to 100.","operationId":"email_verifications_list","parameters":[{"name":"page","required":false,"in":"query","description":"The page, 1-based.","schema":{"minimum":1,"default":1,"type":"integer"}},{"name":"per_page","required":false,"in":"query","description":"Jobs per page.","schema":{"minimum":1,"maximum":100,"default":25,"type":"integer"}},{"name":"query","required":false,"in":"query","description":"Case-insensitive substring match on the job name.","schema":{"maxLength":256,"example":"webinar","type":"string"}},{"name":"owner","required":false,"in":"query","description":"Whose jobs: `me` (the caller's), `anyone` (the default) or a user id of the workspace.","schema":{"maxLength":64,"example":"me","type":"string"}}],"responses":{"200":{"description":"One page of jobs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailVerificationListResponse"},"examples":{"first_page":{"$ref":"#/components/examples/email_verifications_list_200_first_page"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"out_of_range":{"$ref":"#/components/examples/email_verifications_list_400_out_of_range"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List Email Verifications","tags":["Email"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-pagination":{"type":"page_number","page_param":"page","size_param":"per_page","results":"$.data","total_pages":"$.metadata.pagination.total_pages"},"x-sdk-group":"email.verifications","x-speakeasy-pagination":{"type":"offsetLimit","inputs":[{"name":"page","in":"parameters","type":"page"},{"name":"per_page","in":"parameters","type":"limit"}],"outputs":{"results":"$.data","numPages":"$.metadata.pagination.total_pages"}}}},"/v2/email-verifications/{id}":{"get":{"description":"Read one bulk email verification job; poll it while the job is active. Free: no credits. The same id reads as a generic job at `GET /v2/jobs/{id}`.","operationId":"email_verifications_get","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"The job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailVerificationResponse"},"examples":{"awaiting_confirmation":{"$ref":"#/components/examples/email_verifications_get_200_awaiting_confirmation"},"completed":{"$ref":"#/components/examples/email_verifications_get_200_completed"}}}}},"400":{"description":"Malformed id (`VALIDATION_ERROR`, no `payload.code`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"malformed_id":{"$ref":"#/components/examples/email_verifications_get_400_malformed_id"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"No such record in this workspace (`NOT_FOUND`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"$ref":"#/components/examples/email_verifications_get_404_not_found"}}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get Email Verification","tags":["Email"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-sdk-group":"email.verifications"}},"/v2/email-verifications/{id}/cancel":{"post":{"description":"Cancel a bulk email verification job and refund the credits of the rows it has not verified. Free: no credits. A job is cancellable while `queued`, `counting`, `awaiting_confirmation` or `verifying`; the refund is made at most once.","operationId":"email_verifications_cancel","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"The job, `cancelled`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailVerificationResponse"},"examples":{"cancelled":{"$ref":"#/components/examples/email_verifications_cancel_200_cancelled"}}}}},"400":{"description":"Malformed id (`VALIDATION_ERROR`, no `payload.code`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"malformed_id":{"$ref":"#/components/examples/email_verifications_cancel_400_malformed_id"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"No such record in this workspace (`NOT_FOUND`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"$ref":"#/components/examples/email_verifications_cancel_404_not_found"}}}}},"409":{"description":"The job is already finished (`CONFLICT`, `invalid_state`; `payload.status` names its state).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_state":{"$ref":"#/components/examples/email_verifications_cancel_409_invalid_state"}}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Cancel Email Verification","tags":["Email"],"x-credit-cost":"none","x-mcp":{"destructiveHint":true},"x-sdk-group":"email.verifications"}},"/v2/email-verifications/{id}/start":{"post":{"description":"Confirm a counted bulk email verification job and start verifying it. Costs 1 email verification credit per billable row (`counts.billable`), charged at start; the unverified remainder is refunded on cancel or failure. Atomically flips an `awaiting_confirmation` job to `verifying` and charges it; a failed charge rolls the flip back. Answers 202 with the job and `Location: /v2/jobs/{id}`. With an `Idempotency-Key`, a retry of a start that went through answers the job again (never a second charge, never a 402), and 409 `idempotency_in_progress` while its charge is still being confirmed.","operationId":"email_verifications_start","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","description":"A unique value per operation (a UUID). A retry with the same key and the same request answers the resource it created, with `Idempotent-Replayed: true`, instead of creating another.","required":false,"schema":{"type":"string","minLength":1,"maxLength":255}}],"responses":{"202":{"description":"The job, now `verifying` (or `assembling` when nothing is billable).","headers":{"Location":{"description":"The job: `/v2/jobs/{id}` (the same id as `data.id`).","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before the first poll (2).","schema":{"type":"integer","minimum":0}},"Idempotent-Replayed":{"description":"`true` when this answers an earlier request with the same `Idempotency-Key`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailVerificationResponse"},"examples":{"verifying":{"$ref":"#/components/examples/email_verifications_start_202_verifying"}}}}},"400":{"description":"Malformed id (`VALIDATION_ERROR`, no code) or `Idempotency-Key` (`VALIDATION_ERROR`, `invalid_format`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"malformed_id":{"$ref":"#/components/examples/email_verifications_start_400_malformed_id"},"invalid_idempotency_key":{"$ref":"#/components/examples/email_verifications_start_400_invalid_idempotency_key"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Not enough email verification credits (`PAYMENT_REQUIRED`): a zero balance (with `X-Limit-Reached` / `X-Limit-Type`), or a balance below `counts.billable`.","headers":{"X-Limit-Reached":{"description":"`true` when a credit balance is exhausted.","schema":{"type":"string"}},"X-Limit-Type":{"description":"Which balance, e.g. `credits`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"credit_limit":{"$ref":"#/components/examples/email_verifications_start_402_credit_limit"},"charge_failed":{"$ref":"#/components/examples/email_verifications_start_402_charge_failed"}}}}},"404":{"description":"No such record in this workspace (`NOT_FOUND`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"$ref":"#/components/examples/email_verifications_start_404_not_found"}}}}},"409":{"description":"`CONFLICT`: the job is not `awaiting_confirmation` (`invalid_state`, `payload.status` names its state), this `Idempotency-Key` start is still being charged (`idempotency_in_progress`, `Retry-After: 2`), or another start of the workspace is being charged (`charge_lock_busy`, `Retry-After: 1`).","headers":{"Retry-After":{"description":"On `idempotency_in_progress` (2) and `charge_lock_busy` (1): seconds before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_state":{"$ref":"#/components/examples/email_verifications_start_409_invalid_state"},"idempotency_in_progress":{"$ref":"#/components/examples/email_verifications_start_409_idempotency_in_progress"},"charge_lock_busy":{"$ref":"#/components/examples/email_verifications_start_409_charge_lock_busy"}}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"503":{"description":"The charge lock is unavailable (`INTERNAL_ERROR`); retry shortly.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Start Email Verification","tags":["Email"],"x-credit-cost":{"type":"email_verification","unit":"billable_row","when":"at start, for `counts.billable`; the unverified remainder is refunded on cancel or failure"},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":true},"x-sdk-group":"email.verifications"}},"/v2/email-verifications/history":{"get":{"description":"List the workspace's single email verifications (`email_verify`) of the last 30 days, newest first. Free: no credits.","operationId":"email_verifications_history_list","parameters":[{"name":"page","required":false,"in":"query","description":"The page, 1-based.","schema":{"minimum":1,"default":1,"type":"integer"}},{"name":"per_page","required":false,"in":"query","description":"Entries per page.","schema":{"minimum":1,"maximum":100,"default":25,"type":"integer"}}],"responses":{"200":{"description":"One page of history, newest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailVerificationHistoryListResponse"},"examples":{"first_page":{"$ref":"#/components/examples/email_verifications_history_list_200_first_page"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"out_of_range":{"$ref":"#/components/examples/email_verifications_history_list_400_out_of_range"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List Verification History","tags":["Email"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-pagination":{"type":"page_number","page_param":"page","size_param":"per_page","results":"$.data","total_pages":"$.metadata.pagination.total_pages"},"x-sdk-group":"email.verifications.history","x-speakeasy-pagination":{"type":"offsetLimit","inputs":[{"name":"page","in":"parameters","type":"page"},{"name":"per_page","in":"parameters","type":"limit"}],"outputs":{"results":"$.data","numPages":"$.metadata.pagination.total_pages"}}}},"/v2/email-verifier":{"get":{"description":"GET equivalent of `POST /v2/email/verify`: the same check, with the address as a query parameter. Costs 1 email verification credit per valid or invalid verdict, once per address per workspace; 1 enrich rate-limit unit. Answers as `POST /v2/email/verify`, except that the query parameter is not validated up front: every 400 comes from the service, without `payload.code`. Query strings end up in URL logs, so where that matters send the `x-api-key` header rather than `api_key`, or use the POST endpoint.","operationId":"email_verify_get","parameters":[{"name":"email","required":true,"in":"query","description":"The email address you want to verify.","schema":{"example":"emily.carter.sample@intercom.com","type":"string"}},{"name":"api_key","required":false,"in":"query","description":"Your API key as a query parameter, accepted on the GET email endpoints only. The `x-api-key` header works here too and keeps the key out of URL logs.","schema":{"type":"string"}}],"responses":{"200":{"description":"The verdict. When the verifier failed, `success` is false, `data.status` is `unknown` (not charged) and `errors[0].name` is `VERIFICATION_ERROR`: retry later.","headers":{"X-RateLimit-Bucket":{"description":"The rate-limit bucket spent: `enrich`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailVerifyResponse"},"examples":{"valid":{"$ref":"#/components/examples/email_verify_get_200_valid"},"verifier_failed":{"$ref":"#/components/examples/email_verify_get_200_verifier_failed"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`). Every 400 of this alias comes from the service and carries no `payload.code`: the `email` parameter is missing or blank. A syntactically invalid address is not an error: it is a free `invalid` verdict.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"missing_email":{"$ref":"#/components/examples/email_verify_get_400_missing_email"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Not enough credits (`PAYMENT_REQUIRED`).","headers":{"X-Limit-Reached":{"description":"`true` when a credit balance is exhausted.","schema":{"type":"string"}},"X-Limit-Type":{"description":"Which balance, e.g. `credits`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"credit_limit":{"$ref":"#/components/examples/email_verify_get_402_credit_limit"}}}}},"408":{"description":"The verifier did not answer in time (`TIMEOUT`). Not charged; ask again after `Retry-After` seconds.","headers":{"Retry-After":{"description":"Seconds to wait before asking again (30).","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"timeout":{"$ref":"#/components/examples/email_verify_get_408_timeout"}}}}},"429":{"description":"Over the `enrich` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds until the window that tripped has room again.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Bucket":{"description":"The rate-limit bucket spent: `enrich`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Verify Email (GET)","tags":["Email"],"x-credit-cost":{"type":"email_verification","unit":"address","when":"a valid or invalid verdict, once per address per workspace"},"x-mcp":{"exclude":true}}},"/v2/email/find":{"post":{"description":"Find the verified business email address of a specific person. Costs 1 email credit per served address the workspace does not already own; 1 enrich rate-limit unit. Inside `data`, provide the person's name (full_name, or first_name + last_name) plus their company (domain preferred, or company name). Not-found and accept-all outcomes are free, and so is the email of a person you have already saved or revealed. A live search can take more than a minute: set the client timeout to at least 95 seconds. A search that times out answers 408 and is never charged; ask again after `Retry-After` seconds, when its result is usually stored. Authenticate with your API key in the x-api-key header.","operationId":"email_find","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailFindRequest"},"examples":{"name_and_domain":{"summary":"First and last name plus the company domain (best results)","value":{"data":{"first_name":"Emily","last_name":"Carter","domain":"intercom.com"}}},"full_name_and_company":{"summary":"Full name plus the company name","value":{"data":{"full_name":"Emily Carter","company":"Intercom"}}}}}}},"responses":{"200":{"description":"The search ran. A served address has `status: valid`; when nothing could be confirmed `success` is false, `data.status` is `not_found` and `errors[0].name` is `NOT_FOUND` (not charged).","headers":{"X-RateLimit-Bucket":{"description":"The rate-limit bucket spent: `enrich`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailFindResponse"},"examples":{"found":{"$ref":"#/components/examples/email_find_200_found"},"not_found":{"$ref":"#/components/examples/email_find_200_not_found"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`). A malformed field carries `payload.code` (`wrong_type`, ...) and `payload.field`; a missing name or company, or a domain that is not one, answers without a code.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"wrong_type":{"$ref":"#/components/examples/email_find_400_wrong_type"},"missing_company":{"$ref":"#/components/examples/email_find_400_missing_company"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Not enough credits (`PAYMENT_REQUIRED`).","headers":{"X-Limit-Reached":{"description":"`true` when a credit balance is exhausted.","schema":{"type":"string"}},"X-Limit-Type":{"description":"Which balance, e.g. `credits`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"credit_limit":{"$ref":"#/components/examples/email_find_402_credit_limit"}}}}},"408":{"description":"The search is still running (`TIMEOUT`). Not charged; ask again after `Retry-After` seconds.","headers":{"Retry-After":{"description":"Seconds to wait before asking again (120).","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"timeout":{"$ref":"#/components/examples/email_find_408_timeout"}}}}},"429":{"description":"Over the `enrich` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds until the window that tripped has room again.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Bucket":{"description":"The rate-limit bucket spent: `enrich`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Find Email","tags":["Email"],"x-credit-cost":{"type":"email_search","unit":"served_address","when":"a valid address is served that the workspace does not already own (the email of a revealed or saved person, and an address charged before, are free)"},"x-mcp":{"idempotentHint":true},"x-not-found-in-envelope":true,"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false},"x-timeout-ms":95000}},"/v2/email/verify":{"post":{"description":"Check whether an email address is deliverable. Costs 1 email verification credit per valid or invalid verdict, once per address per workspace; 1 enrich rate-limit unit. Pass the email inside `data`; the response reports its verification status along with domain health and whether the mailbox is free or disposable. Accept_all and unknown verdicts and syntactically invalid emails are free. Verification runs live and can take up to 75 seconds: set the client timeout to at least 80 seconds. A 408 is never charged; ask again after `Retry-After` seconds. Authenticate with your API key in the x-api-key header.","operationId":"email_verify","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailVerifyRequest"},"examples":{"address":{"summary":"One address","value":{"data":{"email":"emily.carter.sample@intercom.com"}}}}}}},"responses":{"200":{"description":"The verdict. When the verifier failed, `success` is false, `data.status` is `unknown` (not charged) and `errors[0].name` is `VERIFICATION_ERROR`: retry later.","headers":{"X-RateLimit-Bucket":{"description":"The rate-limit bucket spent: `enrich`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailVerifyResponse"},"examples":{"valid":{"$ref":"#/components/examples/email_verify_200_valid"},"verifier_failed":{"$ref":"#/components/examples/email_verify_200_verifier_failed"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`). A malformed `data.email` carries `payload.code` (`wrong_type`); an empty one answers without a code. A syntactically invalid address is not an error: it is a free `invalid` verdict.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"missing_email":{"$ref":"#/components/examples/email_verify_400_missing_email"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"402":{"description":"Not enough credits (`PAYMENT_REQUIRED`).","headers":{"X-Limit-Reached":{"description":"`true` when a credit balance is exhausted.","schema":{"type":"string"}},"X-Limit-Type":{"description":"Which balance, e.g. `credits`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"credit_limit":{"$ref":"#/components/examples/email_verify_402_credit_limit"}}}}},"408":{"description":"The verifier did not answer in time (`TIMEOUT`). Not charged; ask again after `Retry-After` seconds.","headers":{"Retry-After":{"description":"Seconds to wait before asking again (30).","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"timeout":{"$ref":"#/components/examples/email_verify_408_timeout"}}}}},"429":{"description":"Over the `enrich` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds until the window that tripped has room again.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Bucket":{"description":"The rate-limit bucket spent: `enrich`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Verify Email","tags":["Email"],"x-credit-cost":{"type":"email_verification","unit":"address","when":"a valid or invalid verdict, once per address per workspace"},"x-mcp":{"idempotentHint":true},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false},"x-timeout-ms":80000}},"/v2/search/matching-titles":{"post":{"description":"Preview which job titles a boolean / Cartesian expression matches before you search with it. Send the same expression you would pass as person_job_title.boolean_search and get back the most common matching titles with a count for each. Counts are estimates over the whole database and do not take any of your other filters into account, so use them to sanity-check an expression, not to predict a result total. Returned titles are raw LinkedIn titles - the same values People Search returns as `job_title` - so one role appears once per spelling (\"vp marketing\" and \"vp, marketing\" are two rows). A position is matched on all of its titles, so a title can appear here because one of the person's other roles matched: an expression for `ceo` will list \"Founder & CEO\". Titles are also matched through their normalized catalog form, which is how a search finds non-English titles - and why a listed title can look unrelated to what you typed. That is what the search does; the preview shows it rather than hiding it. The expression must contain at least one term that is not excluded. The response metadata includes a `cached` flag noting whether the answer came from cache. Free: costs no credits; counts against the per-second window of the search rate limit (0 units). Authenticate with your API key in the x-api-key header.","operationId":"search_matching_titles","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchMatchingTitlesRequest"},"examples":{"boolean_search":{"summary":"CEOs, not interns","value":{"boolean_search":"(ceo OR \"chief executive officer\") AND !intern","limit":3}}}}}},"responses":{"200":{"description":"The most common matching titles; `[]` when none match (still a 200).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchMatchingTitlesResponse"},"example":{"success":true,"data":[{"title":"ceo","count":412318},{"title":"founder & ceo","count":198734},{"title":"chief executive officer","count":154902}],"metadata":{"timestamp":"2026-10-08T09:30:00.000Z","limit":3,"returned":3,"cached":false}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`): a field fails validation (`payload.code` says which kind), or the expression cannot be parsed or excludes every term (`boolean_search: ...`, no `payload`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"boolean_search must be longer than or equal to 2 characters","payload":{"field":"boolean_search","code":"out_of_range","received_value":"c","received_type":"string","constraints":{"minLength":"boolean_search must be longer than or equal to 2 characters"}}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over the per-second window of the `search` rate limit (`RATE_LIMIT`; previews spend no units); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Matching Job Titles","tags":["Search"],"x-credit-cost":"none","x-idempotent":true,"x-mcp":{"readOnlyHint":true}}},"/v2/search/suggest":{"post":{"description":"Typeahead suggestions for the open-ended People Search and Company Search filters, plus person and company lookups by name. Send the text the user has typed so far (or nothing - an empty query browses each vocabulary, most popular first for locations, job titles and company keywords, so a picker can open pre-filled; `person` and `company` are the exceptions and need at least 2 characters) and one vocabulary type - location, job_title, industry, company_keywords, technology, person or company - and get back up to 25 ready-to-use rows. For location, job_title, industry and company_keywords, each row carries a `value` you pass as-is to the matching filter (person_location / company_location, person_job_title, company_industry, company_keywords). For `person`, `value` feeds `person.name` (search everyone with that name) and `id` feeds `person.id` (pin exactly that one person); each row also carries their current job title and company with its logo. For `company`, `value` is the canonical company name and each row carries the id `company.id` (People Search) accepts, a domain attached to the company (its website when none is attached), logo, industry and employee range - matched by a prefix of the name or of any attached domain. Person and company rows carry `saved: true` when your workspace has saved them, and saved matches are listed first. A complete email address as the `person` query finds the person that address is stored on (people your workspace saved or revealed with it come first), and as the `company` query finds the company by its domain. A LinkedIn profile URL as the `person` query finds that person. A LinkedIn company URL as the `company` query finds that company. Every suggestion repeats the requested `type`, so a mixed list stays self-describing. Location suggestions include the structured parts (city, state, country, ISO country code) and a level; job-title suggestions map abbreviations like \"ceo\" to their canonical title and tolerate a rephrasing (\"VP of Marketing\" and \"Marketing VP\" both suggest \"Vice President Marketing\"); industry suggestions include the category group; company-keyword suggestions carry a `company_count` and match a prefix of any word, so \"market\" finds both \"Marketing\" and \"Digital Marketing\". For `technology`, rows mark technology vs category with `kind`, and `value` is the id the matching filter (company_technologies / company_technology_categories) takes. For the closed vocabularies (departments, seniorities, countries, employee ranges and more) fetch the full lists from GET /v2/enums instead. Free: costs no credits; a person lookup by email address or LinkedIn URL counts against the per-second window of the enrich rate limit (0 units), every other suggestion against no limit. Authenticate with your API key in the x-api-key header.","operationId":"search_suggest","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchSuggestRequest"},"examples":{"location":{"summary":"Locations starting with \"aust\"","value":{"type":"location","query":"aust","limit":2}},"person":{"summary":"People named like \"jane do\"","value":{"type":"person","query":"jane do","limit":1}}}}}},"responses":{"200":{"description":"The suggestions, best first; `[]` when nothing matches (still a 200).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchSuggestResponse"},"example":{"success":true,"data":[{"value":"Australia","level":"country","city":null,"state":null,"state_code":null,"country":"Australia","country_code":"AU","type":"location"},{"value":"Austin, Texas, United States","level":"city","city":"Austin","state":"Texas","state_code":"TX","country":"United States","country_code":"US","type":"location"}],"metadata":{"timestamp":"2026-10-08T09:30:00.000Z","type":"location","query":"aust"}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"type: \"city\" is not an accepted value. Accepted: location, job_title, industry, company_keywords, person, company, technology","payload":{"field":"type","code":"value_not_allowed","received_value":"city","received_type":"string","invalid_values":["city"],"allowed_values":["location","job_title","industry","company_keywords","person","company","technology"],"constraints":{"isIn":"type must be one of the following values: location, job_title, industry, company_keywords, person, company, technology"}}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over the per-second window of the `enrich` rate limit (`RATE_LIMIT`), which only person lookups by email address or LinkedIn URL count against; wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Search Suggestions","tags":["Search"],"x-credit-cost":"none","x-idempotent":true,"x-mcp":{"readOnlyHint":true}}},"/v2/enums":{"get":{"description":"Returns every filter vocabulary used by the /v2 search endpoints in a single payload. Useful for building filter UIs at integration time. `data` maps each enum name to its accepted filter values - a flat array for most (e.g. `{ \"company_types\": [\"Privately Held\", ...] }`), except `industries` and `departments`, which are grouped by category (`{ \"departments\": { \"C-Suite\": [\"Founder\", ...], ... } }`), and `regions`, which maps each region accepted by the location filters to its member country codes (`{ \"EMEA\": [\"DK\", ...], ... }`). `countries` are ISO-3166-1 alpha-2 codes; clients map codes to names themselves. Free: costs no credits and counts against no rate limit. Needs no API key; the answer is edge-cached for an hour.","operationId":"enums_list","parameters":[],"responses":{"200":{"description":"Every vocabulary, by name.","headers":{"Cache-Control":{"description":"Edge-cacheable: `public, max-age=3600, stale-while-revalidate=86400`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnumsListResponse"},"example":{"success":true,"data":{"industries":{"Arts & Crafts":["Arts & Crafts","Design","Fine Art"]},"countries":["AD","AE","AF"],"employee_ranges":["1-10","11-50","51-200"],"company_types":["Privately Held","Public Company","Non Profit"],"business_types":["B2B","B2C","Nonprofit","Unknown"],"revenue_streams":["Professional Services","Product Sales"],"keywords_sources":["specialties","social_media_description","website_pages"],"departments":{"Consulting":["Consultant"]},"seniorities":["Owner","Partner","Chief Officer"],"regions":{"Americas":["US","CA","MX","BM"]}},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"}}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List Filter Enums","tags":["Enums"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"security":[]}},"/v2/enums/{name}":{"get":{"description":"Returns the accepted values for one filter vocabulary as `data` - a flat array for most, except `industries` and `departments` (an object of category -> values) and `regions` (an object of region -> member country codes). Name must be one of: industries, countries, employee_ranges, company_types, business_types, revenue_streams, keywords_sources, departments, seniorities, regions. 400 on any other name. Free: costs no credits and counts against no rate limit. Needs no API key; the answer is edge-cached for an hour.","operationId":"enums_get","parameters":[{"name":"name","required":true,"in":"path","description":"Enum identifier. Underscored snake_case.","schema":{"$ref":"#/components/schemas/EnumName"}}],"responses":{"200":{"description":"The vocabulary: a flat list, or a map of category -> values.","headers":{"Cache-Control":{"description":"Edge-cacheable: `public, max-age=3600, stale-while-revalidate=86400`.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnumsGetResponse"},"example":{"success":true,"data":["Owner","Partner","Chief Officer","VP","Director"],"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"}}}}},"400":{"description":"Unknown vocabulary name (`VALIDATION_ERROR`, `payload.code: value_not_allowed`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"Unknown enum \"industry\". Known: industries, countries, employee_ranges, company_types, business_types, revenue_streams, keywords_sources, departments, seniorities, regions","payload":{"field":"name","code":"value_not_allowed","received_value":"industry","received_type":"string","invalid_values":["industry"],"allowed_values":["industries","countries","employee_ranges","company_types","business_types","revenue_streams","keywords_sources","departments","seniorities","regions"],"constraints":{"isIn":"Unknown enum \"industry\". Known: industries, countries, employee_ranges, company_types, business_types, revenue_streams, keywords_sources, departments, seniorities, regions"}}}]}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get Filter Enum","tags":["Enums"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"security":[]}},"/v2/api-logs":{"get":{"description":"The requests your API keys made in the last 15 days, newest first, one keyset page at a time: pass `metadata.pagination.next_cursor` as `before` for the next page while `has_more` is true. An API key reads its own rows only; in the app, a workspace admin reads every key's rows and a member the rows of their own keys. `key_id` narrows to one key. Free: costs no credits; counts against the per-second window of the search rate limit (0 units).","operationId":"api_logs_list","parameters":[{"name":"per_page","required":false,"in":"query","description":"Rows per page, newest first.","schema":{"minimum":1,"maximum":500,"default":100,"type":"integer"}},{"name":"before","required":false,"in":"query","description":"Opaque cursor: `metadata.pagination.next_cursor` of the previous page. Absent for the first page; the last page answers `has_more: false` and `next_cursor: null`.","schema":{"type":"string"}},{"name":"key_id","required":false,"in":"query","description":"Only the rows of this API key. It narrows the rows the caller may already read and never widens them: a key outside the caller's view returns no rows.","schema":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"}}],"responses":{"200":{"description":"One page of rows; `[]` with `has_more: false` when there are none.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiLogsListResponse"},"example":{"success":true,"data":[{"id":"6704f0b2c1d2e3f405162738","time":"2026-10-08T09:12:44.512Z","key_id":"66f2a1b3c4d5e6f708192a3b","key_name":"CRM sync","method":"POST","path":"/v2/email/find","status_code":200,"duration_ms":1840,"request_body":"{\"data\":{\"full_name\":\"Jane Doe\",\"domain\":\"example.com\"}}"}],"metadata":{"timestamp":"2026-10-08T09:30:00.000Z","pagination":{"per_page":1,"has_more":true,"next_cursor":"1791450764512_6704f0b2c1d2e3f405162738"}}}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"before must be a next_cursor value from a previous page","payload":{"field":"before","code":"invalid_format","received_value":"abc","received_type":"string","constraints":{"matches":"before must be a next_cursor value from a previous page"}}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"408":{"description":"The page query ran past its 5-second budget (`TIMEOUT`); ask again, or for a smaller `per_page`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over the per-second window of the `search` rate limit (`RATE_LIMIT`; reading logs spends no units); wait `Retry-After` seconds. Sent only where rate limits are enforced.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List Request Logs","tags":["Developer"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-pagination":{"type":"cursor","cursor_param":"before","size_param":"per_page","results":"$.data","next_cursor":"$.metadata.pagination.next_cursor"},"x-speakeasy-pagination":{"type":"cursor","inputs":[{"name":"before","in":"parameters","type":"cursor"},{"name":"per_page","in":"parameters","type":"limit"}],"outputs":{"results":"$.data","nextCursor":"$.metadata.pagination.next_cursor"}}}},"/v2/rate-limits":{"get":{"description":"The workspace's request rate limits and current usage. Tier, plan name, which channels get a real rejection and whether yours does (`enforced`), and per bucket (search, enrich, jobs, poll) the limits, the units used in the current minute and UTC day, and the seconds until each window resets. Free: costs no credits and counts against no rate limit. Any workspace member; an API key or an OAuth app sees its workspace.","operationId":"rate_limits_get","parameters":[],"responses":{"200":{"description":"The live status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitsGetResponse"},"example":{"success":true,"data":{"tier":"tier99","plan_name":"Growth","enforced_channels":[],"enforced":false,"buckets":{"search":{"limits":{"second":10,"minute":60,"day":4000},"used":{"minute":3,"day":36},"reset":{"minute":42,"day":52182}},"enrich":{"limits":{"second":10,"minute":600,"day":8000},"used":{"minute":12,"day":144},"reset":{"minute":42,"day":52182}},"jobs":{"limits":{"second":2,"minute":30,"day":1000},"used":{"minute":0,"day":0},"reset":{"minute":42,"day":52182}},"poll":{"limits":{"second":10,"minute":600,"day":864000},"used":{"minute":0,"day":0},"reset":{"minute":42,"day":52182}}}},"metadata":{"timestamp":"2026-10-08T09:30:18.000Z"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get Rate Limits","tags":["Developer"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true}}},"/v2/jobs/{id}":{"get":{"description":"Reads any async job of the workspace by id: an export, a CSV enrichment, an email verification, a bulk action (Trash, list moves and deletes) or a save / enrich run over a search. `Retry-After` is sent while the job is `queued` or `running`; `awaiting_confirmation` waits for you (start or cancel the resource at `resource_url`). Free; a `poll` (0 rate-limit units, per-second window only).","operationId":"jobs_get","parameters":[{"name":"id","required":true,"in":"path","description":"Job id (the `id` of a started job or of the resource it created).","schema":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"}}],"responses":{"200":{"description":"The job.","headers":{"X-RateLimit-Bucket":{"description":"The rate-limit bucket the request counted against (`jobs` or `poll`).","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second in the bucket.","schema":{"type":"string"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute in the bucket.","schema":{"type":"string"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per day in the bucket.","schema":{"type":"string"}},"X-RateLimit-Remaining-Minute":{"description":"Units left in the current minute.","schema":{"type":"string"}},"X-RateLimit-Remaining-Day":{"description":"Units left today.","schema":{"type":"string"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets.","schema":{"type":"string"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets.","schema":{"type":"string"}},"Retry-After":{"description":"Sent while the job still moves on its own: seconds before the next poll (2).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"},"examples":{"running":{"$ref":"#/components/examples/jobs_get_200_running"},"push_all":{"$ref":"#/components/examples/jobs_get_200_push_all"},"export":{"$ref":"#/components/examples/jobs_get_200_export"}}}}},"400":{"description":"Malformed id (`VALIDATION_ERROR`, `invalid_format`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"malformed":{"$ref":"#/components/examples/jobs_get_400_malformed"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"No job with this id in the workspace (`NOT_FOUND`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Over the `poll` rate limit (`RATE_LIMIT`); wait `Retry-After` seconds. Sent only where rate limits are enforced for the caller channel.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get a Job","tags":["Jobs"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true}}},"/v2/me":{"get":{"description":"The person the credential belongs to, the workspace it acts in (with the role read live) and how the request authenticated. Use it as a connection test or a `whoami`: any credential works (API key, OAuth app, signed-in session). Free. No credits.","operationId":"me_get","parameters":[],"responses":{"200":{"description":"The current user. A signed-in App session also gets a few App-only fields (`x-internal`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeGetResponse"},"examples":{"api_key":{"$ref":"#/components/examples/me_get_200_api_key"},"session":{"$ref":"#/components/examples/me_get_200_session"}}}}},"401":{"description":"Missing, unknown or inactive credentials, or the account was deleted (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Too many requests (`RATE_LIMIT`).","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get Current User","tags":["Account"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true}}},"/v2/billing/subscription":{"get":{"description":"The plan, billing cycle, phone add-on, pause and discount of this workspace, so a script can check its plan before it spends. Free: no credits. `plan.credits` are per unit: a subscription of `quantity` units has `quantity` times them. `data` is null (with no error entry) when the workspace has no subscription. Any member, with an API key, an OAuth token or a session.","operationId":"billing_subscription_get","parameters":[],"responses":{"200":{"description":"The subscription, or `data: null` when the workspace has none.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSubscriptionGetResponse"},"example":{"success":true,"data":{"status":"active","plan":{"id":"64b7f0c2a1e4d3b2c1a09f11","name":"Growth 5K","price":99,"currency":"USD","is_custom":false,"credits":{"email_search":5000,"email_verification":10000,"phone_search":0}},"quantity":1,"billing_cycle":{"id":"5ff97ef1e0bd4c14bd314d4a","name":"Monthly","period":"month","discount":0},"started_at":"2026-10-01T00:00:00.000Z","expires_at":"2026-11-01T00:00:00.000Z","next_plan":null,"phone_addon":{"status":"active","plan":{"id":"64b7f0c2a1e4d3b2c1a09f22","name":"Phone Search Pro","price":10,"currency":"USD","is_custom":false,"credits":{"email_search":0,"email_verification":0,"phone_search":50}},"quantity":1},"pause":null,"discount":null,"payer":"company","gateway":"stripe"},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get Subscription","tags":["Billing"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true}}},"/v2/credits":{"get":{"description":"The live balance of each credit type, so a script or agent can check what it may spend before it spends. Free: no credits. `data.<type>.available` equals `metadata.credits.<type>` on credit-spending responses: `email_search` is spent by email find and reveals (`POST /v2/email/find`, people enrich and save), `email_verification` by email verification (`POST /v2/email/verify`, `/v2/email-verifications`), `phone_search` by phone reveals. Any member, with an API key, an OAuth token or a session.","operationId":"credits_get","parameters":[],"responses":{"200":{"description":"The balances.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditsGetResponse"},"example":{"success":true,"data":{"email_search":{"available":1180,"allowance":1000,"additional":150,"permanent":30},"email_verification":{"available":2000,"allowance":2000,"additional":0,"permanent":0},"phone_search":{"available":40,"allowance":50,"additional":0,"permanent":0},"reset_at":"2026-11-01T00:00:00.000Z"},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get Credit Balances","tags":["Billing"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true}}},"/v2/usage/summary":{"get":{"description":"Credits spent and requests made, from the per-day rollup, over an inclusive UTC day range of at most 62 days. Free: no credits. `group_by=day` returns a time series; `group_by=source` one row per channel|action|entity. Workspace admins may filter by `users`; a member always sees their own usage.","operationId":"usage_summary_get","parameters":[{"name":"from","required":true,"in":"query","description":"First UTC day, inclusive, YYYY-MM-DD.","schema":{"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-01","type":"string"}},{"name":"to","required":true,"in":"query","description":"Last UTC day, inclusive, YYYY-MM-DD. The range spans at most 62 days.","schema":{"format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-10-07","type":"string"}},{"name":"users","required":false,"in":"query","description":"Comma-separated user ids. Workspace admins only; a member always sees their own rows.","schema":{"maxLength":5000,"pattern":"^[0-9a-fA-F]{24}(,[0-9a-fA-F]{24})*$","type":"string"}},{"name":"channel","required":false,"in":"query","description":"Only this channel.","schema":{"$ref":"#/components/schemas/UsageChannel"}},{"name":"action","required":false,"in":"query","description":"Only this action.","schema":{"$ref":"#/components/schemas/UsageAction"}},{"name":"entity","required":false,"in":"query","description":"Only this entity.","schema":{"$ref":"#/components/schemas/UsageEntity"}},{"name":"group_by","required":true,"in":"query","description":"`day` for a time series, `source` for channel|action|entity rows.","schema":{"$ref":"#/components/schemas/UsageGroupBy"}}],"responses":{"200":{"description":"The usage.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageSummaryGetResponse"},"example":{"success":true,"data":{"totals":{"email_search":42,"email_verification":120,"phone_search":3,"email_credits":42,"verification_credits":120,"phone_credits":3,"searches":18,"enriches":42,"total_credits":165},"series":[{"key":"2026-10-06","email_search":30,"email_verification":120,"phone_search":3,"email_credits":30,"verification_credits":120,"phone_credits":3,"searches":11,"enriches":30},{"key":"2026-10-07","email_search":12,"email_verification":0,"phone_search":0,"email_credits":12,"verification_credits":0,"phone_credits":0,"searches":7,"enriches":12}]},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"}}}}},"400":{"description":"Invalid query (`VALIDATION_ERROR`): a malformed day, `to` before `from`, a range over 62 days, or an unknown filter value (`payload.code`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"group_by: \"week\" is not an accepted value. Accepted: day, source","payload":{"field":"group_by","code":"value_not_allowed","received_value":"week","received_type":"string","invalid_values":["week"],"allowed_values":["day","source"],"constraints":{"isIn":"group_by must be one of the following values: day, source"}}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get Usage Summary","tags":["Billing"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true}}},"/v2/webhooks":{"get":{"description":"The workspace's webhook subscriptions, newest first. Secrets are never listed. Free: no credits.","operationId":"webhooks_list","parameters":[{"name":"page","required":false,"in":"query","description":"The page, 1-based.","schema":{"minimum":1,"maximum":1000,"default":1,"type":"integer"}},{"name":"per_page","required":false,"in":"query","description":"Items per page.","schema":{"default":25,"type":"number","enum":[25,50,100]}},{"name":"status","required":false,"in":"query","description":"`active` receives events, `paused` was paused by a member, `disabled` was stopped by GetProspect (see `disabled_reason`).","schema":{"$ref":"#/components/schemas/WebhookStatus"}}],"responses":{"200":{"description":"One page of webhooks.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookListResponse"},"examples":{"one":{"$ref":"#/components/examples/webhooks_list_200_one"}}}}},"400":{"description":"A query parameter out of range or unknown (`VALIDATION_ERROR`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"value_not_allowed":{"$ref":"#/components/examples/webhooks_list_400_value_not_allowed"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List Webhooks","tags":["Webhooks"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-pagination":{"type":"page_number","page_param":"page","size_param":"per_page","results":"$.data","total_pages":"$.metadata.pagination.total_pages"},"x-speakeasy-pagination":{"type":"offsetLimit","inputs":[{"name":"page","in":"parameters","type":"page"},{"name":"per_page","in":"parameters","type":"limit"}],"outputs":{"results":"$.data","numPages":"$.metadata.pagination.total_pages"}}},"post":{"description":"Subscribes an https URL on a public host to event types. Answers 201 with the signing `secret`, shown only here; subscribing the same URL to the same events again, with the same credential, answers 200 with that webhook and its secret, so a retried create never makes a second one. At most 25 active webhooks per workspace. Free: no credits.","operationId":"webhooks_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookRequest"},"examples":{"zapier":{"summary":"Saved people to a Zapier catch hook","value":{"url":"https://hooks.zapier.com/hooks/standard/1/abc/","events":["person.saved"],"description":"New saved people to Zapier"}},"emails_and_companies":{"summary":"Found emails and saved companies to your own receiver","value":{"url":"https://crm.example.com/getprospect/events","events":["person.email_found","company.saved"]}}}}}},"responses":{"200":{"description":"This credential already has an active webhook for this URL and these events: that one, with `secret`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"},"examples":{"existing":{"$ref":"#/components/examples/webhooks_create_200_existing"}}}}},"201":{"description":"Created; `secret` is shown only on this answer and the 200 one.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"},"examples":{"created":{"$ref":"#/components/examples/webhooks_create_201_created"}}}}},"400":{"description":"Invalid body (`VALIDATION_ERROR`): `invalid_format` (not https, credentials in the URL, or a private host), `value_not_allowed` (unknown event type), `out_of_range` (1-10 events, or already 25 active webhooks), `missing_field`, `wrong_type`, `unknown_field`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"value_not_allowed":{"$ref":"#/components/examples/webhooks_create_400_value_not_allowed"},"invalid_format":{"$ref":"#/components/examples/webhooks_create_400_invalid_format"},"out_of_range":{"$ref":"#/components/examples/webhooks_create_400_out_of_range"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Create Webhook","tags":["Webhooks"],"x-credit-cost":"none","x-retry":{"retryable_statuses":[500,503],"idempotent_only":false}}},"/v2/webhooks/{id}":{"get":{"description":"One webhook subscription, without its secret. Free: no credits.","operationId":"webhooks_get","parameters":[{"name":"id","required":true,"in":"path","description":"The webhook id (24 hex characters).","schema":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"}}],"responses":{"200":{"description":"The webhook.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"},"examples":{"active":{"$ref":"#/components/examples/webhooks_get_200_active"}}}}},"400":{"description":"Malformed webhook id (`VALIDATION_ERROR`, `payload.code: invalid_format`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_format":{"$ref":"#/components/examples/webhooks_get_400_invalid_format"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"No such webhook in this workspace (`NOT_FOUND`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"$ref":"#/components/examples/webhooks_get_404_not_found"}}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Get Webhook","tags":["Webhooks"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true}},"delete":{"description":"Unsubscribes; deliveries stop at once. Idempotent for the workspace's own webhooks. Free: no credits.","operationId":"webhooks_delete","parameters":[{"name":"id","required":true,"in":"path","description":"The webhook id (24 hex characters).","schema":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"}}],"responses":{"200":{"description":"Unsubscribed (or already was).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeleteResponse"},"examples":{"deleted":{"$ref":"#/components/examples/webhooks_delete_200_deleted"}}}}},"400":{"description":"Malformed webhook id (`VALIDATION_ERROR`, `payload.code: invalid_format`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_format":{"$ref":"#/components/examples/webhooks_delete_400_invalid_format"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"No such webhook in this workspace, deleted or not (`NOT_FOUND`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"$ref":"#/components/examples/webhooks_delete_404_not_found"}}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Delete Webhook","tags":["Webhooks"],"x-credit-cost":"none","x-mcp":{"destructiveHint":true,"idempotentHint":true}},"patch":{"description":"Changes the URL, events, description or status (`active` / `paused`). Re-activating a disabled webhook resets its failure counters; one whose creator or API key is gone answers 409 `creator_removed`. The URL and events can be changed only by the member or API key that created the webhook (403 `creator_mismatch` otherwise). Free: no credits.","operationId":"webhooks_update","parameters":[{"name":"id","required":true,"in":"path","description":"The webhook id (24 hex characters).","schema":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookRequest"},"examples":{"pause":{"summary":"Pause deliveries","value":{"status":"paused"}},"resume":{"summary":"Resume (also re-activates a disabled webhook)","value":{"status":"active"}},"events":{"summary":"Change the event types","value":{"events":["person.saved","person.email_found"]}}}}}},"responses":{"200":{"description":"The webhook after the change.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"},"examples":{"active":{"$ref":"#/components/examples/webhooks_update_200_active"}}}}},"400":{"description":"Malformed id or invalid body (`VALIDATION_ERROR`): `invalid_format` (the URL), `value_not_allowed`, `out_of_range` (1-10 events, or re-activating past 25 active webhooks), `wrong_type`, `unknown_field`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"value_not_allowed":{"$ref":"#/components/examples/webhooks_update_400_value_not_allowed"},"invalid_format":{"$ref":"#/components/examples/webhooks_update_400_invalid_format"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"Only the member or API key that created the webhook may change its URL or events (`FORBIDDEN`, `payload.code: creator_mismatch`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"creator_mismatch":{"$ref":"#/components/examples/webhooks_update_403_creator_mismatch"}}}}},"404":{"description":"No such webhook in this workspace (`NOT_FOUND`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"$ref":"#/components/examples/webhooks_update_404_not_found"}}}}},"409":{"description":"The member or API key that created this webhook is gone, so it cannot be re-activated; create a new one (`CONFLICT`, `payload.code: creator_removed`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"creator_removed":{"$ref":"#/components/examples/webhooks_update_409_creator_removed"}}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Update Webhook","tags":["Webhooks"],"x-credit-cost":"none","x-mcp":{"idempotentHint":true}}},"/v2/webhooks/{id}/deliveries":{"get":{"description":"Delivery attempts of the last 30 days, newest first: event type, status, attempt number, the coarse outcome of the last attempt and when the next one is due. Free: no credits.","operationId":"webhooks_deliveries_list","parameters":[{"name":"id","required":true,"in":"path","description":"The webhook id (24 hex characters).","schema":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"}},{"name":"page","required":false,"in":"query","description":"The page, 1-based.","schema":{"minimum":1,"maximum":1000,"default":1,"type":"integer"}},{"name":"per_page","required":false,"in":"query","description":"Items per page.","schema":{"default":25,"type":"number","enum":[25,50,100]}},{"name":"status","required":false,"in":"query","description":"`pending` is waiting for an attempt or a retry; `succeeded` and `failed` are final.","schema":{"$ref":"#/components/schemas/WebhookDeliveryStatus"}}],"responses":{"200":{"description":"One page of deliveries.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveryListResponse"},"examples":{"retrying":{"$ref":"#/components/examples/webhooks_deliveries_list_200_retrying"}}}}},"400":{"description":"Malformed id, or a query parameter out of range or unknown (`VALIDATION_ERROR`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"value_not_allowed":{"$ref":"#/components/examples/webhooks_deliveries_list_400_value_not_allowed"},"invalid_format":{"$ref":"#/components/examples/webhooks_deliveries_list_400_invalid_format"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"No such webhook in this workspace (`NOT_FOUND`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"$ref":"#/components/examples/webhooks_deliveries_list_404_not_found"}}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List Webhook Deliveries","tags":["Webhooks"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-pagination":{"type":"page_number","page_param":"page","size_param":"per_page","results":"$.data","total_pages":"$.metadata.pagination.total_pages"},"x-speakeasy-pagination":{"type":"offsetLimit","inputs":[{"name":"page","in":"parameters","type":"page"},{"name":"per_page","in":"parameters","type":"limit"}],"outputs":{"results":"$.data","numPages":"$.metadata.pagination.total_pages"}}}},"/v2/webhooks/{id}/test":{"post":{"description":"Sends a signed `webhook.test` event now and reports whether it was delivered, the HTTP status class and a coarse error code. Works on a paused or disabled webhook too, so a fixed receiver can be checked before re-activating it. 10 per webhook and 30 per workspace per minute. Free: no credits.","operationId":"webhooks_test","parameters":[{"name":"id","required":true,"in":"path","description":"The webhook id (24 hex characters).","schema":{"pattern":"^[0-9a-fA-F]{24}$","type":"string"}}],"responses":{"200":{"description":"The outcome of the test event.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestResponse"},"examples":{"delivered":{"$ref":"#/components/examples/webhooks_test_200_delivered"},"timeout":{"$ref":"#/components/examples/webhooks_test_200_timeout"}}}}},"400":{"description":"Malformed webhook id (`VALIDATION_ERROR`, `payload.code: invalid_format`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"invalid_format":{"$ref":"#/components/examples/webhooks_test_400_invalid_format"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"404":{"description":"No such webhook in this workspace (`NOT_FOUND`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"not_found":{"$ref":"#/components/examples/webhooks_test_404_not_found"}}}}},"429":{"description":"Over 10 test events per webhook or 30 per workspace in this minute (`RATE_LIMIT`); wait `Retry-After` seconds.","headers":{"Retry-After":{"description":"Seconds until the minute window resets.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"rate_limit":{"$ref":"#/components/examples/webhooks_test_429_rate_limit"}}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"503":{"description":"Webhook delivery is not enabled for this workspace yet (`UNAVAILABLE`, `payload.code: temporarily_disabled`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"examples":{"temporarily_disabled":{"$ref":"#/components/examples/webhooks_test_503_temporarily_disabled"}}}}}},"summary":"Send Test Event","tags":["Webhooks"],"x-credit-cost":"none"}},"/v2/blocklist/companies":{"get":{"description":"Lists the company domains on the workspace's block list, newest first, optionally filtered by a substring of the domain. Free, no credits; spends no rate-limit units, but counts against the per-second window of the `search` bucket. Blocked people and companies are left out of people and company search, people and company enrich, email find and suggestions in this workspace, within 15 seconds. Saving a person by id and email verify are not filtered by workspace block lists, and blocked domains that resolve to more than 10,000 companies are only partly excluded from people search. Any member or API key of the workspace may call it; a credential that belongs to no workspace answers 403.","operationId":"blocklist_companies_list","parameters":[{"name":"query","required":false,"in":"query","description":"Case-insensitive substring of the first or last name (people) or of the domain (companies). Matched as plain text.","schema":{"minLength":2,"maxLength":100,"type":"string"}},{"name":"page","required":false,"in":"query","description":"The page, 1-based. Past the end: `[]` with the totals.","schema":{"minimum":1,"default":1,"type":"number"}},{"name":"per_page","required":false,"in":"query","description":"Entries per page.","schema":{"minimum":1,"maximum":100,"default":25,"type":"number"}}],"responses":{"200":{"description":"One page of entries, newest first.","headers":{"X-RateLimit-Bucket":{"description":"The rate-limit bucket this operation counts against, e.g. `search`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlocklistCompaniesListResponse"},"example":{"success":true,"data":[{"id":"6705a1c2e4b0f1a2b3c4d5e7","domain":"acme.com","created_at":"2026-10-08T09:30:00.000Z"}],"metadata":{"timestamp":"2026-10-08T09:30:00.000Z","pagination":{"page":1,"per_page":25,"total_pages":1,"total_count":1}}}}}},"400":{"description":"Invalid query (`VALIDATION_ERROR`): `out_of_range` (`page` below 1, `per_page` outside 1-100, `query` outside 2-100 characters), `wrong_type` or `unknown_field` (with `allowed_fields`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"per_page must not be greater than 100","payload":{"field":"per_page","code":"out_of_range","received_value":500,"received_type":"number","constraints":{"max":"per_page must not be greater than 100"}}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The credential belongs to no workspace (`FORBIDDEN`, `workspace_required`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"FORBIDDEN","message":"This operation works inside a workspace, and the credential used belongs to none","payload":{"code":"workspace_required"}}]}}}},"429":{"description":"Over the per-second window of the `search` bucket (`RATE_LIMIT`). Sent only where rate-limit enforcement is on; wait `Retry-After` seconds.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Bucket":{"description":"The rate-limit bucket this operation counts against, e.g. `search`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List Blocked Companies","tags":["Blocklist"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-pagination":{"type":"page_number","page_param":"page","size_param":"per_page","results":"$.data","total_pages":"$.metadata.pagination.total_pages"},"x-speakeasy-pagination":{"type":"offsetLimit","inputs":[{"name":"page","in":"parameters","type":"page"},{"name":"per_page","in":"parameters","type":"limit"}],"outputs":{"results":"$.data","numPages":"$.metadata.pagination.total_pages"}}}},"/v2/blocklist/companies/{id}":{"delete":{"description":"Unblocks the domain an entry blocks: removes every entry of the workspace with the same cleaned domain, and answers their ids. A repeat answers 404. Free, no credits; spends no rate-limit units, but counts against the per-second window of the `search` bucket. Blocked people and companies are left out of people and company search, people and company enrich, email find and suggestions in this workspace, within 15 seconds. Saving a person by id and email verify are not filtered by workspace block lists, and blocked domains that resolve to more than 10,000 companies are only partly excluded from people search. Any member or API key of the workspace may call it; a credential that belongs to no workspace answers 403.","operationId":"blocklist_companies_delete","parameters":[{"name":"id","required":true,"in":"path","description":"The entry id (`BlockedCompany.id`).","schema":{"type":"string"}}],"responses":{"200":{"description":"The ids of the removed entries.","headers":{"X-RateLimit-Bucket":{"description":"The rate-limit bucket this operation counts against, e.g. `search`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlocklistCompaniesDeleteResponse"},"example":{"success":true,"data":{"deleted_ids":["6705a1c2e4b0f1a2b3c4d5e7"]},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The credential belongs to no workspace (`FORBIDDEN`, `workspace_required`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"FORBIDDEN","message":"This operation works inside a workspace, and the credential used belongs to none","payload":{"code":"workspace_required"}}]}}}},"404":{"description":"No such entry in this workspace (`NOT_FOUND`): an unknown, malformed or already deleted id. A retried delete answers this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"NOT_FOUND","message":"Blocked company not found"}]}}}},"429":{"description":"Over the per-second window of the `search` bucket (`RATE_LIMIT`). Sent only where rate-limit enforcement is on; wait `Retry-After` seconds.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Bucket":{"description":"The rate-limit bucket this operation counts against, e.g. `search`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Unblock Company","tags":["Blocklist"],"x-credit-cost":"none","x-mcp":{"destructiveHint":true}}},"/v2/blocklist/companies/add":{"post":{"description":"Adds up to 1,000 company domains to the block list and answers every item in `added`, `already_blocked` or `invalid`. A domain or website URL is cleaned to its bare host. A repeat lands in `already_blocked`. Safe to retry: a repeat never writes a second entry. Free, no credits; spends no rate-limit units, but counts against the per-second window of the `search` bucket. Blocked people and companies are left out of people and company search, people and company enrich, email find and suggestions in this workspace, within 15 seconds. Saving a person by id and email verify are not filtered by workspace block lists, and blocked domains that resolve to more than 10,000 companies are only partly excluded from people search. Any member or API key of the workspace may call it; a credential that belongs to no workspace answers 403.","operationId":"blocklist_companies_add","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlocklistCompaniesAddRequest"},"examples":{"mixed":{"summary":"A website URL and its bare domain, a domain already blocked and a value that is not a domain","value":{"data":[{"domain":"https://www.Acme.com/about","identifier":"a"},{"domain":"acme.com","identifier":"b"},{"domain":"initech.com","identifier":"c"},{"domain":"not a domain","identifier":"d"}]}}}}}},"responses":{"200":{"description":"Every item, in one of the three buckets; the item counts in `metadata`.","headers":{"X-RateLimit-Bucket":{"description":"The rate-limit bucket this operation counts against, e.g. `search`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlocklistCompaniesAddResponse"},"example":{"success":true,"data":{"added":[{"identifiers":["a","b"],"blocked_company":{"id":"6705a1c2e4b0f1a2b3c4d5e7","domain":"acme.com","created_at":"2026-10-08T09:30:00.000Z"}}],"already_blocked":[{"identifiers":["c"],"blocked_company":{"id":"64f0c3d2a1b2c3d4e5f60719","domain":"initech.com","created_at":"2023-09-01T12:00:00.000Z"}}],"invalid":[{"identifier":"d","code":"invalid_format","field":"domain","reason":"not a domain"}]},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z","total":4,"added_count":2,"already_blocked_count":1,"invalid_count":1}}}}},"400":{"description":"Invalid body (`VALIDATION_ERROR`): `missing_field` (`data`), `out_of_range` (no items, more than 1,000, or a string over 200 characters), `wrong_type`, `unknown_field` (with `allowed_fields`), or `conflicting_fields` (one `identifier` on two different items, listed in `payload.conflicts`). An item that is only unusable lands in `invalid` instead.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"data must contain no more than 1000 elements","payload":{"field":"data","code":"out_of_range","received_value":{"_omitted":true,"type":"array","length":1001,"sample":[{"domain":"acme.com"},{"domain":"initech.com"},{"domain":"globex.com"}]},"received_type":"object","constraints":{"arrayMaxSize":"data must contain no more than 1000 elements"}}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The credential belongs to no workspace (`FORBIDDEN`, `workspace_required`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"FORBIDDEN","message":"This operation works inside a workspace, and the credential used belongs to none","payload":{"code":"workspace_required"}}]}}}},"409":{"description":"The add would take the list past its cap of 100,000 companies (`CONFLICT`, `limit_reached`, with `payload.limit` and `payload.current_count`). Nothing was written.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"CONFLICT","message":"A workspace block list holds at most 100000 companies; it holds 99990 and this request adds 25","payload":{"limit":100000,"current_count":99990,"code":"limit_reached"}}]}}}},"429":{"description":"Over the per-second window of the `search` bucket (`RATE_LIMIT`). Sent only where rate-limit enforcement is on; wait `Retry-After` seconds.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Bucket":{"description":"The rate-limit bucket this operation counts against, e.g. `search`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error; also, rarely, a concurrent change of the same entries. Safe to retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Block Companies","tags":["Blocklist"],"x-credit-cost":"none","x-mcp":{"idempotentHint":true},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/blocklist/people":{"get":{"description":"Lists the person entries of the workspace's block list, newest first, optionally filtered by a substring of the first or last name. Free, no credits; spends no rate-limit units, but counts against the per-second window of the `search` bucket. Blocked people and companies are left out of people and company search, people and company enrich, email find and suggestions in this workspace, within 15 seconds. Saving a person by id and email verify are not filtered by workspace block lists, and blocked domains that resolve to more than 10,000 companies are only partly excluded from people search. Any member or API key of the workspace may call it; a credential that belongs to no workspace answers 403.","operationId":"blocklist_people_list","parameters":[{"name":"query","required":false,"in":"query","description":"Case-insensitive substring of the first or last name (people) or of the domain (companies). Matched as plain text.","schema":{"minLength":2,"maxLength":100,"type":"string"}},{"name":"page","required":false,"in":"query","description":"The page, 1-based. Past the end: `[]` with the totals.","schema":{"minimum":1,"default":1,"type":"number"}},{"name":"per_page","required":false,"in":"query","description":"Entries per page.","schema":{"minimum":1,"maximum":100,"default":25,"type":"number"}}],"responses":{"200":{"description":"One page of entries, newest first.","headers":{"X-RateLimit-Bucket":{"description":"The rate-limit bucket this operation counts against, e.g. `search`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlocklistPeopleListResponse"},"example":{"success":true,"data":[{"id":"6705a1c2e4b0f1a2b3c4d5e6","first_name":"John","last_name":"Smith","linkedin_url":"https://linkedin.com/in/john-smith-42","company_domain":null,"created_at":"2026-10-08T09:30:00.000Z"},{"id":"64f0c3d2a1b2c3d4e5f60718","first_name":"Mary","last_name":"Jones","linkedin_url":null,"company_domain":"acme.com","created_at":"2023-09-01T12:00:00.000Z"}],"metadata":{"timestamp":"2026-10-08T09:30:00.000Z","pagination":{"page":1,"per_page":25,"total_pages":1,"total_count":2}}}}}},"400":{"description":"Invalid query (`VALIDATION_ERROR`): `out_of_range` (`page` below 1, `per_page` outside 1-100, `query` outside 2-100 characters), `wrong_type` or `unknown_field` (with `allowed_fields`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"per_page must not be greater than 100","payload":{"field":"per_page","code":"out_of_range","received_value":500,"received_type":"number","constraints":{"max":"per_page must not be greater than 100"}}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The credential belongs to no workspace (`FORBIDDEN`, `workspace_required`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"FORBIDDEN","message":"This operation works inside a workspace, and the credential used belongs to none","payload":{"code":"workspace_required"}}]}}}},"429":{"description":"Over the per-second window of the `search` bucket (`RATE_LIMIT`). Sent only where rate-limit enforcement is on; wait `Retry-After` seconds.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Bucket":{"description":"The rate-limit bucket this operation counts against, e.g. `search`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List Blocked People","tags":["Blocklist"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-pagination":{"type":"page_number","page_param":"page","size_param":"per_page","results":"$.data","total_pages":"$.metadata.pagination.total_pages"},"x-speakeasy-pagination":{"type":"offsetLimit","inputs":[{"name":"page","in":"parameters","type":"page"},{"name":"per_page","in":"parameters","type":"limit"}],"outputs":{"results":"$.data","numPages":"$.metadata.pagination.total_pages"}}}},"/v2/blocklist/people/{id}":{"delete":{"description":"Unblocks the person an entry blocks: removes the entry and every other entry of the workspace with the same name, and answers their ids. A repeat answers 404. Free, no credits; spends no rate-limit units, but counts against the per-second window of the `search` bucket. Blocked people and companies are left out of people and company search, people and company enrich, email find and suggestions in this workspace, within 15 seconds. Saving a person by id and email verify are not filtered by workspace block lists, and blocked domains that resolve to more than 10,000 companies are only partly excluded from people search. Any member or API key of the workspace may call it; a credential that belongs to no workspace answers 403.","operationId":"blocklist_people_delete","parameters":[{"name":"id","required":true,"in":"path","description":"The entry id (`BlockedPerson.id`).","schema":{"type":"string"}}],"responses":{"200":{"description":"The ids of the removed entries.","headers":{"X-RateLimit-Bucket":{"description":"The rate-limit bucket this operation counts against, e.g. `search`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlocklistPeopleDeleteResponse"},"example":{"success":true,"data":{"deleted_ids":["64f0c3d2a1b2c3d4e5f60718","64f0c3d2a1b2c3d4e5f6071a"]},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The credential belongs to no workspace (`FORBIDDEN`, `workspace_required`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"FORBIDDEN","message":"This operation works inside a workspace, and the credential used belongs to none","payload":{"code":"workspace_required"}}]}}}},"404":{"description":"No such entry in this workspace (`NOT_FOUND`): an unknown, malformed or already deleted id. A retried delete answers this.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"NOT_FOUND","message":"Blocked person not found"}]}}}},"429":{"description":"Over the per-second window of the `search` bucket (`RATE_LIMIT`). Sent only where rate-limit enforcement is on; wait `Retry-After` seconds.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Bucket":{"description":"The rate-limit bucket this operation counts against, e.g. `search`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Unblock Person","tags":["Blocklist"],"x-credit-cost":"none","x-mcp":{"destructiveHint":true}}},"/v2/blocklist/people/add":{"post":{"description":"Adds up to 1,000 people to the block list by first and last name, optionally with a LinkedIn profile, and answers every item in `added`, `already_blocked` or `invalid`. A name entry blocks every person with that first and last name in this workspace; the name match ignores case and punctuation. A repeat lands in `already_blocked`. Safe to retry: a repeat never writes a second entry. Free, no credits; spends no rate-limit units, but counts against the per-second window of the `search` bucket. Blocked people and companies are left out of people and company search, people and company enrich, email find and suggestions in this workspace, within 15 seconds. Saving a person by id and email verify are not filtered by workspace block lists, and blocked domains that resolve to more than 10,000 companies are only partly excluded from people search. Any member or API key of the workspace may call it; a credential that belongs to no workspace answers 403.","operationId":"blocklist_people_add","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlocklistPeopleAddRequest"},"examples":{"mixed":{"summary":"Two spellings of one name, a name already blocked and a bad LinkedIn URL","value":{"data":[{"first_name":"John","last_name":"Smith","identifier":"crm-1"},{"first_name":"john","last_name":"SMITH","linkedin_url":"https://www.linkedin.com/in/john-smith-42","identifier":"crm-2"},{"first_name":"Mary","last_name":"Jones","identifier":"crm-3"},{"first_name":"Ann","last_name":"Lee","linkedin_url":"https://example.com/ann","identifier":"crm-4"}]}}}}}},"responses":{"200":{"description":"Every item, in one of the three buckets; the item counts in `metadata`.","headers":{"X-RateLimit-Bucket":{"description":"The rate-limit bucket this operation counts against, e.g. `search`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlocklistPeopleAddResponse"},"example":{"success":true,"data":{"added":[{"identifiers":["crm-1","crm-2"],"blocked_person":{"id":"6705a1c2e4b0f1a2b3c4d5e6","first_name":"John","last_name":"Smith","linkedin_url":"https://linkedin.com/in/john-smith-42","company_domain":null,"created_at":"2026-10-08T09:30:00.000Z"}}],"already_blocked":[{"identifiers":["crm-3"],"blocked_person":{"id":"64f0c3d2a1b2c3d4e5f60718","first_name":"Mary","last_name":"Jones","linkedin_url":null,"company_domain":"acme.com","created_at":"2023-09-01T12:00:00.000Z"}}],"invalid":[{"identifier":"crm-4","code":"invalid_format","field":"linkedin_url","reason":"Not a LinkedIn profile URL (https://linkedin.com/in/<profile>)"}]},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z","total":4,"added_count":2,"already_blocked_count":1,"invalid_count":1}}}}},"400":{"description":"Invalid body (`VALIDATION_ERROR`): `missing_field` (`data`), `out_of_range` (no items, more than 1,000, or a string over 200 characters), `wrong_type`, `unknown_field` (with `allowed_fields`), or `conflicting_fields` (one `identifier` on two different items, listed in `payload.conflicts`). An item that is only unusable lands in `invalid` instead.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"data must contain no more than 1000 elements","payload":{"field":"data","code":"out_of_range","received_value":{"_omitted":true,"type":"array","length":1001,"sample":[{"first_name":"Ann","last_name":"Lee"},{"first_name":"Bob","last_name":"Ray"},{"first_name":"Cy","last_name":"Fox"}]},"received_type":"object","constraints":{"arrayMaxSize":"data must contain no more than 1000 elements"}}}]}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"403":{"description":"The credential belongs to no workspace (`FORBIDDEN`, `workspace_required`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"FORBIDDEN","message":"This operation works inside a workspace, and the credential used belongs to none","payload":{"code":"workspace_required"}}]}}}},"409":{"description":"The add would take the list past its cap of 200,000 people (`CONFLICT`, `limit_reached`, with `payload.limit` and `payload.current_count`). Nothing was written.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"},"errors":[{"name":"CONFLICT","message":"A workspace block list holds at most 200000 people; it holds 199990 and this request adds 25","payload":{"limit":200000,"current_count":199990,"code":"limit_reached"}}]}}}},"429":{"description":"Over the per-second window of the `search` bucket (`RATE_LIMIT`). Sent only where rate-limit enforcement is on; wait `Retry-After` seconds.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}},"X-RateLimit-Bucket":{"description":"The rate-limit bucket this operation counts against, e.g. `search`.","schema":{"type":"string"}},"X-RateLimit-Limit-Second":{"description":"Requests allowed per second.","schema":{"type":"integer"}},"X-RateLimit-Limit-Minute":{"description":"Units allowed per minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Units allowed per UTC day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Units left this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Units left this UTC day.","schema":{"type":"integer"}},"X-RateLimit-Reset-Minute":{"description":"Seconds until the minute window resets (1-60).","schema":{"type":"integer"}},"X-RateLimit-Reset-Day":{"description":"Seconds until the day window resets (UTC midnight).","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error; also, rarely, a concurrent change of the same entries. Safe to retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Block People","tags":["Blocklist"],"x-credit-cost":"none","x-mcp":{"idempotentHint":true},"x-retry":{"retryable_statuses":[429,503],"idempotent_only":false}}},"/v2/notifications":{"get":{"description":"List the in-app notifications of your workspace, newest first, with the unread count for the bell in `metadata.unread_count`. A member's private notifications (a password reset, an email change, notifications only for their owner) are listed to that member's own sessions only, never to other members or to an API key. Notifications are kept 90 days. Filter with `read=true` or `read=false`. Free: no credits.","operationId":"notifications_list","parameters":[{"name":"page","required":false,"in":"query","description":"The page to serve, 1-based.","schema":{"minimum":1,"default":1,"type":"integer"}},{"name":"per_page","required":false,"in":"query","description":"Notifications per page.","schema":{"minimum":1,"maximum":100,"default":20,"type":"integer"}},{"name":"read","required":false,"in":"query","description":"Only read (`true`) or only unread (`false`) notifications; both when absent.","schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"One page of notifications, and the unread count.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsListResponse"},"example":{"success":true,"data":[{"id":"6ac35b5ffe3fe40ea209b07e","workspace_id":830159,"type":"export","status":"done","title":"Export completed","body":"Your export of 1,250 people is ready.","body_format":"text","link":{"url":"https://files.example.com/exports/6ac35b5ffe3fe40ea209b07d/people-2026-10-05.csv","label":"Click here to download.","kind":"file","file_name":null},"subject_id":"6ac35b5ffe3fe40ea209b07d","read":false,"read_at":null,"created_at":"2026-10-05T08:10:07.385Z"},{"id":"6ac2f1a0fe3fe40ea2093c11","workspace_id":830159,"type":"reset_credits","status":null,"title":"Credits reset","body":"Start your new search with 50 free email searches and 100 verifications.","body_format":"text","link":null,"subject_id":null,"read":true,"read_at":"2026-10-04T09:01:44.010Z","created_at":"2026-10-04T00:00:12.951Z"}],"metadata":{"timestamp":"2026-10-05T08:12:31.204Z","pagination":{"page":1,"per_page":20,"total_pages":3,"total_count":47},"unread_count":5},"errors":[]}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-05T08:12:31.204Z"},"errors":[{"name":"VALIDATION_ERROR","message":"per_page must not be greater than 100","payload":{"field":"per_page","code":"out_of_range","received_value":500,"received_type":"number","constraints":{"max":"per_page must not be greater than 100"}}}]}}}},"401":{"description":"Missing, unknown, expired or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"List Notifications","tags":["Notifications"],"x-credit-cost":"none","x-mcp":{"readOnlyHint":true},"x-pagination":{"type":"page_number","page_param":"page","size_param":"per_page","results":"$.data","total_pages":"$.metadata.pagination.total_pages"},"x-speakeasy-pagination":{"type":"offsetLimit","inputs":[{"name":"page","in":"parameters","type":"page"},{"name":"per_page","in":"parameters","type":"limit"}],"outputs":{"results":"$.data","numPages":"$.metadata.pagination.total_pages"}}}},"/v2/notifications/mark-read":{"post":{"description":"Mark notifications read, by id or all at once. Send `ids` (1 to 100 notification ids) or `all: true`, not both: neither answers 400 `missing_field`, both 400 `conflicting_fields`, and a malformed id 400 `invalid_format`. Read state is shared by the workspace, and `read_at` keeps the first read. Ids that are already read, expired, of another workspace or not visible to you are skipped without an error and not counted in `updated_count`. Safe to retry. Free: no credits.","operationId":"notifications_mark_read","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsMarkReadRequest"}}}},"responses":{"200":{"description":"How many notifications this call marked read, and the unread count after it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsMarkReadResponse"},"example":{"success":true,"data":{"updated_count":3,"unread_count":2},"metadata":{"timestamp":"2026-10-05T08:12:31.204Z"},"errors":[]}}}},"400":{"description":"Invalid request (`VALIDATION_ERROR`; `payload.code` says which kind of mistake).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-05T08:12:31.204Z"},"errors":[{"name":"VALIDATION_ERROR","message":"Send ids (the notifications to mark read) or all: true","payload":{"field":"ids","code":"missing_field","constraints":{"selection":"Send ids (the notifications to mark read) or all: true"}}}]}}}},"401":{"description":"Missing, unknown, expired or inactive credentials (`UNAUTHORIZED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Mark Notifications Read","tags":["Notifications"],"x-credit-cost":"none","x-mcp":{"idempotentHint":true}}},"/v2/events":{"get":{"description":"Open the realtime event stream of your workspace (`text/event-stream`): notifications, credit balance changes, subscription and integration changes. Authenticate with your API key in the `x-api-key` header; a credential in the query string (`api_key`, `apiKey`, `jwtToken`) is refused with 401 `credential_in_query`. Every message is one `data:` line holding a JSON `EventFrame`; there is no `event:` line, so dispatch on `data.type`, and ignore a type you do not know (the catalog only grows). Lines starting with `:` are heartbeat comments, every 25 seconds. `retry` comes in the first message only; `id` is for logs, and nothing is replayed: on every (re)connect the first event is `stream.ready`, after which re-read the state you show. The server ends the stream after 30 minutes; reconnect. Session events never reach an API key. At most 20 open streams per user (429 `too_many_streams`). Free: no credits.\n\nThe first bytes of a stream:\n\n```\nretry: 5000\nid: r7-1\ndata: {\"type\":\"stream.ready\",\"created_at\":\"2026-10-05T09:00:00.512Z\",\"data\":{\"connection_id\":\"r7-1\",\"heartbeat_seconds\":25,\"expires_at\":\"2026-10-05T09:30:00.512Z\",\"scope\":{\"workspace_id\":830159,\"user_id\":\"64f1a2b3c4d5e6f7a8b9c0d1\"}}}\n\n: ping\n\nid: r7-2\ndata: {\"type\":\"credits.updated\",\"created_at\":\"2026-10-05T09:00:00.512Z\",\"data\":{\"credit_type\":\"email_search\",\"available\":48}}\n\nid: r7-3\ndata: {\"type\":\"notification.created\",\"created_at\":\"2026-10-05T09:00:00.512Z\",\"data\":{\"id\":\"6ac35b5ffe3fe40ea209b07e\",\"workspace_id\":830159,\"type\":\"export\",\"status\":\"done\",\"title\":\"Export completed\",\"body\":\"Your export of 1,250 people is ready.\",\"body_format\":\"text\",\"link\":{\"url\":\"https://files.example.com/exports/6ac35b5ffe3fe40ea209b07d/people-2026-10-05.csv\",\"label\":\"Click here to download.\",\"kind\":\"file\",\"file_name\":null},\"subject_id\":\"6ac35b5ffe3fe40ea209b07d\",\"read\":false,\"read_at\":null,\"created_at\":\"2026-10-05T08:10:07.385Z\"}}\n\n```","operationId":"events_stream","parameters":[],"responses":{"200":{"description":"The stream (`text/event-stream`). Each message is an `EventStreamMessage` whose `data:` line is a JSON-encoded `EventFrame`; lines starting with `:` are heartbeat comments.","content":{"text/event-stream":{"schema":{"$ref":"#/components/schemas/EventStreamMessage"},"example":{"id":"r7-1","retry":5000,"data":{"type":"stream.ready","created_at":"2026-10-05T09:00:00.512Z","data":{"connection_id":"r7-1","heartbeat_seconds":25,"expires_at":"2026-10-05T09:30:00.512Z","scope":{"workspace_id":830159,"user_id":"64f1a2b3c4d5e6f7a8b9c0d1"}}}}}}},"401":{"description":"Missing, unknown or inactive credentials (`UNAUTHORIZED`), before the stream opens; `payload.code` `credential_in_query` (send the credential in a header) or `token_expired` (refresh the token).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-05T09:00:00.512Z"},"errors":[{"name":"UNAUTHORIZED","message":"Credentials are not accepted in the query string: send the x-api-key header","payload":{"field":"api_key","code":"credential_in_query"}}]}}}},"403":{"description":"A job token (`FORBIDDEN`, `payload.code: session_required`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Too many open streams for this user (`RATE_LIMIT`, `payload.code: too_many_streams`).","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"},"example":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-05T09:00:00.512Z"},"errors":[{"name":"RATE_LIMIT","message":"At most 20 open event streams per user: close one first","payload":{"code":"too_many_streams"}}]}}}},"500":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"summary":"Stream Events","tags":["Events"],"x-cli-name":"events tail","x-credit-cost":"none","x-mcp":{"exclude":true}}}},"info":{"title":"GetProspect API v2","description":"GetProspect API v2 reference","version":"2.0","contact":{}},"tags":[{"name":"People","description":"Find, enrich, save and edit people","x-sdk-group":"people"},{"name":"Companies","description":"Find, enrich, save and edit companies","x-sdk-group":"companies"},{"name":"Email","description":"Find and verify business emails, including bulk verification jobs","x-sdk-group":"email"},{"name":"Search","description":"Typeahead suggestions and title previews for search filters","x-sdk-group":"search"},{"name":"Enums","description":"Closed filter vocabularies","x-sdk-group":"enums"},{"name":"Developer","description":"API keys, request logs and rate-limit status","x-sdk-group":"developer"},{"name":"Jobs","description":"Status of asynchronous jobs","x-sdk-group":"jobs"},{"name":"Account","description":"The signed-in user","x-sdk-group":"account"},{"name":"Billing","description":"Credits, plans, subscription and invoices","x-sdk-group":"billing"},{"name":"Webhooks","description":"Webhooks POST an event to your https URL when something happens in your workspace: `person.saved`, `person.email_found` and `company.saved` (plus `webhook.test` from the test operation). Only changes after a webhook was created are sent; nothing is replayed from before. Free: no credits.\n\n**Event body** (JSON): `{ id, type, api_version, created_at, webhook_id, data }`. `id` is `evt_...` and stable across retries: deliveries are at least once, so dedupe on it. For person events `data` is `{ person, saved_at, list_ids }`, `person` being the `people_search` row of that person for your workspace; for `company.saved` it is `{ company, saved_at, list_ids }`. A shape change ships as a new `api_version`; a webhook keeps the version it was created with.\n\n**Headers**: `X-GetProspect-Event-Id`, `X-GetProspect-Event-Type`, `User-Agent: GetProspect-Webhooks/1.0` and `X-GetProspect-Signature: t=<unix seconds>,v1=<hex>`, where `v1` is HMAC-SHA256 with the webhook `secret` (shown once, by `webhooks_create`) over `<t>.<raw body>`. Verify it before trusting a body, and refuse an old `t`:\n\n```js\nconst [t, v1] = header.split(',').map(part => part.split('=')[1]);\nconst expected = crypto.createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex');\nconst valid = crypto.timingSafeEqual(Buffer.from(v1, 'hex'), Buffer.from(expected, 'hex'))\n  && Math.abs(Date.now() / 1000 - Number(t)) < 300;\n```\n\n**Delivery**: answer 2xx within 10 s. Redirects are never followed (a 3xx is a failed attempt). Transport errors, 408, 429 and 5xx are retried after 1 min, 5 min, 30 min, 2 h, 6 h and 24 h; then the event is `failed`. Any other answer (a 3xx included) and a blocked address are final. A 410 disables the webhook at once (`receiver_gone`); 3 days of nothing but failures (`failing`) or 20 timeouts in a row (`slow`) disable it too, and so does the departure of the member (`creator_removed`) or the deletion of the API key (`key_revoked`) that created it. The workspace admin gets an App notification when a delivery problem disables one; re-activate it with `webhooks_update` `status: active`.\n\n**Limits**: 25 active webhooks per workspace, 1 delivery in flight per webhook, 10 deliveries per second per workspace, 50,000 undelivered events per webhook (beyond that it is disabled `failing`), 10 test events per webhook and 30 per workspace per minute. Delivery records are kept 30 days.","x-sdk-group":"webhooks"},{"name":"Blocklist","description":"Keep people and companies out of every search, enrich and email answer in this workspace","x-sdk-group":"blocklist"},{"name":"Notifications","description":"In-app notifications of the workspace","x-sdk-group":"notifications"},{"name":"Events","description":"Realtime event stream","x-sdk-group":"events"}],"servers":[{"url":"https://api.getprospect.com"}],"components":{"schemas":{"UserRef":{"type":"object","description":"A workspace member, as named on what they created (`owner`). Carries no email.","required":["id","first_name","last_name","photo_url"],"properties":{"id":{"type":"string","description":"The user id."},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"photo_url":{"type":"string","nullable":true,"description":"Profile photo URL; null without one."}}},"Pagination":{"type":"object","description":"`metadata.pagination` of a page-numbered list. Ask for the next page until `page` reaches `total_pages`.","required":["page","per_page","total_pages","total_count"],"properties":{"page":{"type":"integer","minimum":1,"description":"The page served, 1-based."},"per_page":{"type":"integer","minimum":1,"description":"Items per page."},"total_pages":{"type":"integer","minimum":1,"description":"At least 1: an empty list is one empty page."},"total_count":{"type":"integer","minimum":0,"description":"Matching items across all pages."},"max_page":{"type":"integer","minimum":1,"description":"Searches only: the deepest reachable page (25,000 results / `per_page`)."},"truncated":{"type":"boolean","description":"Searches only: true when the matches run past `max_page` (`total_pages` is clamped to it)."}}},"SaveSaved":{"type":"object","description":"A record now saved in the workspace.","required":["identifier","id","matched_by","list_ids","saved_at"],"properties":{"identifier":{"type":"string","description":"The item's `identifier` as sent; else, for a bare string item, the string itself; else its index."},"id":{"type":"string","description":"The record id."},"matched_by":{"type":"string","description":"The lookup key that found the record (`id` for an id item and for a bare string item)."},"list_ids":{"type":"array","items":{"type":"string"},"description":"The lists this request named that the record is now in (`[]` without `list_ids`)."},"saved_at":{"type":"string","format":"date-time","nullable":true,"description":"When the workspace first saved the record."}}},"SaveNotMatched":{"type":"object","description":"An item whose lookup found no record (an unknown, erased or blocked record is not told apart).","required":["identifier","attempted"],"properties":{"identifier":{"type":"string","description":"The item's `identifier` as sent; else, for a bare string item, the string itself; else its index."},"attempted":{"type":"array","items":{"type":"string"},"description":"The lookup keys tried."}}},"SaveInvalid":{"type":"object","description":"An item that could not be looked up: no usable key, a malformed value or an unknown field.","required":["identifier","reason"],"properties":{"identifier":{"type":"string","description":"The item's `identifier` as sent; else, for a bare string item, the string itself; else its index."},"reason":{"type":"string","description":"What is wrong with the item, readable."},"skipped":{"type":"array","items":{"type":"string"},"description":"Keys sent but not usable."},"unknown_fields":{"type":"array","items":{"type":"string"},"description":"Fields the item may not carry."}}},"SaveFailed":{"type":"object","description":"A record found but not saved by this request; retrying the item is safe.","required":["identifier","id","reason"],"properties":{"identifier":{"type":"string","description":"The item's `identifier` as sent; else, for a bare string item, the string itself; else its index."},"id":{"type":"string","description":"The record id."},"reason":{"type":"string","description":"A code, e.g. `save_failed`."}}},"SaveResult":{"type":"object","description":"The four buckets of a save. Each domain narrows `saved` to its own item.","required":["saved","not_matched","invalid","failed"],"properties":{"saved":{"type":"array","items":{"$ref":"#/components/schemas/SaveSaved"}},"not_matched":{"type":"array","items":{"$ref":"#/components/schemas/SaveNotMatched"}},"invalid":{"type":"array","items":{"$ref":"#/components/schemas/SaveInvalid"}},"failed":{"type":"array","items":{"$ref":"#/components/schemas/SaveFailed"}}}},"SaveResultMetadata":{"type":"object","description":"`metadata` of a save: the bucket counts beside the envelope timestamp.","required":["timestamp","total","saved_count","not_matched_count","invalid_count","failed_count"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"total":{"type":"integer","minimum":0,"description":"Items in the request."},"saved_count":{"type":"integer","minimum":0},"not_matched_count":{"type":"integer","minimum":0},"invalid_count":{"type":"integer","minimum":0},"failed_count":{"type":"integer","minimum":0},"credits":{"type":"object","nullable":true,"additionalProperties":true,"description":"What the save spent and what is left; absent or null when it spends none."}},"additionalProperties":true},"ErrorName":{"type":"string","description":"What went wrong, stable across releases. Switch on it (and on `payload.code`), never on the message. New names may be added.\n\n- `VALIDATION_ERROR` (400): The request is invalid. `payload.code` says which kind of mistake it is.\n- `UNAUTHORIZED` (401): Missing, unknown or inactive credentials.\n- `PAYMENT_REQUIRED` (402): Not enough credits. `X-Limit-Reached` and `X-Limit-Type` name the exhausted balance.\n- `FORBIDDEN` (403): The credential may not call this operation (`payload.code`: `session_required`, `admin_required`).\n- `NOT_FOUND` (404): The addressed record does not exist in this workspace, or (inside a 200 envelope) a search or enrich found nothing.\n- `NOT_SAVED` (404): The record exists but is not saved in this workspace.\n- `TIMEOUT` (408): The work did not finish in time; retry later.\n- `REQUEST_TIMEOUT` (408): Older spelling of `TIMEOUT`, still sent by people enrich.\n- `CONFLICT` (409): The request conflicts with the current state, a duplicate, or an idempotency record (`payload.code`).\n- `GONE` (410): The route was retired; the message names its successor.\n- `LIST_TOO_LARGE` (422): The list holds more records than one operation may move.\n- `TOO_MANY_LISTS` (422): The selection spans more lists than one operation may move.\n- `LIMIT_REACHED` (400): Older name of the active-jobs cap; CSV enrichments answer 409 `CONFLICT` with `payload.code: limit_reached` since jobs-files J1.\n- `RATE_LIMIT` (429): Too many requests; wait for `Retry-After` seconds.\n- `INTERNAL_ERROR` (500): An unexpected server error.\n- `SAVE_FAILED` (500): Nothing was saved; retry the request.\n- `EXPORT_FAILED` (500): The export could not be produced; retry later.\n- `UPSTREAM_ERROR` (502): A dependency (CRM, payment provider, ...) failed or answered something unusable.\n- `UNAVAILABLE` (503): Temporarily refused on purpose (a store the request needs is down, a feature is off); retryable.\n- `bulk_action_running` (409): Older name of a 409 `CONFLICT` with `payload.code: bulk_action_running` (bulk-action routes).\n- `VERIFICATION_ERROR` (200): Single email verification failed; `data` carries an `unknown` verdict. Retry later.","enum":["VALIDATION_ERROR","UNAUTHORIZED","PAYMENT_REQUIRED","FORBIDDEN","NOT_FOUND","NOT_SAVED","TIMEOUT","REQUEST_TIMEOUT","CONFLICT","GONE","LIST_TOO_LARGE","TOO_MANY_LISTS","LIMIT_REACHED","RATE_LIMIT","INTERNAL_ERROR","SAVE_FAILED","EXPORT_FAILED","UPSTREAM_ERROR","UNAVAILABLE","bulk_action_running","VERIFICATION_ERROR"],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"ErrorCode":{"type":"string","description":"The machine-readable reason inside `payload.code`. New codes may be added.\n\n- `unknown_field`: The field does not exist; see `did_you_mean` and `allowed_fields`.\n- `conflicting_fields`: Two fields (or a field and its alias) that exclude each other.\n- `missing_field`: A required field is absent or empty.\n- `wrong_type`: The value has the wrong JSON type.\n- `value_not_allowed`: The value is outside the vocabulary; see `allowed_values` or `enum`.\n- `out_of_range`: A number, length or item count outside the allowed range.\n- `invalid_format`: The value does not match the expected format (email, URL, id, date).\n- `invalid_value`: The value is refused for another reason; the message says why.\n- `session_required`: Only a signed-in session may call this operation (not an API key, job token or OAuth client).\n- `admin_required`: Only a workspace admin may call this operation.\n- `idempotency_key_reused`: The `Idempotency-Key` was already used with a different request or by another principal.\n- `idempotency_in_progress`: A request with this `Idempotency-Key` is still running; retry after `Retry-After`.\n- `idempotency_response_unavailable`: The request with this `Idempotency-Key` completed, but its response is too large to replay.\n- `idempotency_outcome_unknown`: The request with this `Idempotency-Key` stopped after it started billable work; it is not run again, and its outcome is unknown.\n- `idempotency_unavailable`: The idempotency store is unreachable, and this operation refuses to run without it.\n- `bulk_action_running`: Another bulk action of this workspace is running; `job_id` names it.\n- `invalid_state`: The job is not in a state that allows this action.\n- `limit_reached`: A per-workspace size or count limit is reached.\n- `billing_operation_in_progress`: Another billing operation of this workspace is running; retry when it finishes.\n- `cancellation_cooling_down`: The subscription was changed moments ago; retry after `Retry-After`.\n- `payment_state_unknown`: The payment provider did not confirm the outcome; check the subscription before retrying.\n- `temporarily_disabled`: This operation is switched off for now; retry later.\n- `slug_taken`: The affiliate slug is already used by someone else.\n- `payment_captured_update_failed`: The payment went through but the subscription change did not; support completes it. Do not retry. `invoice_id` names the invoice.\n- `payment_processing_failed`: Nothing was charged and nothing changed; the same request may be retried.\n- `payment_declined`: The payment provider declined the charge; the message says why.\n- `use_checkout`: This workspace pays through Stripe: buy or add through `POST /v2/billing/checkout/subscription`.\n- `use_fastspring_order`: This workspace pays through FastSpring: add units through `POST /v2/billing/fastspring-orders`.\n- `use_phone_addon_update`: Lowering or keeping the phone add-on is `PUT /v2/billing/subscription/phone-addon`, not an order.\n- `phone_addon_requires_plan`: The phone add-on needs a paid email plan.\n- `not_eligible`: The account may not purchase right now; ask for a payment review.\n- `plan_not_found`: No plan has this id or price id.\n- `billing_cycle_not_found`: No billing cycle has this id.\n- `subscription_not_found`: The workspace has no subscription.\n- `no_stripe_customer`: The workspace has no Stripe customer; buy through checkout first.\n- `account_not_owned`: The FastSpring account does not belong to this workspace.\n- `coupon_invalid`: No workspace or affiliate link has this referral code.\n- `coupon_own_workspace`: A workspace cannot apply its own referral code.\n- `account_not_new`: Referral codes apply only before the first payment.\n- `coupon_already_applied`: This account already has a referral code.\n- `retention_offer_invalid`: The plan is not a retention offer for this workspace; see `GET /v2/billing/plans?type=retention`.\n- `payout_profile_missing`: Save payout details before requesting a payout.\n- `minimum_balance`: The affiliate balance is below the payout minimum.\n- `payout_request_open`: A payout request is already awaiting review.\n- `payout_profile_conflict`: The payout details were saved concurrently; retry.\n- `already_pending`: A payment review is already pending for this account.\n- `not_reviewable`: The account status does not allow a payment review; `status` names it.\n- `email_taken`: Another account already uses this email address.\n- `phone_taken`: Another account already uses this phone number.\n- `deletion_blocked`: The account cannot be deleted while a cancellation or deletion request is being processed.\n- `already_verified`: The email address is already verified; nothing was sent.\n- `expired`: The verification code expired; request a new one.\n- `in_progress`: The account is being set up by another request; retry in a few seconds.\n- `charge_lock_busy`: Another bulk verification start of this workspace is being charged; retry after `Retry-After`.\n- `already_member`: This address already belongs to a member of the workspace.\n- `already_invited`: This address already has a pending invitation to the workspace.\n- `cannot_remove_admin`: A workspace admin cannot be removed from the workspace.\n- `invite_limit_reached`: The workspace sent its daily maximum of invitations; retry after `Retry-After` seconds.\n- `workspace_required`: The credential belongs to no workspace, and this operation only works inside one.\n- `integration_not_connected`: The workspace has no connection for this integration.\n- `integration_paused`: The integration is paused; this action runs only on an active one (Pipedrive refresh).\n- `activation_blocked`: The integration cannot be activated yet: pick a spreadsheet and a worksheet first (Sheets).\n- `connection_owner_only`: Only the user who connected this Google account may get its picker token; reconnect Sheets with your own account.\n- `spreadsheet_missing`: No spreadsheet is connected yet (Sheets).\n- `push_all_starting`: Another start of this push is still being recorded; retry after `Retry-After`.\n- `vendor_auth_failed`: The vendor refused the stored authorization (revoked or expired); reconnect the integration.\n- `vendor_permission_missing`: The connected vendor account lacks a permission or scope.\n- `vendor_rate_limited`: The vendor rate-limited the call; `retry_after` (seconds) when the vendor sent one.\n- `vendor_unavailable`: The vendor failed or did not answer in time; retry later.\n- `vendor_rejected`: The vendor rejected the call; `vendor_message` carries its reason.\n- `creator_removed`: The webhook was disabled because the member or API key that created it is gone; create a new one instead.\n- `creator_mismatch`: Only the member or API key that created the webhook can change its URL or events; create your own webhook instead.\n- `credential_in_query`: A credential (`api_key`, `apiKey`, `jwtToken`) was sent in the query string, where it would land in URL logs: send it in a header.\n- `ticket_invalid`: The event-stream ticket is unknown, expired or already used.\n- `token_expired`: The access token has expired: refresh it and retry.\n- `too_many_tickets`: Too many event-stream tickets minted this minute.\n- `too_many_streams`: Too many event streams open for this user: close one first.\n- `oauth_exchange_failed`: Google did not accept the authorization code (expired, used, or minted for another redirect URI).\n- `email_missing`: The connected Google account has no email address.\n- `mailbox_error`: The mailbox has a stored connection error; reconnect it before enabling or disabling it.\n- `not_draft`: The sequence is already launched; only a draft can be launched or move its setup stage.\n- `not_launched`: The sequence is still a draft; launch it before pausing or resuming it.\n- `sequence_not_draft`: An API key or job token may change a sequence only while it is a draft; sign in to the App to edit a launched one.\n- `sequence_completed`: The sequence is completed: resume it (POST /v2/sequences/{id}/resume) before pausing it or adding or resuming leads.\n- `mailbox_missing`: The sequence has no sending mailbox.\n- `mailbox_disconnected`: The sending mailbox is disconnected; reconnect it first.\n- `mailbox_inactive`: The sending mailbox is turned off; enable it first.\n- `mailbox_bounce_rate`: Too many recent emails of the sending mailbox bounced; it is held until a member enables it again (also a `paused_reason`).\n- `dns_invalid`: SPF or DKIM of the sending mailbox's domain is not valid.\n- `no_steps`: The sequence has no step.\n- `first_step_subject_missing`: A variant of the first step has no subject.\n- `schedule_missing`: The sequence has no sending schedule.\n- `step_body_empty`: An enabled variant of a step has under 5 characters of text in its body; `payload.step` and `payload.variant` name it.\n- `no_leads`: The sequence has no lead left to email (none scheduled or active).\n- `step_limit`: A sequence holds at most 100 steps.\n- `last_step`: The last step of a sequence cannot be deleted.\n- `last_variant`: The last variant of a step cannot be deleted.\n- `not_a_permutation`: `step_ids` must list each of the sequence's steps exactly once.\n- `liquid_syntax`: A subject or body does not parse as a Liquid template; `payload.field` names it, the message has the detail.\n- `lead_opted_out`: The lead opted out: only resuming it (POST /v2/sequences/{id}/leads/resume) takes it off the list.\n- `liquid_render_failed`: A template could not be rendered for a send (an error or a render limit); nothing was sent.\n- `attachment_limit`: Too many attachments (at most 10 per variant or template) or a message over 25 MB in total.\n- `upload_not_found`: A `file_key` names no uploaded file of this workspace.\n- `upload_purpose_mismatch`: A `file_key` was not issued by `POST /v2/uploads` with purpose `sequence_attachment`.\n- `default_schedule`: A sequence's default schedule cannot be deleted.\n- `folder_cycle`: A folder cannot move into itself or into one of its sub-folders.\n- `mailbox_send_failed`: Gmail did not confirm the message; it may have been sent, so check the thread before sending again.\n- `too_many_recipients`: A reply or forward goes to at most 20 addresses across `to`, `cc` and `bcc`.","enum":["unknown_field","conflicting_fields","missing_field","wrong_type","value_not_allowed","out_of_range","invalid_format","invalid_value","session_required","admin_required","idempotency_key_reused","idempotency_in_progress","idempotency_response_unavailable","idempotency_outcome_unknown","idempotency_unavailable","bulk_action_running","invalid_state","limit_reached","billing_operation_in_progress","cancellation_cooling_down","payment_state_unknown","temporarily_disabled","slug_taken","payment_captured_update_failed","payment_processing_failed","payment_declined","use_checkout","use_fastspring_order","use_phone_addon_update","phone_addon_requires_plan","not_eligible","plan_not_found","billing_cycle_not_found","subscription_not_found","no_stripe_customer","account_not_owned","coupon_invalid","coupon_own_workspace","account_not_new","coupon_already_applied","retention_offer_invalid","payout_profile_missing","minimum_balance","payout_request_open","payout_profile_conflict","already_pending","not_reviewable","email_taken","phone_taken","deletion_blocked","already_verified","expired","in_progress","charge_lock_busy","already_member","already_invited","cannot_remove_admin","invite_limit_reached","workspace_required","integration_not_connected","integration_paused","activation_blocked","connection_owner_only","spreadsheet_missing","push_all_starting","vendor_auth_failed","vendor_permission_missing","vendor_rate_limited","vendor_unavailable","vendor_rejected","creator_removed","creator_mismatch","credential_in_query","ticket_invalid","token_expired","too_many_tickets","too_many_streams","oauth_exchange_failed","email_missing","mailbox_error","not_draft","not_launched","sequence_not_draft","sequence_completed","mailbox_missing","mailbox_disconnected","mailbox_inactive","mailbox_bounce_rate","dns_invalid","no_steps","first_step_subject_missing","schedule_missing","step_body_empty","no_leads","step_limit","last_step","last_variant","not_a_permutation","liquid_syntax","lead_opted_out","liquid_render_failed","attachment_limit","upload_not_found","upload_purpose_mismatch","default_schedule","folder_cycle","mailbox_send_failed","too_many_recipients"],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"ErrorPayload":{"type":"object","description":"Context beside the error: `code`, plus fields that depend on it. A 400 `VALIDATION_ERROR` entry reports one invalid field (`field`, `received_value`, ...); other codes add their own context (e.g. `job_id`, `existing_id`).","properties":{"code":{"$ref":"#/components/schemas/ErrorCode"},"field":{"type":"string","description":"Full path of the field, e.g. `filters.person_seniority.include`."},"received_value":{"description":"The value sent (arrays over 5 items and strings over 500 are summarized)."},"received_type":{"type":"string","description":"The JSON type of the value sent."},"invalid_values":{"description":"`value_not_allowed`: the values outside the vocabulary (over 5, summarized like `received_value`)."},"allowed_values":{"type":"array","items":{},"description":"`value_not_allowed`: the whole vocabulary, when short."},"enum":{"type":"string","description":"`value_not_allowed`: the `GET /v2/enums/{name}` list of the vocabulary."},"did_you_mean":{"type":"string","description":"`unknown_field`: the field most likely meant."},"allowed_fields":{"type":"array","items":{"type":"string"},"description":"`unknown_field`: the known fields."},"constraints":{"type":"object","additionalProperties":{"type":"string"},"description":"The failed constraints and their messages."}},"additionalProperties":true},"ApiError":{"type":"object","description":"One error: a stable `name`, a readable `message` and, when there is context, a `payload`.","required":["name","message"],"properties":{"name":{"$ref":"#/components/schemas/ErrorName"},"message":{"type":"string","description":"Human-readable; may change between releases."},"payload":{"$ref":"#/components/schemas/ErrorPayload"}}},"EnvelopeMetadata":{"type":"object","required":["timestamp"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."}},"additionalProperties":true},"Envelope":{"type":"object","description":"Every v2 JSON response. `data` holds the result; `errors` is present when something went wrong, and can accompany a 200 (a search or enrich that found nothing answers 200 with `NOT_FOUND`).","required":["success","data","metadata"],"properties":{"success":{"type":"boolean"},"data":{"description":"The result (any value, null included); its schema is given per operation."},"metadata":{"$ref":"#/components/schemas/EnvelopeMetadata"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}}}},"ErrorEnvelope":{"type":"object","description":"The body of every v2 error status (4xx, 5xx).","required":["success","data","metadata","errors"],"properties":{"success":{"type":"boolean","enum":[false]},"data":{"description":"null, except where an operation documents context here."},"metadata":{"$ref":"#/components/schemas/EnvelopeMetadata"},"errors":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/ApiError"}}}},"PeopleGetResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Person"},"metadata":{"$ref":"#/components/schemas/PeopleEnrichMetadata"}}}]},"PeopleEditsUpdateRequest":{"type":"object","properties":{"first_name":{"type":"string","nullable":true,"maxLength":100,"description":"First name to show instead of ours.","example":"Em"},"last_name":{"type":"string","nullable":true,"maxLength":100,"description":"Last name to show instead of ours."},"email":{"type":"string","nullable":true,"description":"An email address; stored lower-cased.","example":"emily@example.com"},"phone":{"type":"string","nullable":true,"description":"3-40 characters of digits, spaces and + ( ) - . with at least one digit."}},"description":"The workspace's own values for a saved person. A string sets the field, null or an empty string clears it, an absent key leaves it alone. Send at least one field."},"PeopleEditsUpdateResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PeopleEditsUpdateResult"}}}]},"PeopleBulkEnrichRequest":{"type":"object","properties":{"data":{"description":"Array of person lookup items (1-50). Each item is matched independently.","minItems":1,"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/PeopleBulkEnrichItem"}},"enrich_email":{"type":"boolean","description":"Enrich a verified business email for every matched item; set false to skip. Pre-flight credit check requires up to one email credit per item.","default":true},"enrich_phone":{"type":"boolean","description":"If true, attempt to enrich a mobile phone for every matched item. Pre-flight credit check.","default":false}},"required":["data"]},"PeopleBulkEnrichResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PeopleBulkEnrichResult"},"metadata":{"$ref":"#/components/schemas/PeopleBulkEnrichMetadata"}}}]},"PeopleCreditsPreviewRequest":{"type":"object","properties":{"filters":{"description":"The same filter object POST /v2/people/save-search takes; the price covers everyone it matches, up to `limit`. Mutually exclusive with `data`.","allOf":[{"$ref":"#/components/schemas/PeopleFilters"}]},"sort_by":{"description":"With `filters`: the sort key of the search being previewed - the SAME value the save will send. When the match set is larger than `limit`, the sort decides WHICH people are the first `limit`, so a preview without it can price a different set than the save takes.","allOf":[{"$ref":"#/components/schemas/PeopleSortBy"}]},"sort_direction":{"description":"With `filters`: sort direction, as on the save. Ignored when sort_by is omitted.","allOf":[{"$ref":"#/components/schemas/SortDirection"}]},"exclude_ids":{"description":"With `filters`: profile ids the reader unticked, excluded exactly as the save excludes them.","maxItems":25000,"type":"array","items":{"type":"string"}},"limit":{"type":"integer","description":"With `filters`: how many people the save would take at most (1-25000, defaults to the maximum). The preview of a WHOLE-LIST export - `filters` holding nothing but `lists`, naming exactly one list in `include` or `saved: 'any'` / `saved: 'without_list'` alone, with no `exclude_ids` - may go up to 1000000 and defaults to that; every other request over 25000 is a 400.","minimum":1,"maximum":1000000},"list_ids":{"description":"Accepted so the exact save body can be previewed; lists never change the price, so it is ignored.","maxItems":20,"type":"array","items":{"type":"string"}},"data":{"type":"array","items":{"oneOf":[{"type":"string","description":"A GetProspect person id."},{"$ref":"#/components/schemas/PeopleSaveItem"}]},"description":"People to price (1-25000), the items POST /v2/people/save takes (at most 50 `linkedin_url` items). The cap is the whole selection, which the client then saves in 500-item requests. Mutually exclusive with `filters`.","minItems":1,"maxItems":25000}}},"PeopleCreditsPreviewResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PeopleCreditsPreview"}}}]},"PeopleEnrichRequest":{"type":"object","properties":{"data":{"description":"Lookup identifiers. Provide at least one of id, linkedin_id, linkedin_url, email, or (first_name + last_name + company_domain|company_name).","allOf":[{"$ref":"#/components/schemas/PeopleEnrichLookup"}]},"enrich_email":{"type":"boolean","description":"Reveal a verified business email for the matched person; set false to skip. A stored valid email is handed over at once; a person never searched before (email.status not_checked) gets a live search against their primary company, which can take a few seconds. Consumes 1 email credit per newly revealed email (re-revealing the same email for a workspace is free); a search that finds nothing is free and leaves email.status not_found.","default":true},"enrich_phone":{"type":"boolean","description":"If true, attempt to find a mobile phone for the matched person. Consumes 1 phone credit.","default":false}},"required":["data"]},"PeopleEnrichResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"object","nullable":true,"oneOf":[{"$ref":"#/components/schemas/Person"}],"description":"The person; null when nobody matched (`errors[0].name` is then `NOT_FOUND`)."},"metadata":{"$ref":"#/components/schemas/PeopleEnrichMetadata"}}}]},"PeopleEnrichSearchRequest":{"type":"object","properties":{"filters":{"description":"The same filter object `POST /v2/people/search` takes. Everyone it matches is enriched, up to `limit`.","allOf":[{"$ref":"#/components/schemas/PeopleFilters"}]},"sort_by":{"description":"The sort key of the search being enriched - the SAME value the reader had on POST /v2/people/search. It decides which people are \"the first `limit`\" when the match set is larger than the cap.","allOf":[{"$ref":"#/components/schemas/PeopleSortBy"}]},"sort_direction":{"description":"Sort direction, as on POST /v2/people/search. Ignored when sort_by is omitted.","allOf":[{"$ref":"#/components/schemas/SortDirection"}]},"exclude_ids":{"description":"Profile ids to skip. The reader unticked these out of the selection, so they are inside the match set and must not be enriched or charged for. Applied after the filter resolves.","maxItems":25000,"type":"array","items":{"type":"string"}},"limit":{"type":"integer","description":"How many people to enrich at most (1-25000). Defaults to the maximum.","minimum":1,"maximum":25000}},"required":["filters"]},"PeopleEnrichSearchResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PeopleEnrichSearchJob"}}}]},"PeopleExistsRequest":{"type":"object","properties":{"linkedin_urls":{"description":"LinkedIn person profile URLs to check in Mongo (1-50).","minItems":1,"maxItems":50,"example":["https://linkedin.com/in/emily-carter-sample"],"type":"array","items":{"type":"string","maxLength":512,"minLength":1}}},"required":["linkedin_urls"]},"PeopleExistsResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PeopleExistsResult"},"metadata":{"$ref":"#/components/schemas/PeopleExistsMetadata"}}}]},"PeopleSaveRequest":{"type":"object","properties":{"data":{"type":"array","items":{"oneOf":[{"type":"string","description":"A GetProspect person id."},{"$ref":"#/components/schemas/PeopleSaveItem"}]},"description":"People to save (1-500): person id strings or items with exactly one of `id` / `linkedin_url` (at most 50 `linkedin_url` items).","minItems":1,"maxItems":500},"list_ids":{"description":"v2 list ids to attach every saved person to (1-20).","minItems":1,"maxItems":20,"example":["64f1a2b3c4d5e6f7a8b9c0f1"],"type":"array","items":{"type":"string"}}},"required":["data","list_ids"]},"PeopleSaveResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PeopleSaveResult"},"metadata":{"$ref":"#/components/schemas/SaveResultMetadata"}}}]},"PeopleSaveSearchRequest":{"type":"object","properties":{"filters":{"description":"The same filter object `POST /v2/people/search` takes. Everyone it matches is saved, oldest constraint first, up to `limit`.","allOf":[{"$ref":"#/components/schemas/PeopleFilters"}]},"sort_by":{"description":"The sort key of the search being saved - the SAME value the reader had on POST /v2/people/search. It decides which people are \"the first `limit`\" when the match set is larger than the cap, so omitting it while the reader sorted saves a different set than the one they were looking at. Omit only when the search itself ran unsorted (followers desc).","allOf":[{"$ref":"#/components/schemas/PeopleSortBy"}]},"sort_direction":{"description":"Sort direction, as on POST /v2/people/search. Ignored when sort_by is omitted.","allOf":[{"$ref":"#/components/schemas/SortDirection"}]},"list_ids":{"description":"Saved contacts list ids to attach every saved person to.","maxItems":20,"type":"array","items":{"type":"string"}},"search_id":{"type":"string","description":"v2 search to attribute this run to - its stats accumulate what the run saved and charged, recorded once at the end of the run (partial runs record what landed). App-internal.","pattern":"^[0-9a-fA-F]{24}$"},"exclude_ids":{"description":"Profile ids to skip. The reader unticked these out of the selection, so they are inside the match set and must not be saved or charged for. Applied after the filter resolves, so the run saves `limit` minus however many of these it met.","maxItems":25000,"type":"array","items":{"type":"string"}},"limit":{"type":"integer","description":"How many people to save at most (1-25000). Defaults to the maximum.","minimum":1,"maximum":25000}},"required":["filters"]},"PeopleSaveSearchResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PeopleSaveSearchJob"}}}]},"PeopleSearchRequest":{"type":"object","properties":{"filters":{"description":"Filter configuration. Active filters AND together and at least one include condition is required. Job filters (person_job_title, person_seniority, person_department, tenure) and company filters must all match within the same position: a person qualifies only when one of their jobs satisfies every one of them at once. A request can carry at most 20,000 filter values in total. See GET /v2/enums for allowed values per enum filter.","allOf":[{"$ref":"#/components/schemas/PeopleFilters"}]},"sort_by":{"description":"Sort key. Omit for the default: followers desc. Sorting applies when the result set is under 500,000 people; larger result sets fall back to the default order.","allOf":[{"$ref":"#/components/schemas/PeopleSortBy"}]},"sort_direction":{"description":"Sort direction. Per-key defaults apply; ignored when sort_by is omitted.","allOf":[{"$ref":"#/components/schemas/SortDirection"}]},"page":{"type":"integer","description":"Page number, 1-based. The deepest reachable page is 25,000 / per_page: 1,000 at 25, 500 at 50 and 250 at 100 (metadata.pagination.max_page). A result set that runs past it has total_pages clamped to max_page and pagination.truncated=true, while total_count stays the real match count - narrow the filters to reach the rest.","minimum":1,"maximum":1000,"default":1},"per_page":{"type":"integer","enum":[25,50,100],"default":25,"description":"Results per page: 25, 50 or 100. Above 25 is not available with enrich_email or enrich_phone."},"enrich_email":{"type":"boolean","description":"When true, reveal each result's stored email and charge 1 credit per revealed email.","default":false},"enrich_phone":{"type":"boolean","description":"When true, reveal each result's phone via a live lookup and charge 1 phone credit per result with a LinkedIn URL. Up to 25 lookups per page - slow.","default":false}},"required":["filters"]},"PeopleSearchResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Person"}},"metadata":{"$ref":"#/components/schemas/PeopleSearchMetadata"}}}]},"CompaniesGetResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Company"}}}]},"CompaniesEditsUpdateRequest":{"type":"object","properties":{"name":{"type":"string","nullable":true,"maxLength":200,"description":"The name your workspace shows for the company (trimmed, at most 200 characters). null or an empty string clears the edit, so the database name shows again.","example":"Intercom (EMEA)"}}},"CompaniesEditsUpdateResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CompaniesEditsUpdateResult"}}}]},"CompaniesBulkEnrichRequest":{"type":"object","properties":{"data":{"minItems":1,"maxItems":50,"description":"Array of company lookup items (1-50). Each item is matched independently using priority order id > linkedin_id > linkedin_url > domain > name.","type":"array","items":{"$ref":"#/components/schemas/CompaniesBulkEnrichItem"}}},"required":["data"]},"CompaniesBulkEnrichResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CompaniesBulkEnrichResult"},"metadata":{"$ref":"#/components/schemas/CompaniesBulkEnrichMetadata"}}}]},"CompaniesEnrichRequest":{"type":"object","properties":{"data":{"description":"Lookup identifiers. Provide at least one of id, linkedin_id, linkedin_url, domain, or name.","allOf":[{"$ref":"#/components/schemas/CompaniesEnrichLookup"}]}},"required":["data"]},"CompaniesEnrichResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"object","nullable":true,"oneOf":[{"$ref":"#/components/schemas/Company"}],"description":"The company; null when none matched (see `errors`)."},"metadata":{"$ref":"#/components/schemas/CompaniesEnrichMetadata"}}}]},"CompaniesSaveRequest":{"type":"object","properties":{"data":{"type":"array","minItems":1,"maxItems":500,"items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CompanySaveItem"}]},"description":"Companies to save (1-500): a company id, or an object identifying it by id, linkedin_id, linkedin_url or domain. At most 50 items may come without an id."},"list_ids":{"maxItems":20,"description":"Company lists to put every saved company in (0-20), each a company list of your workspace (another id answers 400). Default: none.","type":"array","items":{"type":"string"}}},"required":["data"]},"CompaniesSaveResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CompaniesSaveResult"},"metadata":{"$ref":"#/components/schemas/SaveResultMetadata"}}}]},"CompaniesSearchRequest":{"type":"object","properties":{"filters":{"description":"Filter configuration. Active filters AND together and at least one include condition is required (exclude-only searches are rejected). A request can carry at most 20,000 filter values in total. See GET /v2/enums for allowed values per enum filter.","allOf":[{"$ref":"#/components/schemas/CompanyFilters"}]},"sort_by":{"description":"Sort key. Omit for the smart default: relevance when `filters.company_keywords` is present, followers desc otherwise.","allOf":[{"$ref":"#/components/schemas/CompanySortBy"}]},"sort_direction":{"description":"Sort direction. Per-key defaults: company_name=asc, company_employee_count=desc (largest first), company_industry=asc, company_country=asc, company_founded=asc (oldest first), company_saved_at=desc (newest save first). Ignored when `sort_by` is omitted.","allOf":[{"$ref":"#/components/schemas/SortDirection"}]},"page":{"type":"integer","description":"Page number, 1-based. The deepest reachable page is 25,000 / per_page: 1,000 at 25, 500 at 50 and 250 at 100 (metadata.pagination.max_page). A result set that runs past it has total_pages clamped to max_page and pagination.truncated=true, while total_count stays the real match count - narrow the filters to reach the rest.","minimum":1,"maximum":1000,"default":1},"per_page":{"type":"integer","enum":[25,50,100],"default":25,"description":"Results per page: 25, 50 or 100."}},"required":["filters"]},"CompaniesSearchResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Company"}},"metadata":{"$ref":"#/components/schemas/CompaniesSearchMetadata"}}}]},"EmailFindResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmailFindResult"},"metadata":{"$ref":"#/components/schemas/EmailEnvelopeMetadata"}}}]},"EmailVerificationListResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EmailVerification"}},"metadata":{"$ref":"#/components/schemas/EmailVerificationsListMetadata"}}}]},"EmailVerificationResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmailVerification"}}}]},"EmailVerificationHistoryListResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EmailVerificationHistoryEntry"}},"metadata":{"$ref":"#/components/schemas/EmailVerificationsListMetadata"}}}]},"EmailVerifyResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmailVerificationResult"},"metadata":{"$ref":"#/components/schemas/EmailEnvelopeMetadata"}}}]},"EmailFindRequest":{"type":"object","properties":{"data":{"description":"Lookup identifiers. Provide full_name or first_name + last_name, plus domain or company.","allOf":[{"$ref":"#/components/schemas/EmailFindLookup"}]}},"required":["data"]},"EmailVerifyRequest":{"type":"object","properties":{"data":{"description":"Lookup identifiers.","allOf":[{"$ref":"#/components/schemas/EmailVerifyLookup"}]}},"required":["data"]},"SearchMatchingTitlesRequest":{"type":"object","properties":{"boolean_search":{"type":"string","description":"Boolean / Cartesian title query to preview, e.g. \"(CEO OR CTO) AND !Intern\". Same syntax as person_job_title.boolean_search: bareword=contains, 'single quotes'=contains a multi-word title, \"double quotes\"=exact, `backticks`=words in order with connectors bridged (`vp marketing` finds \"VP of Marketing\" but not \"VP Sales and Marketing\"), !=exclude, AND/OR, ()=grouping. Must contain at least one non-excluded term.","example":"(ceo OR \"chief executive officer\") AND !intern","minLength":2,"maxLength":20000},"limit":{"type":"integer","description":"Maximum titles to return, most common first.","minimum":1,"maximum":50,"default":20}},"required":["boolean_search"]},"SearchMatchingTitlesResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MatchingTitle"},"description":"Most common first, at most `limit`."},"metadata":{"$ref":"#/components/schemas/SearchMatchingTitlesMetadata"}}}]},"SearchSuggestRequest":{"type":"object","properties":{"type":{"description":"Which vocabulary to suggest from. `location` = unified location strings for person_location / company_location, with structured parts and a level (region / country / state / city; regions like EMEA or APAC also carry `country_codes` - their member countries); `job_title` = catalog titles for person_job_title (typing an abbreviation like \"ceo\" suggests its canonical title); `industry` = accepted company_industry values, each with its category group; `company_keywords` = company specialties for the company_keywords filter on both People Search and Company Search, each row carrying a `company_count`, ordered by popularity when browsing and by relevance when searching; `person` = people matching the typed name, each carrying the id `person.id` accepts, their current job title, and their company with its logo; `company` = companies matching the typed name or domain prefix, each carrying the id `company.id` (People Search) accepts, a domain attached to the company (its website when none is attached), logo, industry and employee range - `value` is the canonical name `company.name` accepts; `technology` = web technologies and technology categories for the company_technologies / company_technology_categories filters (Company Search and People Search): categories first, then technologies, each by how many companies use it; `kind` says which filter `value` (the id) goes to.","example":"location","allOf":[{"$ref":"#/components/schemas/SuggestType"}]},"query":{"type":"string","description":"The text typed so far, matched case-insensitively. Location, job_title, industry and company_keywords also ignore diacritics; `person` and `company` do not, so type \"Nestlé\", not \"Nestle\". Job-title and industry suggestions also survive a rephrasing: connector words and punctuation are ignored and the words may come in any order, so \"VP of Marketing\", \"VP, Marketing\" and \"Marketing VP\" all suggest \"Vice President Marketing\" - the same spellings person_job_title treats as that title. Location codes match exactly too: \"gb\" suggests United Kingdom, \"tx\" suggests Texas. Omit (or send empty) for browse mode, so a picker can open pre-filled: locations return top regions and the most popular places (the full region catalog lives at GET /v2/enums/regions), job titles the most-held titles, industries the alphabetical head of the list. Max 100 chars. Company-keyword suggestions match a prefix of any word, so \"market\" finds both \"Marketing\" and \"Digital Marketing\". `person` and `company` are the exceptions to browse mode: they need at least 2 characters and answer an empty list below that.","example":"aust","maxLength":100},"limit":{"type":"integer","description":"Maximum suggestions to return.","minimum":1,"maximum":25,"default":10}},"required":["type"]},"SearchSuggestResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Suggestion"},"description":"At most `limit` rows; `[]` when none match."},"metadata":{"$ref":"#/components/schemas/SearchSuggestMetadata"}}}]},"EnumsListResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Enums"}}}]},"EnumName":{"type":"string","description":"The name of a filter vocabulary. Grouped (a map of category -> values): industries, departments, regions; every other one is a flat list. New names may be added.","enum":["industries","countries","employee_ranges","company_types","business_types","revenue_streams","keywords_sources","departments","seniorities","regions"],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"EnumsGetResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EnumValues"}}}]},"ApiLogsListResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ApiLog"},"maxItems":500,"description":"Newest first."},"metadata":{"$ref":"#/components/schemas/ApiLogsListMetadata"}}}]},"RateLimitsGetResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/RateLimitStatus"}}}]},"JobResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Job"}}}]},"MeGetResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Me"}}}]},"BillingSubscriptionGetResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Subscription"}}}]},"CreditsGetResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CreditBalances"}}}]},"UsageChannel":{"type":"string","enum":["app","extension","api"]},"UsageAction":{"type":"string","enum":["search","enrich","enrichment","save","export","csv_enrichment","email_verify","other"]},"UsageEntity":{"type":"string","enum":["people","companies"]},"UsageGroupBy":{"type":"string","enum":["day","source"]},"UsageSummaryGetResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/UsageSummary"}}}]},"WebhookStatus":{"type":"string","enum":["active","paused","disabled"]},"WebhookListResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}},"metadata":{"$ref":"#/components/schemas/WebhookListMetadata"}}}]},"CreateWebhookRequest":{"type":"object","properties":{"url":{"type":"string","description":"Where events are POSTed: an https URL on a public host.","maxLength":2048,"example":"https://hooks.zapier.com/hooks/standard/1/abc/"},"events":{"type":"array","description":"A webhook event type: `person.saved` (a person entered the saved set), `person.email_found` (a saved person has a valid email the workspace owns), `company.saved` (a company entered the saved set). A webhook takes 1-10, no repeats.","minItems":1,"maxItems":10,"uniqueItems":true,"example":["person.saved"],"items":{"$ref":"#/components/schemas/WebhookEventType"}},"description":{"type":"string","nullable":true,"maxLength":200,"description":"A note for people reading the webhook list."},"api_version":{"description":"The payload version of the events (`2026-10`); defaults to the current one.","allOf":[{"$ref":"#/components/schemas/WebhookApiVersion"}]}},"required":["url","events"]},"WebhookResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Webhook"}}}]},"WebhookDeleteResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"object","nullable":true,"description":"Always null."}}}]},"UpdateWebhookRequest":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"description":"A new https URL on a public host. Only the creating member or API key may change it."},"events":{"type":"array","minItems":1,"maxItems":10,"uniqueItems":true,"description":"Replaces the event types (1-10, no repeats). Only the creating member or API key may change them.","items":{"$ref":"#/components/schemas/WebhookEventType"}},"description":{"type":"string","nullable":true,"maxLength":200,"description":"A note for people reading the webhook list; null clears it."},"status":{"type":"string","enum":["active","paused"],"description":"Pause or resume deliveries. Re-activating a disabled webhook resets its failure counters."},"api_version":{"description":"Move the webhook to another payload version.","allOf":[{"$ref":"#/components/schemas/WebhookApiVersion"}]}},"description":"Every field is optional; an omitted one keeps what is stored. Unknown fields are a 400."},"WebhookDeliveryStatus":{"type":"string","enum":["succeeded","failed","pending"]},"WebhookDeliveryListResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WebhookDelivery"}},"metadata":{"$ref":"#/components/schemas/WebhookListMetadata"}}}]},"WebhookTestResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WebhookTestResult"}}}]},"BlocklistCompaniesListResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BlockedCompany"}},"metadata":{"$ref":"#/components/schemas/BlocklistListMetadata"}}}]},"BlocklistCompaniesDeleteResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BlocklistDeleteResult"}}}]},"BlocklistCompaniesAddRequest":{"type":"object","properties":{"data":{"minItems":1,"maxItems":1000,"description":"The domains to block, 1 to 1,000.","type":"array","items":{"$ref":"#/components/schemas/BlocklistCompaniesAddItem"}}},"required":["data"]},"BlocklistCompaniesAddResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BlocklistCompaniesAddResult"},"metadata":{"$ref":"#/components/schemas/BulkAddCounts"}}}]},"BlocklistPeopleListResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BlockedPerson"}},"metadata":{"$ref":"#/components/schemas/BlocklistListMetadata"}}}]},"BlocklistPeopleDeleteResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BlocklistDeleteResult"}}}]},"BlocklistPeopleAddRequest":{"type":"object","properties":{"data":{"minItems":1,"maxItems":1000,"description":"The people to block, 1 to 1,000.","type":"array","items":{"$ref":"#/components/schemas/BlocklistPeopleAddItem"}}},"required":["data"]},"BlocklistPeopleAddResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BlocklistPeopleAddResult"},"metadata":{"$ref":"#/components/schemas/BulkAddCounts"}}}]},"NotificationsListResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Notification"}},"metadata":{"$ref":"#/components/schemas/NotificationsListMetadata"}}}]},"NotificationsMarkReadRequest":{"type":"object","properties":{"ids":{"minItems":1,"maxItems":100,"description":"The notifications to mark read (24-hex ids). Send this or `all: true`, not both.","example":["6ac35b5ffe3fe40ea209b07e"],"type":"array","items":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"}},"all":{"type":"boolean","description":"`true` marks every unread notification visible to the caller. `false` counts as absent. Send this or `ids`, not both."}},"description":"Send `ids` or `all: true`, not both."},"NotificationsMarkReadResponse":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"$ref":"#/components/schemas/NotificationsMarkReadResult"}}}]},"EventStreamMessage":{"type":"object","description":"One message of the `text/event-stream`: an `id:` line, a `retry:` line on the first message only, and one `data:` line holding the JSON-encoded `EventFrame`. There is no `event:` line.","required":["data"],"properties":{"id":{"type":"string","description":"The message id, for logs only: the stream does not replay."},"retry":{"type":"integer","description":"Milliseconds an `EventSource` waits before reconnecting (5000). First message only."},"data":{"$ref":"#/components/schemas/EventFrame"}}},"Person":{"type":"object","description":"A person: identity, location, current roles and contact slots, with your workspace's saved state. People Search results carry no `other_positions`, and with `person.linkedin_url` each carries the `matched_url` it was found by.","required":["id","full_name","first_name","last_name","email","mobile_phone","location","linkedin_url","primary_position","saved"],"properties":{"id":{"type":"string","description":"The GetProspect person id.","example":"64f1a2b3c4d5e6f7a8b9c0d1"},"full_name":{"type":"string","nullable":true,"description":"Full name.","example":"Emily Carter"},"first_name":{"type":"string","nullable":true,"description":"First name."},"last_name":{"type":"string","nullable":true,"description":"Last name."},"email":{"$ref":"#/components/schemas/PersonEmail"},"mobile_phone":{"$ref":"#/components/schemas/PersonMobilePhone"},"location":{"type":"object","nullable":true,"allOf":[{"$ref":"#/components/schemas/PersonLocation"}],"description":"The person's location; null when unresolved."},"linkedin_url":{"type":"string","nullable":true,"description":"LinkedIn profile URL."},"primary_position":{"type":"object","nullable":true,"allOf":[{"$ref":"#/components/schemas/PersonPosition"}],"description":"The primary current role (the one that matched your company filter or lookup, when there is one); null when the person has none."},"other_positions":{"type":"array","items":{"$ref":"#/components/schemas/PersonPosition"},"description":"The other current roles (not on People Search results)."},"saved":{"type":"object","nullable":true,"allOf":[{"$ref":"#/components/schemas/PersonSaved"}],"description":"Present when your workspace saved the person; null otherwise."},"matched_url":{"type":"string","nullable":true,"description":"People Search by `person.linkedin_url` only: the URL this person was found by."}}},"PeopleEnrichMetadata":{"type":"object","required":["timestamp"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"matched_by":{"$ref":"#/components/schemas/PeopleMatchedBy"}},"additionalProperties":true},"PeopleEditsUpdateResult":{"type":"object","required":["id","edits"],"properties":{"id":{"type":"string","description":"The person id."},"edits":{"$ref":"#/components/schemas/PersonEdits"}}},"PeopleBulkEnrichItem":{"type":"object","properties":{"identifier":{"type":"string","description":"Client-supplied correlation key echoed back in the response. If omitted, the item index is used."},"id":{"type":"string","description":"The GetProspect person `id`, as returned in People Search results."},"linkedin_id":{"description":"The LinkedIn member numeric id (accepted as string or number).","oneOf":[{"type":"string"},{"type":"integer"}],"example":1048576},"linkedin_url":{"type":"string","description":"The LinkedIn person URL (e.g. \"https://linkedin.com/in/john-doe\")."},"email":{"type":"string","description":"Reverse-lookup the person by their stored email address."},"first_name":{"type":"string","description":"Used together with last_name + company_domain or company_name."},"last_name":{"type":"string","description":"Used together with first_name + company_domain or company_name."},"company_domain":{"type":"string","description":"Company domain for the name+company composite lookup."},"company_name":{"type":"string","description":"Company name for the name+company composite lookup."}},"description":"One lookup of a bulk enrich: the People Enrich identifiers plus an optional `identifier`."},"PeopleBulkEnrichResult":{"type":"object","description":"Every item lands in exactly one bucket, echoing its `identifier`.","required":["matched","not_matched","invalid"],"properties":{"matched":{"type":"array","items":{"$ref":"#/components/schemas/PeopleBulkEnrichMatch"}},"not_matched":{"type":"array","items":{"$ref":"#/components/schemas/PeopleBulkEnrichNotMatched"}},"invalid":{"type":"array","items":{"$ref":"#/components/schemas/PeopleBulkEnrichInvalid"}}}},"PeopleBulkEnrichMetadata":{"type":"object","required":["timestamp","total","matched_count","not_matched_count","invalid_count"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"total":{"type":"integer","minimum":0,"description":"Items in the request."},"matched_count":{"type":"integer","minimum":0,"description":"Items in `matched`."},"not_matched_count":{"type":"integer","minimum":0,"description":"Items in `not_matched`."},"invalid_count":{"type":"integer","minimum":0,"description":"Items in `invalid`."}},"additionalProperties":true,"description":"`metadata` of a bulk enrich: the bucket counts."},"PeopleFilters":{"type":"object","properties":{"person":{"description":"Match the person themselves, by id, by name, or by LinkedIn URL. `id` and `name` are OR-ed with each other - a person matching either is returned - and the result AND-s with every other filter, so a picked person and a typed name can sit side by side in one request. `linkedin_url` looks up specific profiles and cannot be combined with the other two.","example":{"name":{"include":["Dmytro Shulha"]}},"allOf":[{"$ref":"#/components/schemas/PersonRefFilter"}]},"person_location":{"description":"Person location filter. Unified location strings resolved to country / state / city.","example":{"include":["California, United States","Austin, Texas, United States"],"exclude":["San Francisco, California, United States"]},"allOf":[{"$ref":"#/components/schemas/LocationStringFilter"}]},"company_keywords":{"description":"Free-text keyword match against the person's COMPANY (see GET /v2/enums/keywords_sources). Defaults to the `specialties` source only - the broader text sources match far more companies and are much likelier to exceed the resolution limit. Use POST /v2/search/suggest with `type: \"company_keywords\"` for accepted values. Does NOT affect ordering: this resolves to a company-id filter and contributes no relevance score.","example":{"include":["email marketing"],"sources":["specialties"]},"allOf":[{"$ref":"#/components/schemas/KeywordsFilter"}]},"person_job_title":{"description":"Job title match. Structured include/exclude + match_mode (CONTAINS/EXACT), or a boolean_search expression.","example":{"include":["Product Marketing Manager","Growth Marketing Manager"],"exclude":["Assistant"],"match_mode":"CONTAINS"},"x-examples":[{"include":["Product Marketing Manager","Growth Marketing Manager"],"exclude":["Assistant"],"match_mode":"CONTAINS"},{"boolean_search":"(CEO OR CTO) AND !Intern"}],"allOf":[{"$ref":"#/components/schemas/PersonJobTitleFilter"}]},"person_seniority":{"description":"Seniority (see GET /v2/enums/seniorities).","example":{"include":["Chief Officer","VP","Director"]},"allOf":[{"$ref":"#/components/schemas/SeniorityFilter"}]},"person_department":{"description":"Department (see GET /v2/enums/departments).","example":{"include":["Marketing","Sales"],"exclude":["Accounting"]},"allOf":[{"$ref":"#/components/schemas/DepartmentFilter"}]},"person_months_in_current_role":{"description":"Months in the current role (tenure of the active position). Integer months 0-600.","example":{"min":6,"max":24},"allOf":[{"$ref":"#/components/schemas/PersonMonthsRangeFilter"}]},"person_months_in_current_company":{"description":"Months at the current company (tenure since joining). Integer months 0-600.","example":{"min":12},"allOf":[{"$ref":"#/components/schemas/PersonMonthsRangeFilter"}]},"person_job_change":{"description":"Recent job change: current role started within timeframe_months, optionally narrowed by change_type.","example":{"timeframe_months":3,"change_type":"new_company"},"allOf":[{"$ref":"#/components/schemas/PersonJobChangeFilter"}]},"company":{"description":"Company the person works at - by our company `id`, by `domain`, by `name`, or by LinkedIn numeric `linkedin_id`.","example":{"name":{"include":["Intercom","Stripe"]}},"x-examples":[{"name":{"include":["Intercom","Stripe"]}},{"id":{"include":["64f1a2b3c4d5e6f7a8b9c0d2"]}}],"allOf":[{"$ref":"#/components/schemas/PeopleCompanyRefFilter"}]},"company_industry":{"description":"Industry of the person's company (see GET /v2/enums/industries).","example":{"include":["Software Development","IT Services & IT Consulting"],"exclude":["Staffing & Recruiting"]},"allOf":[{"$ref":"#/components/schemas/PeopleIndustryFilter"}]},"company_headcount_range":{"type":"array","description":"Bucketed headcount range of the company (see GET /v2/enums/employee_ranges).","example":["51-200","201-500"],"minItems":1,"maxItems":8,"items":{"$ref":"#/components/schemas/CompanyEmployeeRange"}},"company_country":{"description":"Country of the person's company, as ISO alpha-2 codes (GET /v2/enums/countries). Any resolved office country counts by default (headquarters included) - same contract as company_location and as Company Search; see headquarters_only. For city/state-level filtering use company_location. sort_by=company_country always orders by the registered headquarters country, independent of headquarters_only.","example":{"include":["US","CA","GB"],"headquarters_only":true},"allOf":[{"$ref":"#/components/schemas/PeopleCompanyCountryFilter"}]},"company_type":{"description":"Legal/ownership type of the person's company (see GET /v2/enums/company_types).","example":{"include":["Privately Held","Public Company"]},"allOf":[{"$ref":"#/components/schemas/CompanyTypeFilter"}]},"company_business_type":{"description":"Audience type of the person's company (see GET /v2/enums/business_types). Values: B2B, B2C, Nonprofit, Unknown.","example":{"include":["B2B"]},"allOf":[{"$ref":"#/components/schemas/BusinessTypeFilter"}]},"company_revenue_stream":{"description":"Revenue model of the person's company (see GET /v2/enums/revenue_streams).","example":{"include":["Subscriptions / Recurring","Product Sales"]},"allOf":[{"$ref":"#/components/schemas/RevenueStreamFilter"}]},"company_founded":{"description":"Founded-year range of the person's company. min/max are inclusive; either may be omitted.","example":{"min":2015,"max":2023},"allOf":[{"$ref":"#/components/schemas/PeopleNumberRangeFilter"}]},"company_headcount_custom":{"description":"Raw headcount range of the person's company. min/max are inclusive; either may be omitted.","example":{"min":50,"max":1000},"allOf":[{"$ref":"#/components/schemas/PeopleNumberRangeFilter"}]},"company_naics":{"description":"NAICS codes (numeric) of the person's company. Matches if any code on the company is in the list.","example":{"include":[541511,541512]},"allOf":[{"$ref":"#/components/schemas/PeopleNumberIncludeExcludeFilter"}]},"company_location":{"description":"Location of the person's company (the matched position's company), as unified location strings - same format as person_location. Any resolved office counts by default; see headquarters_only.","example":{"include":["San Francisco, California, United States"],"headquarters_only":true},"allOf":[{"$ref":"#/components/schemas/CompanyLocationFilter"}]},"company_technologies":{"description":"Web technologies detected on the company website, by id: the `value` of a `POST /v2/search/suggest` row with `type: technology` and `kind: technology`. Websites are rescanned every 30 days. Matches the company of the matched position. Not available yet: answers 400 until the people index carries company technologies.","example":{"include":["3421"]},"allOf":[{"$ref":"#/components/schemas/CompanyTechnologiesFilter"}]},"company_technology_categories":{"description":"Technology categories (CMS, Ecommerce, Analytics, ...), by id: the `value` of a suggest row with `kind: category`. A category matches a company using any technology in it. Matches the company of the matched position. Not available yet: answers 400 until the people index carries company technologies.","example":{"include":["1"]},"allOf":[{"$ref":"#/components/schemas/CompanyTechnologyCategoriesFilter"}]},"contact_details":{"description":"Contact data: email/phone availability and status (global), plus your workspace's reveal state.","example":{"email":{"status":["valid","accept_all"],"revealed":false},"phone":{"status":["found"]}},"allOf":[{"$ref":"#/components/schemas/PeopleContactDetailsFilter"}]},"lists":{"description":"Your workspace CRM list membership: include/exclude list ids, saved any/none, and saved-at range.","example":{"saved":"none"},"x-examples":[{"saved":"none"},{"include":["64f1a2b3c4d5e6f7a8b9c0e5"],"saved_at":{"from":"2026-01-01","to":"2026-06-30"}}],"allOf":[{"$ref":"#/components/schemas/PeopleListsFilter"}]},"duplicates":{"description":"Deduplication against your workspace's history: hide people already exported.","example":{"exclude_exported":true},"allOf":[{"$ref":"#/components/schemas/PeopleDuplicatesFilter"}]},"max_person_per_company":{"type":"integer","description":"Cap the number of people returned per company across the whole result set (1-100). A person is counted against the company of the position that matched your company filters, or their current/primary position when no company filter is set. Of the colleagues competing for a company slot, one we hold a valid email for is kept, and your sort decides between them (and picks the representative outright when none of them has one). Results stay in your sort order either way. For result sets above 25000 matches the representative is simply whoever leads your sort, and total_count is a rounded PRE-cap estimate (pagination.total_is_estimate=true) - an upper bound, so an export of that selection returns fewer people. At or below it both are exact.","minimum":1,"maximum":100,"example":2}},"description":"The People Search filter set, also taken by the whole-search save, enrich and credits preview."},"PeopleSortBy":{"type":"string","enum":["person_first_name","person_last_name","person_seniority","company_employee_count","company_name","company_industry","person_country","company_founded","person_email_available","person_job_title","company_country","company_type","company_business_type","company_revenue_stream","person_saved_at"],"description":"Sort key. Omit for the default: followers desc. Sorting applies when the result set is under 500,000 people; larger result sets fall back to the default order."},"SortDirection":{"type":"string","enum":["asc","desc"],"description":"Sort direction. Per-key defaults apply; ignored when sort_by is omitted."},"PeopleSaveItem":{"type":"object","properties":{"identifier":{"type":"string","description":"Your correlation key, echoed on the item in whichever bucket it lands. Without one, a bare id string is its own identifier and an object item's is its index in `data`, as on bulk enrich."},"id":{"type":"string","description":"The GetProspect person `id`. Exactly one of `id` / `linkedin_url`.","minLength":1,"example":"64f1a2b3c4d5e6f7a8b9c0d1"},"linkedin_url":{"type":"string","description":"The person's LinkedIn profile URL, matched like People Enrich does. Exactly one of `id` / `linkedin_url`; at most 50 such items per request.","minLength":1},"primary_position_id":{"type":"string","description":"Pin: the id of the person's position the saver was looking at (`position.id` on search/enrich).","pattern":"^[0-9a-fA-F]{24}$"},"primary_position_index":{"type":"integer","description":"Pin by `position_index`, for a row that predates position ids.","minimum":0},"primary_company_id":{"type":"string","description":"Pin by the companies-v2 id of the employer the saver was looking at.","minLength":1}},"description":"One person to save, by exactly one of `id` / `linkedin_url`, with an optional `identifier`."},"PeopleCreditsPreview":{"type":"object","description":"What the save would cost now, against the email balance read now. Nothing is reserved.","required":["requested","savable","not_matched","invalid","emails","credits_needed","credits_available","enough_credits","truncated"],"properties":{"requested":{"type":"integer","minimum":0,"description":"People the preview covers (distinct items, or everyone the filters select)."},"savable":{"type":"integer","minimum":0,"description":"Of them, people we hold and could save."},"not_matched":{"type":"integer","minimum":0,"description":"Of them, people we do not hold (or may not serve)."},"invalid":{"type":"integer","minimum":0,"description":"Items that are not a person id or a usable URL."},"emails":{"type":"object","required":["to_charge","already_owned","without_email","edited"],"properties":{"to_charge":{"type":"integer","minimum":0,"description":"Savable people with a stored valid email your workspace does not own: 1 credit each."},"already_owned":{"type":"integer","minimum":0,"description":"Savable people whose email your workspace already owns: free."},"without_email":{"type":"integer","minimum":0,"description":"Savable people with no stored valid email and no email edited by your team: free, saved without one."},"edited":{"type":"integer","minimum":0,"description":"Savable people whose email your team edited: they keep the edited address, so they are neither charged nor without an email."}}},"credits_needed":{"type":"integer","minimum":0,"description":"Email credits the save would charge (`emails.to_charge`)."},"credits_available":{"type":"integer","minimum":0,"description":"Your email credit balance now."},"enough_credits":{"type":"boolean","description":"`credits_available` covers `credits_needed`."},"truncated":{"type":"boolean","description":"With `filters`: the match set was cut at `limit`."}}},"PeopleEnrichLookup":{"type":"object","properties":{"id":{"type":"string","description":"The GetProspect person `id`, as returned in People Search results."},"linkedin_id":{"description":"The LinkedIn member numeric id (accepted as string or number).","oneOf":[{"type":"string"},{"type":"integer"}],"example":1048576},"linkedin_url":{"type":"string","description":"The LinkedIn person URL (e.g. \"https://linkedin.com/in/john-doe\"). Sales Navigator URN URLs are also accepted."},"email":{"type":"string","description":"Reverse-lookup the person by their stored email address."},"first_name":{"type":"string","description":"Used together with last_name + company_domain or company_name."},"last_name":{"type":"string","description":"Used together with first_name + company_domain or company_name."},"company_domain":{"type":"string","description":"Company domain for the name+company composite lookup."},"company_name":{"type":"string","description":"Company name for the name+company composite lookup."}},"description":"How to find the person: at least one identifier; when several are sent the strongest wins."},"PeopleEnrichSearchJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["people_enrich_search"]},"result":{"allOf":[{"$ref":"#/components/schemas/EnrichRunResult"}],"description":"Partial while the job runs, final at `done`."}}}]},"PeopleExistsResult":{"type":"object","description":"Every URL lands in exactly one bucket.","required":["matched","not_matched","invalid"],"properties":{"matched":{"type":"array","items":{"$ref":"#/components/schemas/PeopleExistsMatch"}},"not_matched":{"type":"array","items":{"$ref":"#/components/schemas/PeopleExistsNotMatched"}},"invalid":{"type":"array","items":{"$ref":"#/components/schemas/PeopleExistsInvalid"}}}},"PeopleExistsMetadata":{"type":"object","required":["timestamp","total","matched_count","not_matched_count","invalid_count"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"total":{"type":"integer","minimum":0,"description":"Items in the request."},"matched_count":{"type":"integer","minimum":0,"description":"Items in `matched`."},"not_matched_count":{"type":"integer","minimum":0,"description":"Items in `not_matched`."},"invalid_count":{"type":"integer","minimum":0,"description":"Items in `invalid`."}},"additionalProperties":true,"description":"`metadata` of an exists check: the bucket counts."},"PeopleSaveResult":{"type":"object","description":"Every item in one of four buckets, echoing its `identifier`: `saved` (`matched_by`: `id` or `linkedin_url`), `not_matched`, `invalid`, `failed` (`needs_credits` or `save_failed`: retrying is safe).","required":["saved","not_matched","invalid","failed"],"properties":{"saved":{"type":"array","items":{"$ref":"#/components/schemas/PersonSaveSaved"}},"not_matched":{"type":"array","items":{"$ref":"#/components/schemas/SaveNotMatched"}},"invalid":{"type":"array","items":{"$ref":"#/components/schemas/SaveInvalid"}},"failed":{"type":"array","items":{"$ref":"#/components/schemas/SaveFailed"}}}},"PeopleSaveSearchJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["people_save_search"]},"result":{"allOf":[{"$ref":"#/components/schemas/SaveRunResult"}],"description":"Partial while the job runs, final at `done`."}}}]},"PeopleSearchMetadata":{"type":"object","required":["timestamp","sort_by","sort_direction","pagination"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"sort_by":{"type":"string","description":"The sort applied: the `sort_by` sent, `followers` (the default, also when a large result set falls back to it), or `person.linkedin_url` for a URL lookup, which keeps the order of the URLs."},"sort_direction":{"$ref":"#/components/schemas/SortDirection"},"pagination":{"$ref":"#/components/schemas/PeopleSearchPagination"},"company_filter":{"$ref":"#/components/schemas/PeopleSearchCompanyFilter"}},"additionalProperties":true},"Company":{"type":"object","description":"A company of the GetProspect database, with your workspace's `saved` block. When the workspace renamed the company (`companies_edits_update`), `name` is that name and `saved.edits.name` says so.","required":["id","name","description","logo","website","email","linkedin_url","social_networks","industry","keywords","naics_codes","type","business_type","revenue_stream","founded","employee_count","employee_range","location","other_locations","saved"],"properties":{"id":{"type":"string","pattern":"^[0-9a-f]{24}$","description":"The GetProspect company id: `GET /v2/companies/{id}`, `company.id` filters, saves."},"name":{"type":"string","nullable":true},"description":{"type":"string","nullable":true,"description":"What the company does, in its own words."},"logo":{"type":"string","format":"uri","nullable":true,"description":"Logo image URL; null without one."},"website":{"type":"string","nullable":true,"description":"The main web domain or site, as published (no scheme, e.g. `intercom.com`)."},"email":{"type":"object","description":"Email facts of the company.","required":["domain","provider"],"properties":{"domain":{"type":"string","nullable":true,"description":"The domain its staff email addresses use."},"provider":{"type":"string","nullable":true,"description":"Reserved; always null today."}}},"linkedin_url":{"type":"string","format":"uri","nullable":true,"description":"The LinkedIn company page."},"social_networks":{"$ref":"#/components/schemas/CompanySocialNetworks"},"industry":{"type":"string","nullable":true,"description":"One of `GET /v2/enums/industries`.","x-getprospect-enum":"industries"},"keywords":{"type":"array","items":{"type":"string"},"description":"Specialties the company lists (`[]` without any)."},"naics_codes":{"type":"array","items":{"type":"integer"},"description":"NAICS industry codes (`[]` without any)."},"type":{"type":"string","nullable":true,"description":"Legal or ownership type, one of `GET /v2/enums/company_types`.","x-getprospect-enum":"company_types"},"business_type":{"type":"string","nullable":true,"description":"Audience, one of `GET /v2/enums/business_types`.","x-getprospect-enum":"business_types"},"revenue_stream":{"type":"string","nullable":true,"description":"Revenue model, one of `GET /v2/enums/revenue_streams`.","x-getprospect-enum":"revenue_streams"},"founded":{"type":"integer","nullable":true,"description":"Year founded."},"employee_count":{"type":"integer","nullable":true,"description":"Headcount, when the exact figure is known."},"employee_range":{"type":"string","nullable":true,"description":"Headcount band, one of `GET /v2/enums/employee_ranges`.","x-getprospect-enum":"employee_ranges"},"location":{"$ref":"#/components/schemas/CompanyLocation"},"other_locations":{"type":"array","items":{"$ref":"#/components/schemas/CompanyLocation"},"description":"Other offices (`[]` without any)."},"technologies":{"type":"array","items":{"$ref":"#/components/schemas/CompanyTechnology"},"description":"Technologies detected on the website, most prominent category first (`[]` when none were detected or the website has not been scanned yet). Present only on Companies Enrich and Companies Get - the App sidebar; omitted (not merely empty) from Companies Search, Companies Bulk Enrich, People Search / Enrich and exports."},"technologies_checked_at":{"type":"string","format":"date-time","nullable":true,"description":"When the website was last scanned successfully; null when never scanned. Present only alongside `technologies`, on Companies Enrich and Companies Get."},"saved":{"$ref":"#/components/schemas/CompanySaved"}}},"CompaniesEditsUpdateResult":{"type":"object","required":["id","edits"],"properties":{"id":{"type":"string","description":"The company id."},"edits":{"$ref":"#/components/schemas/CompanyEdits"}}},"CompaniesBulkEnrichItem":{"type":"object","properties":{"identifier":{"type":"string","description":"Client-supplied correlation key echoed back in the response. If omitted, the item index is used."},"id":{"type":"string","description":"The GetProspect company `id`, as returned by Company Search and in People Search results."},"linkedin_id":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"The LinkedIn company ID (numeric, string or number)."},"linkedin_url":{"type":"string","description":"The LinkedIn company URL."},"domain":{"type":"string","description":"The company domain."},"name":{"type":"string","description":"The company name."}}},"CompaniesBulkEnrichResult":{"type":"object","description":"Every item lands in exactly one bucket.","required":["matched","not_matched","invalid"],"properties":{"matched":{"type":"array","items":{"$ref":"#/components/schemas/CompaniesBulkEnrichMatched"}},"not_matched":{"type":"array","items":{"$ref":"#/components/schemas/CompaniesBulkEnrichNotMatched"}},"invalid":{"type":"array","items":{"$ref":"#/components/schemas/CompaniesBulkEnrichInvalid"}}}},"CompaniesBulkEnrichMetadata":{"type":"object","required":["timestamp","total","matched_count","not_matched_count","invalid_count"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"total":{"type":"integer","minimum":0,"description":"Items in the request (1-50)."},"matched_count":{"type":"integer","minimum":0,"description":"Items in `matched`."},"not_matched_count":{"type":"integer","minimum":0,"description":"Items in `not_matched`."},"invalid_count":{"type":"integer","minimum":0,"description":"Items in `invalid`."}},"additionalProperties":true,"description":"`metadata` of a bulk company enrich: the bucket counts."},"CompaniesEnrichLookup":{"type":"object","properties":{"id":{"type":"string","description":"The GetProspect company `id`, as returned by Company Search and in People Search results."},"linkedin_id":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"The LinkedIn company ID (numeric, accepted as string or number), e.g. 2491343."},"linkedin_url":{"type":"string","description":"The LinkedIn company URL (e.g. \"https://linkedin.com/company/stripe\")."},"domain":{"type":"string","description":"The company domain (e.g. \"stripe.com\")."},"name":{"type":"string","description":"The company name (e.g. \"Stripe\")."}}},"CompaniesEnrichMetadata":{"type":"object","required":["timestamp"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"matched_by":{"$ref":"#/components/schemas/CompanyLookupField"}},"additionalProperties":true,"description":"`metadata` of a company enrich: `matched_by` names the key that found the company (absent when none matched)."},"CompanySaveItem":{"type":"object","properties":{"identifier":{"type":"string","description":"Your correlation key, echoed on the item in whichever bucket it lands. Default: the item index."},"id":{"type":"string","description":"The GetProspect company `id` (Company Search, Companies Enrich)."},"linkedin_id":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"The LinkedIn company id."},"linkedin_url":{"type":"string","description":"The LinkedIn company URL."},"domain":{"type":"string","description":"The company web domain."}}},"CompaniesSaveResult":{"type":"object","description":"Every item lands in exactly one bucket, in request order. An unknown, erased or workspace-blocked company lands in `not_matched`; a ledger failure puts every resolved item in `failed` (`save_failed`).","required":["saved","not_matched","invalid","failed"],"properties":{"saved":{"type":"array","items":{"$ref":"#/components/schemas/CompanySaveSaved"}},"not_matched":{"type":"array","items":{"$ref":"#/components/schemas/SaveNotMatched"}},"invalid":{"type":"array","items":{"$ref":"#/components/schemas/SaveInvalid"}},"failed":{"type":"array","items":{"$ref":"#/components/schemas/SaveFailed"}}}},"CompanyFilters":{"type":"object","properties":{"company":{"description":"Look up specific companies you already know - by our own `id` (the exact one, as returned by Company Enrich), by exact `name`, by web `domain`, or by numeric `linkedin_id`. The same keys as People Search's `company` filter.","example":{"domain":{"include":["intercom.com","stripe.com"]}},"allOf":[{"$ref":"#/components/schemas/CompanyIdentityFilters"}]},"company_industry":{"description":"Industry name, or one of the category GROUP names GET /v2/enums/industries groups them under - a group matches every industry in that category. Same vocabulary as People Search's own company_industry.","example":{"include":["Software & Internet","IT Services & IT Consulting"],"exclude":["Staffing & Recruiting"]},"allOf":[{"$ref":"#/components/schemas/CompanyFilterStrings"}]},"company_type":{"description":"Company legal/ownership type (see GET /v2/enums/company_types). Values match case-insensitively.","example":{"include":["Privately Held","Public Company"]},"allOf":[{"$ref":"#/components/schemas/CompanyTypeFilter"}]},"company_business_type":{"description":"Audience type (see GET /v2/enums/business_types). Values: B2B, B2C, Nonprofit, Unknown.","example":{"include":["B2B"]},"allOf":[{"$ref":"#/components/schemas/BusinessTypeFilter"}]},"company_revenue_stream":{"description":"Revenue model (see GET /v2/enums/revenue_streams). Values match case-insensitively.","example":{"include":["Subscriptions / Recurring","Product Sales"]},"allOf":[{"$ref":"#/components/schemas/RevenueStreamFilter"}]},"company_country":{"description":"Country as ISO-3166-1 alpha-2 codes (see GET /v2/enums/countries). Matches any office location by default; set `headquarters_only: true` to match the registered headquarters country only.","example":{"include":["US","CA"],"headquarters_only":true},"allOf":[{"$ref":"#/components/schemas/CompanyFilterCountry"}]},"company_location":{"description":"Company location as unified location strings - a country (\"United States\"), a state (\"Texas, United States\"), a city (\"San Francisco, California, United States\") or a region (\"EMEA\"). Same format and vocabulary as People Search's company_location and person_location. Any resolved office counts by default; see headquarters_only. Use `company_country` instead when you already hold ISO-3166-1 alpha-2 codes.","example":{"include":["San Francisco, California, United States"],"headquarters_only":true},"allOf":[{"$ref":"#/components/schemas/CompanyLocationFilter"}]},"company_headcount_range":{"type":"array","minItems":1,"maxItems":8,"description":"Bucketed headcount range (see GET /v2/enums/employee_ranges). 1-8 buckets.","example":["51-200","201-500"],"items":{"$ref":"#/components/schemas/CompanyEmployeeRange"}},"company_headcount_custom":{"description":"Raw headcount range. min/max are inclusive; either may be omitted.","example":{"min":100,"max":5000},"allOf":[{"$ref":"#/components/schemas/CompanyFilterRange"}]},"company_founded":{"description":"Founded year range. min/max are inclusive; either may be omitted.","example":{"min":2010,"max":2020},"allOf":[{"$ref":"#/components/schemas/CompanyFilterRange"}]},"company_naics":{"description":"NAICS codes (numeric). Matches when any of the company's codes is in the list.","example":{"include":[541511,541512]},"allOf":[{"$ref":"#/components/schemas/CompanyFilterNumbers"}]},"company_technologies":{"description":"Web technologies detected on the company website, by id: the `value` of a `POST /v2/search/suggest` row with `type: technology` and `kind: technology`. Websites are rescanned every 30 days.","example":{"include":["3421"],"match_mode":"ANY"},"allOf":[{"$ref":"#/components/schemas/CompanyTechnologiesFilter"}]},"company_technology_categories":{"description":"Technology categories (CMS, Ecommerce, Analytics, ...), by id: the `value` of a suggest row with `kind: category`. A category matches a company using any technology in it.","example":{"include":["1"]},"allOf":[{"$ref":"#/components/schemas/CompanyTechnologyCategoriesFilter"}]},"company_keywords":{"description":"Free-text keyword match across selected source fields (see GET /v2/enums/keywords_sources). When this filter is active, results are ranked by relevance first.","example":{"include":["customer support","help desk"],"include_all":true,"sources":["specialties"]},"allOf":[{"$ref":"#/components/schemas/KeywordsFilter"}]}}},"CompanySortBy":{"type":"string","enum":["company_name","company_employee_count","company_industry","company_country","company_founded","company_saved_at"],"description":"Sort key. Omit for the smart default: relevance when `filters.company_keywords` is present, followers desc otherwise."},"CompaniesSearchMetadata":{"type":"object","required":["timestamp","sort_by","sort_direction","pagination"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"sort_by":{"type":"string","description":"The sort applied: the `sort_by` sent, else `relevance` (with `filters.company_keywords`) or `followers`.","enum":["company_name","company_employee_count","company_industry","company_country","company_founded","company_saved_at","relevance","followers"]},"sort_direction":{"$ref":"#/components/schemas/SortDirection"},"pagination":{"$ref":"#/components/schemas/Pagination"},"company_lists":{"type":"object","description":"Present only when an uploaded list reference was capped.","properties":{"truncated":{"type":"boolean"}}}},"additionalProperties":true,"description":"`metadata` of a companies search page."},"EmailFindResult":{"type":"object","description":"The outcome of one email find.","required":["email","status","account","domain","domain_status","smtp_provider","free_email"],"properties":{"email":{"type":"string","nullable":true,"description":"The address found; null when `status` is `not_found`."},"status":{"$ref":"#/components/schemas/EmailFindStatus"},"account":{"type":"string","nullable":true,"description":"The part of the address before `@`."},"domain":{"type":"string","nullable":true,"description":"The email domain searched or found."},"domain_status":{"$ref":"#/components/schemas/EmailDomainStatus"},"smtp_provider":{"type":"string","nullable":true,"description":"The domain's mail server host (MX), e.g. `aspmx.l.google.com`."},"free_email":{"type":"boolean","nullable":true,"description":"Whether the domain is a free mailbox provider (gmail.com, ...); null when unknown."}}},"EmailEnvelopeMetadata":{"type":"object","required":["timestamp"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"credits":{"type":"object","description":"The balances after this call. Absent when they could not be read.","properties":{"email_search":{"type":"integer","description":"Email credits left (find)."},"email_verification":{"type":"integer","description":"Email verification credits left (verify)."},"reset_at":{"type":"string","format":"date-time","nullable":true,"description":"When the plan credits renew; null without a subscription."}}}},"additionalProperties":true},"EmailVerification":{"type":"object","description":"One bulk email verification job over an uploaded file.","required":["id","name","source","status","stopped_reason","counts","batches","progress_percent","result_files","result_expires_at","owner","created_by","error","created_at","updated_at"],"properties":{"id":{"type":"string","description":"Job id."},"name":{"type":"string","description":"Display name (defaults to the file's name)."},"source":{"$ref":"#/components/schemas/EmailVerificationSource"},"status":{"$ref":"#/components/schemas/EmailVerificationStatus"},"stopped_reason":{"type":"string","nullable":true,"description":"Why a job stopped early (for example an automatic cancel); null otherwise."},"counts":{"type":"object","description":"Row counters, filled while the job counts and verifies.","required":["total_rows","parsed_rows","billable","duplicates","invalid_syntax","blank","verified","valid","invalid","accept_all","unknown"],"properties":{"total_rows":{"type":"integer","minimum":0,"description":"Rows in the file (0 until known)."},"parsed_rows":{"type":"integer","minimum":0,"description":"Rows read so far."},"billable":{"type":"integer","minimum":0,"description":"Unique valid-syntax addresses: what `start` charges."},"duplicates":{"type":"integer","minimum":0,"description":"Rows repeating an earlier address."},"invalid_syntax":{"type":"integer","minimum":0,"description":"Rows whose cell is not an email address."},"blank":{"type":"integer","minimum":0,"description":"Rows with an empty email cell."},"verified":{"type":"integer","minimum":0,"description":"Addresses verified so far."},"valid":{"type":"integer","minimum":0,"description":"Verified `valid`."},"invalid":{"type":"integer","minimum":0,"description":"Verified `invalid`."},"accept_all":{"type":"integer","minimum":0,"description":"Verified `accept_all`."},"unknown":{"type":"integer","minimum":0,"description":"Verified `unknown`."}}},"batches":{"type":"object","required":["total","done"],"properties":{"total":{"type":"integer","minimum":0,"description":"Verification batches."},"done":{"type":"integer","minimum":0,"description":"Batches finished."}}},"progress_percent":{"type":"integer","minimum":0,"maximum":100,"description":"Progress of the current stage."},"result_files":{"type":"object","nullable":true,"description":"The result CSVs; only on a `completed` job.","required":["all","valid","invalid"],"properties":{"all":{"type":"object","nullable":true,"required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"Signed download link (expires)."}}},"valid":{"type":"object","nullable":true,"required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"Signed download link (expires)."}}},"invalid":{"type":"object","nullable":true,"required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"Signed download link (expires)."}}}}},"result_expires_at":{"type":"string","format":"date-time","nullable":true,"description":"When the result files are deleted; only on a `completed` job."},"owner":{"type":"object","nullable":true,"description":"Who created the job; null when that user is gone. The `UserRef` fields; carries no email.","required":["id","first_name","last_name","photo_url"],"properties":{"id":{"type":"string","description":"The user id."},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"photo_url":{"type":"string","nullable":true,"description":"Profile photo URL; null without one."}}},"created_by":{"type":"object","nullable":true,"deprecated":true,"description":"Who created the job. Deprecated: read `owner`.","required":["id","name"],"properties":{"id":{"type":"string","description":"User id."},"name":{"type":"string","nullable":true,"description":"First and last name, else the email; null when neither."}}},"error":{"type":"string","nullable":true,"description":"Why the job failed; null otherwise."},"created_at":{"type":"string","format":"date-time","nullable":true,"description":"When the job was created."},"updated_at":{"type":"string","format":"date-time","nullable":true,"description":"When the job last changed."}}},"EmailVerificationsListMetadata":{"type":"object","required":["timestamp","pagination"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"pagination":{"allOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"object","required":["page_size"],"properties":{"per_page":{"type":"integer","minimum":1,"maximum":100,"description":"Items per page."},"page_size":{"type":"integer","minimum":1,"maximum":100,"deprecated":true,"description":"The same as `per_page`. Deprecated: read `per_page`."}}}]}},"additionalProperties":true},"EmailVerificationHistoryEntry":{"type":"object","description":"One single verification (`email_verify`) of the last 30 days.","required":["id","email","status","provider","domain","free_email","owner","verified_by","created_at"],"properties":{"id":{"type":"string","description":"History entry id."},"email":{"type":"string","description":"The address verified."},"status":{"$ref":"#/components/schemas/EmailVerifyStatus"},"provider":{"type":"string","description":"The domain's mail server host; empty when unknown."},"domain":{"type":"string","description":"The email domain; empty when the address had none."},"free_email":{"type":"boolean","nullable":true,"description":"Free mailbox provider; null when unknown."},"owner":{"type":"object","nullable":true,"description":"Who ran the verification; null when that user is gone. The `UserRef` fields; carries no email.","required":["id","first_name","last_name","photo_url"],"properties":{"id":{"type":"string","description":"The user id."},"first_name":{"type":"string","nullable":true},"last_name":{"type":"string","nullable":true},"photo_url":{"type":"string","nullable":true,"description":"Profile photo URL; null without one."}}},"verified_by":{"type":"object","nullable":true,"deprecated":true,"description":"Who ran the verification. Deprecated: read `owner`.","required":["id","name"],"properties":{"id":{"type":"string","description":"User id."},"name":{"type":"string","nullable":true,"description":"First and last name, else the email; null when neither."}}},"created_at":{"type":"string","format":"date-time","nullable":true,"description":"When it was verified."}}},"EmailVerificationResult":{"type":"object","description":"The deliverability verdict of one address.","required":["email","status","account","domain","domain_status","smtp_provider","free_email"],"properties":{"email":{"type":"string","description":"The address checked, trimmed and lower-cased."},"status":{"$ref":"#/components/schemas/EmailVerifyStatus"},"account":{"type":"string","description":"The part of the address before `@`."},"domain":{"type":"string","description":"The part of the address after `@`."},"domain_status":{"type":"string","description":"Deliverability of the domain, one of the non-null `EmailDomainStatus` values; an empty string when the verifier reported none."},"smtp_provider":{"type":"string","description":"The domain's mail server host (MX); `unknown` or an empty string when it was not reached."},"free_email":{"type":"boolean","nullable":true,"description":"Whether the domain is a free mailbox provider (gmail.com, ...); null when unknown."}}},"EmailFindLookup":{"type":"object","properties":{"full_name":{"type":"string","description":"The contact's full name (e.g. \"Dmytro Shulha\"). Use instead of first_name + last_name."},"first_name":{"type":"string","description":"The contact's first name (e.g. \"Dmytro\"). Required if full_name is not provided."},"last_name":{"type":"string","description":"The contact's last name (e.g. \"Shulha\"). Required when first_name is provided."},"domain":{"type":"string","description":"The company domain (e.g. \"getprospect.com\"). Provides the best results."},"company":{"type":"string","description":"The company name (e.g. \"GetProspect\"). Used as a fallback when domain is not provided."}}},"EmailVerifyLookup":{"type":"object","properties":{"email":{"type":"string","description":"The email address you want to verify."}},"required":["email"]},"MatchingTitle":{"type":"object","description":"A raw LinkedIn title the expression matches, with how many people hold it.","required":["title","count"],"properties":{"title":{"type":"string","description":"The title as People Search returns it in `job_title`."},"count":{"type":"integer","minimum":0,"description":"Estimated people holding the title, over the whole database (your other filters ignored)."}}},"SearchMatchingTitlesMetadata":{"type":"object","required":["timestamp","limit","returned","cached"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"limit":{"type":"integer","minimum":1,"maximum":50,"description":"The `limit` applied."},"returned":{"type":"integer","minimum":0,"description":"Rows in `data`."},"cached":{"type":"boolean","description":"Whether the answer came from the one-hour cache."}},"additionalProperties":true,"description":"`metadata` of `search_matching_titles`."},"SuggestType":{"type":"string","enum":["location","job_title","industry","company_keywords","person","company","technology"],"description":"Which vocabulary to suggest from. `location` = unified location strings for person_location / company_location, with structured parts and a level (region / country / state / city; regions like EMEA or APAC also carry `country_codes` - their member countries); `job_title` = catalog titles for person_job_title (typing an abbreviation like \"ceo\" suggests its canonical title); `industry` = accepted company_industry values, each with its category group; `company_keywords` = company specialties for the company_keywords filter on both People Search and Company Search, each row carrying a `company_count`, ordered by popularity when browsing and by relevance when searching; `person` = people matching the typed name, each carrying the id `person.id` accepts, their current job title, and their company with its logo; `company` = companies matching the typed name or domain prefix, each carrying the id `company.id` (People Search) accepts, a domain attached to the company (its website when none is attached), logo, industry and employee range - `value` is the canonical name `company.name` accepts; `technology` = web technologies and technology categories for the company_technologies / company_technology_categories filters (Company Search and People Search): categories first, then technologies, each by how many companies use it; `kind` says which filter `value` (the id) goes to."},"Suggestion":{"description":"One suggestion row. `type` says which vocabulary it belongs to and so which fields it carries.","oneOf":[{"$ref":"#/components/schemas/LocationSuggestion"},{"$ref":"#/components/schemas/JobTitleSuggestion"},{"$ref":"#/components/schemas/IndustrySuggestion"},{"$ref":"#/components/schemas/CompanyKeywordSuggestion"},{"$ref":"#/components/schemas/PersonSuggestion"},{"$ref":"#/components/schemas/CompanySuggestion"},{"$ref":"#/components/schemas/TechnologySuggestion"}],"discriminator":{"propertyName":"type","mapping":{"location":"#/components/schemas/LocationSuggestion","job_title":"#/components/schemas/JobTitleSuggestion","industry":"#/components/schemas/IndustrySuggestion","company_keywords":"#/components/schemas/CompanyKeywordSuggestion","person":"#/components/schemas/PersonSuggestion","company":"#/components/schemas/CompanySuggestion","technology":"#/components/schemas/TechnologySuggestion"}}},"SearchSuggestMetadata":{"type":"object","required":["timestamp","type","query"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"type":{"$ref":"#/components/schemas/SuggestType"},"query":{"type":"string","description":"The query as matched (trimmed); empty in browse mode."}},"additionalProperties":true,"description":"`metadata` of `search_suggest`: the envelope timestamp plus what was asked."},"Enums":{"type":"object","description":"Every vocabulary, by name. A vocabulary added later appears as one more key, a flat list or a grouped map.","required":["industries","countries","employee_ranges","company_types","business_types","revenue_streams","keywords_sources","departments","seniorities","regions"],"properties":{"industries":{"type":"object","description":"A grouped vocabulary: category -> its values. The filter accepts a category name (the whole group) or any value; `regions` maps each region to its member ISO 3166-1 alpha-2 country codes.","additionalProperties":{"type":"array","items":{"type":"string"}}},"countries":{"type":"array","description":"A flat vocabulary: the values the matching filter accepts, as-is.","items":{"type":"string"}},"employee_ranges":{"type":"array","description":"A flat vocabulary: the values the matching filter accepts, as-is.","items":{"type":"string"}},"company_types":{"type":"array","description":"A flat vocabulary: the values the matching filter accepts, as-is.","items":{"type":"string"}},"business_types":{"type":"array","description":"A flat vocabulary: the values the matching filter accepts, as-is.","items":{"type":"string"}},"revenue_streams":{"type":"array","description":"A flat vocabulary: the values the matching filter accepts, as-is.","items":{"type":"string"}},"keywords_sources":{"type":"array","description":"A flat vocabulary: the values the matching filter accepts, as-is.","items":{"type":"string"}},"departments":{"type":"object","description":"A grouped vocabulary: category -> its values. The filter accepts a category name (the whole group) or any value; `regions` maps each region to its member ISO 3166-1 alpha-2 country codes.","additionalProperties":{"type":"array","items":{"type":"string"}}},"seniorities":{"type":"array","description":"A flat vocabulary: the values the matching filter accepts, as-is.","items":{"type":"string"}},"regions":{"type":"object","description":"A grouped vocabulary: category -> its values. The filter accepts a category name (the whole group) or any value; `regions` maps each region to its member ISO 3166-1 alpha-2 country codes.","additionalProperties":{"type":"array","items":{"type":"string"}}}}},"EnumValues":{"description":"One vocabulary: a flat list of strings (the values the matching filter accepts, as-is), or, for a grouped vocabulary (see `EnumName`), a map of category -> its values. The filter accepts a category name (the whole group) or any value; `regions` maps each region to its member ISO 3166-1 alpha-2 country codes."},"ApiLog":{"type":"object","description":"One request an API key made, as the request log stored it (kept 15 days).","required":["id","time","key_id","key_name","method","path","status_code","duration_ms","request_body"],"properties":{"id":{"type":"string","description":"The log row id."},"time":{"type":"string","format":"date-time","nullable":true,"description":"When the request arrived."},"key_id":{"type":"string","nullable":true,"description":"The API key that made it."},"key_name":{"type":"string","description":"That key's name; `Deleted key` once the key is gone."},"method":{"type":"string","description":"The HTTP method, e.g. `POST`."},"path":{"type":"string","description":"The request path, without the query string."},"status_code":{"type":"integer","description":"The HTTP status answered."},"duration_ms":{"type":"integer","minimum":0,"description":"How long the answer took, in milliseconds."},"request_body":{"type":"string","nullable":true,"description":"The request body as JSON (the query parameters for a GET), secrets redacted and long bodies truncated; null when there is none."}}},"ApiLogsListMetadata":{"type":"object","required":["timestamp","pagination"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"pagination":{"$ref":"#/components/schemas/CursorPagination"}},"additionalProperties":true,"description":"`metadata` of `api_logs_list`."},"RateLimitStatus":{"type":"object","description":"The workspace's rate limits and how much of each bucket it has used.","required":["tier","plan_name","enforced_channels","enforced","buckets"],"properties":{"tier":{"$ref":"#/components/schemas/RateLimitTier"},"plan_name":{"type":"string","nullable":true,"description":"The workspace's plan name; null without a plan."},"enforced_channels":{"type":"array","items":{"$ref":"#/components/schemas/RequestChannel"},"description":"The channels that get a real 429 over a limit; every other channel is only counted."},"enforced":{"type":"boolean","description":"Whether the caller's own channel gets a real 429 over a limit (always false for `system`)."},"buckets":{"$ref":"#/components/schemas/RateLimitBuckets"}}},"Job":{"description":"An asynchronous job, read with `GET /v2/jobs/{id}`. Resource-backed jobs (exports, CSV enrichments, email verifications) carry no `result`: read the resource at `resource_url`.","oneOf":[{"$ref":"#/components/schemas/PeopleExportJob"},{"$ref":"#/components/schemas/CompaniesExportJob"},{"$ref":"#/components/schemas/CsvEnrichmentJob"},{"$ref":"#/components/schemas/EmailVerificationJob"},{"$ref":"#/components/schemas/PeopleDeleteJob"},{"$ref":"#/components/schemas/CompaniesDeleteJob"},{"$ref":"#/components/schemas/PeopleListsSetJob"},{"$ref":"#/components/schemas/CompaniesListsSetJob"},{"$ref":"#/components/schemas/ListDeleteJob"},{"$ref":"#/components/schemas/TrashRestoreJob"},{"$ref":"#/components/schemas/IntegrationPushAllJob"},{"$ref":"#/components/schemas/PeopleSaveSearchJob"},{"$ref":"#/components/schemas/PeopleEnrichSearchJob"},{"$ref":"#/components/schemas/CompaniesSaveSearchJob"},{"$ref":"#/components/schemas/SequencesLeadsEnrollJob"},{"$ref":"#/components/schemas/SequencesLeadsPauseJob"},{"$ref":"#/components/schemas/SequencesLeadsOptOutJob"},{"$ref":"#/components/schemas/SequencesLeadsResumeJob"},{"$ref":"#/components/schemas/SequencesLeadsRemoveJob"}],"discriminator":{"propertyName":"type","mapping":{"people_export":"#/components/schemas/PeopleExportJob","companies_export":"#/components/schemas/CompaniesExportJob","csv_enrichment":"#/components/schemas/CsvEnrichmentJob","email_verification":"#/components/schemas/EmailVerificationJob","people_delete":"#/components/schemas/PeopleDeleteJob","companies_delete":"#/components/schemas/CompaniesDeleteJob","people_lists_set":"#/components/schemas/PeopleListsSetJob","companies_lists_set":"#/components/schemas/CompaniesListsSetJob","list_delete":"#/components/schemas/ListDeleteJob","trash_restore":"#/components/schemas/TrashRestoreJob","integration_push_all":"#/components/schemas/IntegrationPushAllJob","people_save_search":"#/components/schemas/PeopleSaveSearchJob","people_enrich_search":"#/components/schemas/PeopleEnrichSearchJob","companies_save_search":"#/components/schemas/CompaniesSaveSearchJob","sequences_leads_enroll":"#/components/schemas/SequencesLeadsEnrollJob","sequences_leads_pause":"#/components/schemas/SequencesLeadsPauseJob","sequences_leads_opt_out":"#/components/schemas/SequencesLeadsOptOutJob","sequences_leads_resume":"#/components/schemas/SequencesLeadsResumeJob","sequences_leads_remove":"#/components/schemas/SequencesLeadsRemoveJob"}}},"Me":{"type":"object","description":"The person the credential belongs to, the workspace it acts in and how the request authenticated.","required":["id","email","pending_email","first_name","last_name","phone","country","timezone","profile_photo","linkedin_url","email_verified","phone_verified","status","created_at","workspace","auth"],"properties":{"id":{"type":"string","description":"The user id (24 hex characters), as `owner.id` elsewhere."},"email":{"type":"string","nullable":true,"description":"The account email address.","format":"email"},"pending_email":{"type":"string","nullable":true,"description":"A new address awaiting confirmation after an email change (the code or link was sent to it); else null.","format":"email"},"first_name":{"type":"string","nullable":true,"description":"First name."},"last_name":{"type":"string","nullable":true,"description":"Last name."},"phone":{"type":"string","nullable":true,"description":"The phone number (E.164); null when none."},"country":{"type":"string","nullable":true,"description":"Country, ISO 3166-1 alpha-2 as stored (lower case)."},"timezone":{"type":"string","nullable":true,"description":"IANA time zone, e.g. `Europe/Madrid`."},"profile_photo":{"type":"string","nullable":true,"description":"Profile photo URL."},"linkedin_url":{"type":"string","nullable":true,"description":"LinkedIn profile URL."},"email_verified":{"type":"boolean","description":"Whether the email address is confirmed."},"phone_verified":{"type":"boolean","description":"Whether the phone number is confirmed."},"status":{"$ref":"#/components/schemas/AccountStatus"},"created_at":{"type":"string","nullable":true,"description":"When the account was created.","format":"date-time"},"workspace":{"description":"The workspace the credential acts in; null when the credential carries none.","anyOf":[{"$ref":"#/components/schemas/WorkspaceRef"},{"type":"object","nullable":true,"enum":[null]}]},"auth":{"$ref":"#/components/schemas/MeAuth"}}},"Subscription":{"type":"object","nullable":true,"description":"The workspace's plan, billing cycle, phone add-on, pause and discount; null where the workspace has none.","required":["status","plan","quantity","billing_cycle","started_at","expires_at","next_plan","phone_addon","pause","discount","payer","gateway"],"properties":{"status":{"$ref":"#/components/schemas/SubscriptionStatus"},"plan":{"$ref":"#/components/schemas/PlanSummary"},"quantity":{"type":"integer","description":"Units of the plan (seats or credit multiples). Its credits are `quantity` times `plan.credits`."},"billing_cycle":{"type":"object","nullable":true,"description":"The billing cycle (the `BillingCycle` fields); null when none is set.","required":["id","name","period","discount"],"properties":{"id":{"type":"string","pattern":"^[0-9a-f]{24}$","description":"The billing cycle id."},"name":{"type":"string","nullable":true,"description":"Display name, e.g. `Monthly`."},"period":{"type":"string","nullable":true,"description":"The cycle length, e.g. `month` or `year`."},"discount":{"type":"number","nullable":true,"description":"Discount in percent this cycle gives."}}},"started_at":{"type":"string","format":"date-time","nullable":true,"description":"Start of the current period."},"expires_at":{"type":"string","format":"date-time","nullable":true,"description":"End of the current period: when it renews and the credits reset."},"next_plan":{"$ref":"#/components/schemas/PlanSummary"},"phone_addon":{"type":"object","description":"The phone add-on.","required":["status","plan","quantity"],"properties":{"status":{"type":"string","nullable":true,"description":"The add-on status: `active`, `pause` or `disabled`.","enum":["active","pause","disabled",null]},"plan":{"$ref":"#/components/schemas/PlanSummary"},"quantity":{"type":"integer","description":"Phone units."}}},"pause":{"type":"object","nullable":true,"description":"Set only while `status` is `pause`.","required":["started_at","period_months","discount_percent"],"properties":{"started_at":{"type":"string","format":"date-time","nullable":true,"description":"When the pause was set."},"period_months":{"type":"integer","nullable":true,"description":"Months paused (1-3)."},"discount_percent":{"type":"number","nullable":true,"description":"Discount in percent applied while paused."}}},"discount":{"type":"object","nullable":true,"description":"A running discount; null without one.","required":["percent","status","months_left"],"properties":{"percent":{"type":"number","description":"Discount in percent."},"status":{"type":"string","nullable":true,"description":"The discount state as the payment provider reports it."},"months_left":{"type":"integer","nullable":true,"description":"Billing periods the discount still applies to."}}},"payer":{"type":"string","nullable":true,"description":"Who pays: `individual` or `company`.","enum":["individual","company",null]},"gateway":{"$ref":"#/components/schemas/PaymentGateway"}}},"CreditBalances":{"type":"object","description":"The live balance of each credit type: `email_search` (email find and reveals), `email_verification` (email verification) and `phone_search` (phone numbers).","required":["email_search","email_verification","phone_search","reset_at"],"properties":{"email_search":{"$ref":"#/components/schemas/CreditBalance"},"email_verification":{"$ref":"#/components/schemas/CreditBalance"},"phone_search":{"$ref":"#/components/schemas/CreditBalance"},"reset_at":{"type":"string","format":"date-time","nullable":true,"description":"When the plan's credits next reset (the subscription's expiration); null without one."}}},"UsageSummary":{"type":"object","description":"Credits spent and requests made over the range, in total and as a series.","required":["totals","series"],"properties":{"totals":{"$ref":"#/components/schemas/UsageTotals"},"series":{"type":"array","items":{"$ref":"#/components/schemas/UsageSeriesRow"}}}},"Webhook":{"type":"object","description":"A webhook subscription: where events are POSTed and which event types.","required":["id","url","events","status","disabled_reason","api_version","description","created_by_user_id","api_key_id","last_delivery","created_at","updated_at"],"properties":{"id":{"type":"string","description":"The webhook id."},"url":{"type":"string","format":"uri","description":"Where events are POSTed (https, public host)."},"events":{"type":"array","items":{"$ref":"#/components/schemas/WebhookEventType"},"description":"The event types it receives."},"status":{"$ref":"#/components/schemas/WebhookStatus"},"disabled_reason":{"$ref":"#/components/schemas/WebhookDisabledReason"},"api_version":{"$ref":"#/components/schemas/WebhookApiVersion"},"description":{"type":"string","nullable":true,"description":"The note set on it, or null."},"created_by_user_id":{"type":"string","nullable":true,"description":"The member who created it (the key owner when an API key created it)."},"api_key_id":{"type":"string","nullable":true,"description":"The API key that created it; null when a session or an OAuth token did."},"secret":{"type":"string","description":"The signing secret (`whsec_...`) for `X-GetProspect-Signature`. Only in the `webhooks_create` answer: store it then."},"last_delivery":{"$ref":"#/components/schemas/WebhookLastDelivery"},"created_at":{"type":"string","format":"date-time","nullable":true,"description":"When it was created."},"updated_at":{"type":"string","format":"date-time","nullable":true,"description":"When it last changed."}}},"WebhookListMetadata":{"type":"object","required":["timestamp","pagination"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"pagination":{"$ref":"#/components/schemas/Pagination"}},"additionalProperties":true},"WebhookEventType":{"type":"string","enum":["person.saved","person.email_found","company.saved"],"description":"A webhook event type: `person.saved` (a person entered the saved set), `person.email_found` (a saved person has a valid email the workspace owns), `company.saved` (a company entered the saved set). A webhook takes 1-10, no repeats."},"WebhookApiVersion":{"type":"string","enum":["2026-10"],"description":"The payload version of the events (`2026-10`); defaults to the current one."},"WebhookDelivery":{"type":"object","description":"One event and its delivery state. Only the coarse outcome of the last attempt is kept: never the receiver's body, a raw error or a timing.","required":["id","event_type","status","attempt","delivered","status_class","error_code","next_attempt_at","created_at","updated_at"],"properties":{"id":{"type":"string","description":"The event id (`evt_...`), as sent in the event body and headers."},"event_type":{"type":"string","description":"A `WebhookEventType`, or `webhook.test` for a test event."},"status":{"$ref":"#/components/schemas/WebhookDeliveryStatus"},"attempt":{"type":"integer","minimum":0,"description":"Attempts made so far."},"delivered":{"type":"boolean","description":"The last attempt was answered 2xx."},"status_class":{"$ref":"#/components/schemas/HttpStatusClass"},"error_code":{"$ref":"#/components/schemas/WebhookOutcomeErrorCode"},"next_attempt_at":{"type":"string","format":"date-time","nullable":true,"description":"When the next attempt is due; null unless `pending`."},"created_at":{"type":"string","format":"date-time","nullable":true,"description":"When the event was created."},"updated_at":{"type":"string","format":"date-time","nullable":true,"description":"When its state last changed."}}},"WebhookTestResult":{"type":"object","description":"The coarse outcome of the test event.","required":["delivered","status_class","error_code"],"properties":{"delivered":{"type":"boolean","description":"The receiver answered 2xx."},"status_class":{"$ref":"#/components/schemas/HttpStatusClass"},"error_code":{"$ref":"#/components/schemas/WebhookOutcomeErrorCode"}}},"BlockedCompany":{"type":"object","description":"One company entry of the block list: every company with this domain is blocked.","required":["id","domain","created_at"],"properties":{"id":{"type":"string","pattern":"^[0-9a-f]{24}$","description":"The entry id."},"domain":{"type":"string","description":"The blocked domain. Entries added through v2 hold the bare host (`acme.com`)."},"created_at":{"type":"string","format":"date-time","nullable":true,"description":"When the entry was created; null on a few legacy entries without a creation time."}}},"BlocklistListMetadata":{"type":"object","required":["timestamp","pagination"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"pagination":{"$ref":"#/components/schemas/Pagination"}},"additionalProperties":true},"BlocklistDeleteResult":{"type":"object","description":"What the unblock removed.","required":["deleted_ids"],"properties":{"deleted_ids":{"type":"array","minItems":1,"items":{"type":"string","pattern":"^[0-9a-f]{24}$"},"description":"The entry asked for, plus every other entry of the workspace that blocks the same name or domain. Refresh a cached list after a delete."}}},"BlocklistCompaniesAddItem":{"type":"object","properties":{"domain":{"type":"string","maxLength":200,"example":"acme.com","description":"A domain or a website URL, cleaned to its bare host (`https://www.Acme.com/x` -> `acme.com`). A value that is not a domain goes to `invalid` (`invalid_format`)."},"identifier":{"type":"string","maxLength":200,"description":"Your key for this item, echoed in the answer. Defaults to the item index."}},"description":"One company domain to block.","required":["domain"]},"BlocklistCompaniesAddResult":{"type":"object","description":"Every request item lands in exactly one bucket. `added`: the request wrote the company entry (or added a LinkedIn profile to it). `already_blocked`: the company was already blocked; nothing was written. `invalid`: the item was not applied.","required":["added","already_blocked","invalid"],"properties":{"added":{"type":"array","items":{"$ref":"#/components/schemas/BlocklistCompanyResult"}},"already_blocked":{"type":"array","items":{"$ref":"#/components/schemas/BlocklistCompanyResult"}},"invalid":{"type":"array","items":{"$ref":"#/components/schemas/BulkInvalidItem"}}}},"BulkAddCounts":{"type":"object","description":"`metadata` of a bulk add: item counts beside the envelope timestamp. `total` is `added_count + already_blocked_count + invalid_count`; several items that name one entry each count.","required":["timestamp","total","added_count","already_blocked_count","invalid_count"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"total":{"type":"integer","minimum":1,"description":"Items in the request."},"added_count":{"type":"integer","minimum":0,"description":"Items whose entry this request wrote."},"already_blocked_count":{"type":"integer","minimum":0,"description":"Items whose entry was already there; nothing was written for them."},"invalid_count":{"type":"integer","minimum":0,"description":"Items in `invalid`."}},"additionalProperties":true},"BlockedPerson":{"type":"object","description":"One person entry of the block list. It blocks every person of the workspace with this first and last name (case and punctuation ignored), and the LinkedIn profile when one is set.","required":["id","first_name","last_name","linkedin_url","company_domain","created_at"],"properties":{"id":{"type":"string","pattern":"^[0-9a-f]{24}$","description":"The entry id."},"first_name":{"type":"string","description":"The first name as stored."},"last_name":{"type":"string","description":"The last name as stored."},"linkedin_url":{"type":"string","format":"uri","nullable":true,"description":"The blocked LinkedIn profile, `https://linkedin.com/in/<profile>`; null without one."},"company_domain":{"type":"string","nullable":true,"description":"The domain an older entry was stored with. Informational only: it does not narrow the block to that company. Null on entries added through v2."},"created_at":{"type":"string","format":"date-time","nullable":true,"description":"When the entry was created; null on a few legacy entries without a creation time."}}},"BlocklistPeopleAddItem":{"type":"object","properties":{"first_name":{"type":"string","maxLength":200,"example":"John","description":"First name. Empty, or only spaces, hyphens and apostrophes, puts the item in `invalid` (`missing_field`)."},"last_name":{"type":"string","maxLength":200,"example":"Smith","description":"Last name. Empty, or only spaces, hyphens and apostrophes, puts the item in `invalid` (`missing_field`)."},"linkedin_url":{"type":"string","maxLength":200,"example":"https://linkedin.com/in/john-smith","description":"Also block this LinkedIn profile (`https://linkedin.com/in/<profile>`). Not a profile URL: the item goes to `invalid` (`invalid_format`)."},"identifier":{"type":"string","maxLength":200,"description":"Your key for this item, echoed in the answer. Defaults to the item index."}},"description":"One person to block.","required":["first_name","last_name"]},"BlocklistPeopleAddResult":{"type":"object","description":"Every request item lands in exactly one bucket. `added`: the request wrote the person entry (or added a LinkedIn profile to it). `already_blocked`: the person was already blocked; nothing was written. `invalid`: the item was not applied.","required":["added","already_blocked","invalid"],"properties":{"added":{"type":"array","items":{"$ref":"#/components/schemas/BlocklistPersonResult"}},"already_blocked":{"type":"array","items":{"$ref":"#/components/schemas/BlocklistPersonResult"}},"invalid":{"type":"array","items":{"$ref":"#/components/schemas/BulkInvalidItem"}}}},"Notification":{"type":"object","description":"One in-app message about the workspace: a job finished, a payment failed, credits were reset. Kept 90 days. Read state is shared by the workspace.","required":["id","workspace_id","type","status","title","body","body_format","link","subject_id","read","read_at","created_at"],"properties":{"id":{"type":"string","pattern":"^[0-9a-f]{24}$","description":"The notification id."},"workspace_id":{"type":"integer","description":"The workspace the notification belongs to."},"type":{"type":"string","description":"What the notification is about, in snake_case, for example `reset_credits`, `export`, `import`, `search`, `enrich`, `blocked`, `reached_quota`, `invoice`, `bulk_action`, `csv_enrichment`, `email_verification`, `integration` or `integration_error`. An open vocabulary: accept any value."},"status":{"$ref":"#/components/schemas/NotificationStatus"},"title":{"type":"string","nullable":true,"description":"The headline."},"body":{"type":"string","nullable":true,"description":"The message, as text or HTML (`body_format`)."},"body_format":{"type":"string","enum":["text","html"],"description":"How to render `body`."},"link":{"$ref":"#/components/schemas/NotificationLink"},"subject_id":{"type":"string","nullable":true,"description":"The id of the job the notification reports (an export, a bulk action, a verification file), when the notification names one."},"read":{"type":"boolean","description":"Whether someone in the workspace has marked it read."},"read_at":{"type":"string","format":"date-time","nullable":true,"description":"When it was first marked read; null while unread."},"created_at":{"type":"string","format":"date-time","nullable":true,"description":"When it was sent."}}},"NotificationsListMetadata":{"type":"object","required":["timestamp","pagination","unread_count"],"properties":{"timestamp":{"type":"string","format":"date-time","description":"When the response was built."},"pagination":{"$ref":"#/components/schemas/Pagination"},"unread_count":{"type":"integer","minimum":0,"description":"Unread notifications visible to the caller, whatever the `read` filter: the badge count."}},"additionalProperties":true},"NotificationsMarkReadResult":{"type":"object","required":["updated_count","unread_count"],"properties":{"updated_count":{"type":"integer","minimum":0,"description":"Notifications this call marked read. Ids that are already read, expired, of another workspace or not visible to the caller are skipped and not counted."},"unread_count":{"type":"integer","minimum":0,"description":"Unread notifications visible to the caller after the call."}}},"EventFrame":{"description":"One event, the JSON inside an SSE `data:` line. Dispatch on `type`, and ignore a `type` you do not know: the catalog only grows.","oneOf":[{"$ref":"#/components/schemas/StreamReadyEvent"},{"$ref":"#/components/schemas/NotificationCreatedEvent"},{"$ref":"#/components/schemas/CreditsUpdatedEvent"},{"$ref":"#/components/schemas/SubscriptionUpdatedEvent"},{"$ref":"#/components/schemas/SessionRefreshRequiredEvent"},{"$ref":"#/components/schemas/SessionRevokedEvent"},{"$ref":"#/components/schemas/WorkspaceMemberRemovedEvent"},{"$ref":"#/components/schemas/WorkspaceMembersRemovedEvent"},{"$ref":"#/components/schemas/IntegrationUpdatedEvent"}],"discriminator":{"propertyName":"type","mapping":{"stream.ready":"#/components/schemas/StreamReadyEvent","notification.created":"#/components/schemas/NotificationCreatedEvent","credits.updated":"#/components/schemas/CreditsUpdatedEvent","subscription.updated":"#/components/schemas/SubscriptionUpdatedEvent","session.refresh_required":"#/components/schemas/SessionRefreshRequiredEvent","session.revoked":"#/components/schemas/SessionRevokedEvent","workspace.member_removed":"#/components/schemas/WorkspaceMemberRemovedEvent","workspace.members_removed":"#/components/schemas/WorkspaceMembersRemovedEvent","integration.updated":"#/components/schemas/IntegrationUpdatedEvent"}}},"PersonEmail":{"type":"object","description":"An email slot: whether we hold a deliverable address and whether your workspace sees it. `address` stays null until it is revealed (a paid reveal, or an email your workspace already owns).","required":["status","address","domain","provider","verified_at","checked_at","revealed"],"properties":{"status":{"$ref":"#/components/schemas/PersonEmailStatus"},"address":{"type":"string","nullable":true,"description":"The address; null until revealed.","example":"emily.carter.sample@intercom.com"},"domain":{"type":"string","nullable":true,"description":"The company's email domain; null when the company is not resolved."},"provider":{"type":"string","nullable":true,"description":"The mail provider recorded with the address (e.g. `google.com`); null when none."},"verified_at":{"type":"string","nullable":true,"description":"When the address was last confirmed deliverable; set only when `status` is `valid`.","format":"date-time"},"checked_at":{"type":"string","nullable":true,"description":"The last email-finding attempt for this person at this company, whatever the outcome; null if never.","format":"date-time"},"revealed":{"type":"boolean","description":"True once the address is served to your workspace."}}},"PersonMobilePhone":{"type":"object","description":"The mobile phone slot. Numbers are looked up live with `enrich_phone`; a number your workspace already revealed is served on every later answer.","required":["status","number","revealed","checked_at"],"properties":{"status":{"$ref":"#/components/schemas/PersonPhoneStatus"},"number":{"type":"string","nullable":true,"description":"The number; null until revealed.","example":"+1 555-010-0142"},"revealed":{"type":"boolean","description":"True once the number is served to your workspace."},"checked_at":{"type":"string","nullable":true,"description":"The last provider lookup; null when never asked.","format":"date-time"}}},"PersonLocation":{"type":"object","description":"The person's location. The time zone is derived from the country and state.","required":["city","state","state_code","country","country_code","time_zone","time_zone_offset"],"properties":{"city":{"type":"string","nullable":true,"description":"City."},"state":{"type":"string","nullable":true,"description":"State or region."},"state_code":{"type":"string","nullable":true,"description":"State or region code."},"country":{"type":"string","nullable":true,"description":"Country."},"country_code":{"type":"string","nullable":true,"description":"ISO 3166-1 alpha-2 country code."},"time_zone":{"type":"string","nullable":true,"description":"IANA time zone name, e.g. `America/Los_Angeles`."},"time_zone_offset":{"type":"number","nullable":true,"description":"The current UTC offset in hours (daylight saving applied), e.g. -7 or 5.5."}}},"PersonPosition":{"type":"object","description":"A current role (every stored position is current: there is no end date).","required":["job_title","normalized_job_title","seniority","departments","start_date","company","position_index","id"],"properties":{"job_title":{"type":"string","nullable":true,"description":"The title as written on LinkedIn, else our normalized title.","example":"Senior Product Marketing Manager"},"normalized_job_title":{"type":"string","nullable":true,"description":"Our catalog normalization of the title; null when none matched."},"seniority":{"type":"string","nullable":true,"description":"Seniority (see `GET /v2/enums/seniorities`)."},"departments":{"type":"array","items":{"type":"string"},"description":"Departments and sub-departments (see `GET /v2/enums/departments`)."},"start_date":{"type":"string","nullable":true,"description":"When the role started, `YYYY-MM`; null when unknown.","example":"2024-11"},"company":{"type":"object","nullable":true,"allOf":[{"$ref":"#/components/schemas/PersonPositionCompany"}],"description":"The employer. A role that names no company is null on People Enrich and an object with null fields (`id` and `name` null) on People Search."},"position_index":{"type":"integer","minimum":0,"description":"The role's index among the person's positions; `/v2/people/save` takes it as a pin."},"id":{"type":"string","nullable":true,"description":"The role's own id (`primary_position_id` on `/v2/people/save`); null on older records, use `position_index`."}}},"PersonSaved":{"type":"object","description":"Your workspace's saved state of the person.","required":["id","saved_at","lists"],"properties":{"id":{"type":"string","nullable":true,"description":"Always null (it named a v1 contact). Deprecated: the person `id` addresses the saved record."},"saved_at":{"type":"string","nullable":true,"description":"When your workspace saved the person.","format":"date-time"},"lists":{"type":"array","items":{"$ref":"#/components/schemas/PersonSavedList"},"description":"The lists the person is in."},"edits":{"$ref":"#/components/schemas/PersonEdits"}}},"PeopleMatchedBy":{"type":"string","enum":["id","linkedin_id","linkedin_url","email","name_and_company"],"description":"A person lookup key: the one that found the person (the strongest one sent wins), or one tried.","x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"PersonEdits":{"type":"object","description":"Your workspace's own values for the person; only edited fields are present.","properties":{"first_name":{"type":"string","description":"Your first name for the person."},"last_name":{"type":"string","description":"Your last name for the person."},"email":{"type":"string","description":"Your email address for the person (served as `email.address`)."},"phone":{"type":"string","description":"Your phone number for the person (served as `mobile_phone.number`)."}}},"PeopleBulkEnrichMatch":{"type":"object","description":"An item that found its person.","required":["identifier","matched_by","person"],"properties":{"identifier":{"type":"string","description":"The item's `identifier`, else its index in `data`."},"matched_by":{"$ref":"#/components/schemas/PeopleMatchedBy"},"person":{"$ref":"#/components/schemas/Person"}}},"PeopleBulkEnrichNotMatched":{"type":"object","description":"A valid lookup that found nobody (an unknown and a suppressed person are not told apart).","required":["identifier","attempted"],"properties":{"identifier":{"type":"string","description":"The item's `identifier`, else its index in `data`."},"attempted":{"type":"array","items":{"$ref":"#/components/schemas/PeopleMatchedBy"},"description":"The identifiers tried."}}},"PeopleBulkEnrichInvalid":{"type":"object","description":"An item with no usable identifier.","required":["identifier","reason"],"properties":{"identifier":{"type":"string","description":"The item's `identifier`, else its index in `data`."},"reason":{"type":"string","description":"What is wrong with the item, readable."},"skipped":{"type":"array","description":"Identifiers sent but not usable, each with why.","items":{"$ref":"#/components/schemas/PeopleLookupSkip"}},"unknown_fields":{"type":"array","items":{"type":"string"},"description":"Fields an item may not carry."}}},"PersonRefFilter":{"type":"object","properties":{"id":{"description":"Match by person id.","allOf":[{"$ref":"#/components/schemas/PersonIdFilter"}]},"name":{"description":"Match by name.","allOf":[{"$ref":"#/components/schemas/PersonNameFilter"}]},"linkedin_url":{"description":"Look up specific profiles by URL.","allOf":[{"$ref":"#/components/schemas/PersonLinkedinUrlFilter"}]}}},"LocationStringFilter":{"type":"object","properties":{"include":{"type":"array","maxItems":100,"items":{"type":"string","minLength":2,"maxLength":200},"description":"Match these locations (any of). Unified strings like \"United States\", \"Texas, United States\", \"San Francisco, California, United States\" - or a region like \"EMEA\", \"APAC\", \"Europe\", \"Latin America\", which expands to its member countries (full list with member countries: GET /v2/enums/regions). Max 100 items, each 2-200 chars. If none of the values resolve to a known location, the request fails with 400."},"exclude":{"type":"array","maxItems":100,"items":{"type":"string","minLength":2,"maxLength":200},"description":"Reject these locations (same unified-string format). Max 100 items, each 2-200 chars. Values that do not resolve are skipped."}}},"KeywordsFilter":{"type":"object","properties":{"include":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"string","minLength":3,"maxLength":100},"description":"Phrases to search for. 1-20 items, 3-100 chars each. Matched as phrases: a multi-word entry like \"email finder\" requires those words adjacent and in order within one of the selected source fields, not merely present somewhere in it."},"exclude":{"type":"array","maxItems":20,"items":{"type":"string","minLength":3,"maxLength":100},"description":"Phrases that disqualify a company. 0-20 items. Matched as phrases, same as `include`."},"include_all":{"type":"boolean","description":"When true, every phrase in `include` must match; otherwise any single match qualifies.","default":false},"sources":{"type":"array","description":"Restrict matching to these source fields (see GET /v2/enums/keywords_sources). Omit to use the default source set - see this `company_keywords` filter's own description above for what that is.","minItems":1,"maxItems":3,"items":{"$ref":"#/components/schemas/KeywordsSource"}}},"required":["include"]},"PersonJobTitleFilter":{"type":"object","properties":{"include":{"description":"Job titles to match. Max 100 items, each 2-100 chars. Combined per match_mode. Known abbreviations also match their canonical spelling and vice versa (e.g. \"CEO\" matches \"Chief Executive Officer\"), however you spell them - \"VP of Marketing\", \"VP, Marketing\" and \"Marketing VP\" all match what \"VP Marketing\" matches. Under CONTAINS, terms match any of the roles a position carries - including the secondary roles of combined titles like \"Founder & CEO\" and the original title text.","maxItems":100,"type":"array","items":{"type":"string","maxLength":100,"minLength":2}},"exclude":{"description":"Job titles to reject. Max 100 items, each 2-100 chars.","maxItems":100,"type":"array","items":{"type":"string","maxLength":100,"minLength":2}},"match_mode":{"default":"CONTAINS","description":"CONTAINS = the title contains every word of the term, in any order; connector words (of, and, the, ...) are ignored, so \"Director of Sales Enablement\" also matches \"Director, Sales Enablement\". EXACT = the person's LinkedIn title is exactly the term, so \"founder\" does not match \"Founder & CEO\", \"Founder of Acme LLC\" or \"Fondateur\" - use CONTAINS for those. Applies to include/exclude; ignored when boolean_search is set.","allOf":[{"$ref":"#/components/schemas/JobTitleMatchMode"}]},"boolean_search":{"type":"string","description":"Boolean / Cartesian title query, e.g. \"(CEO OR CTO) AND !Intern\". Syntax: bareword=contains; 'single quotes'=contains too, and the way to write a title with a space in it - 'vp marketing' matches exactly what include: [\"vp marketing\"] matches; \"double quotes\"=exact; `backticks`=words in order with connectors bridged, so `vp marketing` finds \"VP of Marketing\" but not \"VP Sales and Marketing\" or \"Marketing VP\"; !=exclude, AND/OR, ()=grouping. Max 500 terms, depth 5, each term 2-100 chars. AND and OR cannot be mixed at the same nesting level - use parentheses to group. Mutually exclusive with include/exclude.","maxLength":20000}}},"SeniorityFilter":{"type":"object","properties":{"include":{"type":"array","description":"Seniority levels to match (any of). See GET /v2/enums/seniorities.","maxItems":10,"items":{"$ref":"#/components/schemas/Seniority"}},"exclude":{"type":"array","description":"Seniority levels to reject. See GET /v2/enums/seniorities.","maxItems":10,"items":{"$ref":"#/components/schemas/Seniority"}}}},"DepartmentFilter":{"type":"object","properties":{"include":{"type":"array","description":"Departments to match (any of). Accepts a department group (\"Sales\", \"Legal\") or a specific sub-department (\"Sales Operations\", \"Founder\"). A group matches everyone in it; a sub-department matches only that sub-department. See GET /v2/enums/departments.","maxItems":159,"items":{"$ref":"#/components/schemas/Department"}},"exclude":{"type":"array","description":"Departments to reject. A group rejects everyone in it; a sub-department rejects only that sub-department. See GET /v2/enums/departments.","maxItems":159,"items":{"$ref":"#/components/schemas/Department"}}}},"PersonMonthsRangeFilter":{"type":"object","properties":{"min":{"type":"integer","description":"Minimum whole months (inclusive), 0-600. Optional.","minimum":0,"maximum":600},"max":{"type":"integer","description":"Maximum whole months (inclusive), 0-600, must be >= min. Optional.","minimum":0,"maximum":600}}},"PersonJobChangeFilter":{"type":"object","properties":{"timeframe_months":{"type":"integer","minimum":1,"maximum":1000,"example":3,"description":"Months since the current role started, counted in CALENDAR months the way LinkedIn counts them: a role is \"N months\" if it spans N calendar months inclusive, so a role begun any time in August is 2 months old on 1 September. `timeframe_months: 1` therefore matches only roles begun in the current month. Any whole number from 1 to 1000. Replaces the former `timeframe_days`, which accepted only 30, 60, 90, 180, 270 or 365."},"change_type":{"default":"any","description":"any = any recent role change; new_company = also changed company; promotion = changed role at the same company (approximation, includes lateral moves).","allOf":[{"$ref":"#/components/schemas/JobChangeType"}]}},"required":["timeframe_months"]},"PeopleCompanyRefFilter":{"type":"object","properties":{"id":{"description":"Match by company id (the `id` returned by Company Search and in People Search results). Composes with every other filter: pair it with person_job_title to narrow a company list down to the roles you want. An exact `company.name` combines with it as OR (people at any listed id or any listed name); `company.domain`, `company_keywords` and a CONTAINS `company.name` AND with it.","allOf":[{"$ref":"#/components/schemas/PeopleCompanyIdFilter"}]},"domain":{"description":"Match by company website domain. Resolved to the same company-id constraint as `company.id`, so the two AND together when both are given.","example":{"include":["stripe.com"]},"allOf":[{"$ref":"#/components/schemas/PeopleCompanyDomainFilter"}]},"name":{"description":"Match by company name - exact by default, or substring with match_mode: CONTAINS. An exact name combines with `company.id` as OR (people at any listed name or any listed id); a CONTAINS name ANDs with it. Beside `person.linkedin_url`, `include` is only a primary-position hint, not a filter (`exclude` still filters).","allOf":[{"$ref":"#/components/schemas/PeopleCompanyNameFilter"}]},"linkedin_id":{"description":"Only people who work at these LinkedIn companies, by LinkedIn's numeric company id. Composes with every other filter as an AND, including with `company.name` (unlike `company.id`, which ORs with an exact name); from a company URL, enrich the company first (POST /v2/companies/enrich) and filter by the `id` it returns.","allOf":[{"$ref":"#/components/schemas/CompanyLinkedinIdFilter"}]}}},"PeopleIndustryFilter":{"type":"object","properties":{"include":{"description":"Industries or industry GROUPS to match (any of). A group name matches every industry in that category. See GET /v2/enums/industries for both.","example":["Agriculture & Mining","Software Development"],"maxItems":500,"x-getprospect-enum":"industries","type":"array","items":{"type":"string"}},"exclude":{"description":"Industries or industry GROUPS to reject. A group name rejects every industry in that category. See GET /v2/enums/industries for both.","maxItems":500,"x-getprospect-enum":"industries","type":"array","items":{"type":"string"}}}},"CompanyEmployeeRange":{"type":"string","enum":["1-10","11-50","51-200","201-500","501-1000","1001-5000","5001-10000","10001+"],"description":"Bucketed headcount range of the company (see GET /v2/enums/employee_ranges)."},"PeopleCompanyCountryFilter":{"type":"object","properties":{"include":{"description":"Match values in this list - any single value qualifies (exact, case-insensitive). Optional - provide include and/or exclude.","maxItems":500,"type":"array","items":{"type":"string","maxLength":512,"minLength":1}},"exclude":{"description":"Reject values in this list. 0-500 items.","maxItems":500,"type":"array","items":{"type":"string","maxLength":512}},"headquarters_only":{"type":"boolean","description":"When true, match the company headquarters country only. When false (default), any office country we have resolved counts, headquarters included: includes widen (a company with an office there matches) and excludes tighten symmetrically (a company with an office there is rejected).","default":false}}},"CompanyTypeFilter":{"type":"object","properties":{"include":{"type":"array","maxItems":9,"description":"Company types to match (any of).","items":{"$ref":"#/components/schemas/CompanyType"}},"exclude":{"type":"array","maxItems":9,"description":"Company types to reject.","items":{"$ref":"#/components/schemas/CompanyType"}}}},"BusinessTypeFilter":{"type":"object","properties":{"include":{"type":"array","maxItems":4,"description":"Business types to match (any of).","items":{"$ref":"#/components/schemas/CompanyBusinessType"}},"exclude":{"type":"array","maxItems":4,"description":"Business types to reject.","items":{"$ref":"#/components/schemas/CompanyBusinessType"}}}},"RevenueStreamFilter":{"type":"object","properties":{"include":{"type":"array","maxItems":12,"description":"Revenue streams to match (any of).","items":{"$ref":"#/components/schemas/CompanyRevenueStream"}},"exclude":{"type":"array","maxItems":12,"description":"Revenue streams to reject.","items":{"$ref":"#/components/schemas/CompanyRevenueStream"}}}},"PeopleNumberRangeFilter":{"type":"object","properties":{"min":{"type":"number","description":"Lower bound (inclusive). Optional."},"max":{"type":"number","description":"Upper bound (inclusive). Must be >= min. Optional."}}},"PeopleNumberIncludeExcludeFilter":{"type":"object","properties":{"include":{"description":"Match numeric values in this list - any single value qualifies. Optional - provide include and/or exclude.","maxItems":500,"type":"array","items":{"type":"number"}},"exclude":{"description":"Reject numeric values in this list. 0-500 items.","maxItems":500,"type":"array","items":{"type":"number"}}}},"CompanyLocationFilter":{"type":"object","properties":{"include":{"type":"array","maxItems":100,"items":{"type":"string","minLength":2,"maxLength":200},"description":"Match these locations (any of). Unified strings like \"United States\", \"Texas, United States\", \"San Francisco, California, United States\" - or a region like \"EMEA\", \"APAC\", \"Europe\", \"Latin America\", which expands to its member countries (full list with member countries: GET /v2/enums/regions). Max 100 items, each 2-200 chars. If none of the values resolve to a known location, the request fails with 400."},"exclude":{"type":"array","maxItems":100,"items":{"type":"string","minLength":2,"maxLength":200},"description":"Reject these locations (same unified-string format). Max 100 items, each 2-200 chars. Values that do not resolve are skipped."},"headquarters_only":{"type":"boolean","description":"When true, match the company headquarters location only. When false (default), any office location we have resolved counts, headquarters included: includes widen (a company with an office there matches) and excludes tighten symmetrically (a company with an office there is rejected).","default":false}}},"CompanyTechnologiesFilter":{"type":"object","properties":{"include":{"type":"array","maxItems":500,"items":{"type":"string","pattern":"^[1-9][0-9]{0,9}$"},"description":"Technology ids to match. `match_mode: ANY` (default): a company using any of them qualifies; `ALL`: it must use every one. Max 500.","example":["3421"]},"exclude":{"type":"array","maxItems":500,"items":{"type":"string","pattern":"^[1-9][0-9]{0,9}$"},"description":"Reject companies using any of these technology ids. Max 500."},"match_mode":{"default":"ANY","description":"How `include` combines: `ANY` (default) - at least one; `ALL` - every one, on the same company.","allOf":[{"$ref":"#/components/schemas/TechnologyMatchMode"}]}}},"CompanyTechnologyCategoriesFilter":{"type":"object","properties":{"include":{"type":"array","maxItems":200,"items":{"type":"string","pattern":"^[1-9][0-9]{0,9}$"},"description":"Category ids to match (any of). Max 200.","example":["1"]},"exclude":{"type":"array","maxItems":200,"items":{"type":"string","pattern":"^[1-9][0-9]{0,9}$"},"description":"Reject companies using any technology in these category ids. Max 200."}}},"PeopleContactDetailsFilter":{"type":"object","properties":{"email":{"description":"Email availability/quality (global) + your workspace reveal state.","allOf":[{"$ref":"#/components/schemas/PeopleEmailContactDetailsFilter"}]},"phone":{"description":"Phone availability (global) + your workspace reveal state.","allOf":[{"$ref":"#/components/schemas/PeoplePhoneContactDetailsFilter"}]}}},"PeopleListsFilter":{"type":"object","properties":{"include":{"description":"Only contacts your workspace saved into these list ids. Max 100 ids, each 1-64 chars.","maxItems":100,"type":"array","items":{"type":"string","maxLength":64,"minLength":1}},"exclude":{"description":"Hide contacts your workspace saved into these list ids. Max 1000 ids, each 1-64 chars.","maxItems":1000,"type":"array","items":{"type":"string","maxLength":64,"minLength":1}},"saved":{"description":"any = only contacts your workspace saved, in a list or not; none = only contacts your workspace has not saved; without_list = only contacts your workspace saved but did not file into any list.","allOf":[{"$ref":"#/components/schemas/PeopleSavedScope"}]},"saved_at":{"description":"Filter by when the contact was saved into a list (workspace-scoped).","allOf":[{"$ref":"#/components/schemas/PeopleSavedAtRange"}]}}},"PeopleDuplicatesFilter":{"type":"object","properties":{"exclude_exported":{"type":"boolean","description":"true = hide people your workspace already exported through POST /v2/people/export. Exclude-only: it removes rows and never counts as an include condition. Requires an authenticated workspace."}}},"JobBase":{"type":"object","required":["id","type","status","total","processed","progress_percent","error","resource_url","created_at","finished_at"],"properties":{"id":{"type":"string","description":"The job id (for a resource-backed job, also the resource id)."},"type":{"$ref":"#/components/schemas/JobType"},"status":{"$ref":"#/components/schemas/JobStatus"},"total":{"type":"integer","minimum":0,"description":"Units of work; null while unknown.","nullable":true},"processed":{"type":"integer","minimum":0,"description":"Units done; null while unknown.","nullable":true},"progress_percent":{"type":"integer","minimum":0,"maximum":100,"description":"null while unknown.","nullable":true},"error":{"type":"string","description":"Why the job failed, or null.","nullable":true},"resource_url":{"type":"string","description":"The resource the job created (`/v2/exports/{id}`, ...); null for resource-less work.","nullable":true},"created_at":{"type":"string","format":"date-time","nullable":true},"finished_at":{"type":"string","format":"date-time","description":"Set once the job is final.","nullable":true}}},"EnrichRunResult":{"type":"object","required":["requested","truncated","found","already_not_found","stopped_reason"],"properties":{"requested":{"type":"integer","minimum":0,"description":"Records the search selected."},"truncated":{"type":"boolean","description":"The selection was cut at the run limit."},"found":{"type":"integer","minimum":0,"description":"People a mobile number was found for so far (1 phone credit each)."},"already_not_found":{"type":"integer","minimum":0,"description":"People the providers had already refused: not looked up again, not charged."},"stopped_reason":{"type":"string","description":"Why the run stopped early, or null.","nullable":true}}},"PeopleExistsMatch":{"type":"object","description":"A URL that names a person we hold.","required":["linkedin_url","matched_by","person"],"properties":{"linkedin_url":{"type":"string","description":"The URL as sent."},"matched_by":{"$ref":"#/components/schemas/PeopleExistsMatchedBy"},"person":{"$ref":"#/components/schemas/PeopleExistsPerson"}}},"PeopleExistsNotMatched":{"type":"object","description":"A valid URL that names nobody we hold.","required":["linkedin_url","attempted"],"properties":{"linkedin_url":{"type":"string","description":"The URL as sent."},"attempted":{"type":"array","items":{"$ref":"#/components/schemas/PeopleExistsMatchedBy"},"description":"The lookup keys tried."}}},"PeopleExistsInvalid":{"type":"object","description":"A URL that is not a usable LinkedIn profile URL.","required":["linkedin_url","reason"],"properties":{"linkedin_url":{"type":"string","description":"The URL as sent."},"reason":{"type":"string","description":"What is wrong with the URL, readable."}}},"PersonSaveSaved":{"allOf":[{"$ref":"#/components/schemas/SaveSaved"},{"type":"object","required":["email"],"properties":{"email":{"type":"object","nullable":true,"allOf":[{"$ref":"#/components/schemas/PersonSaveEmail"}],"description":"The stored valid email handed over with the save (1 email credit unless your workspace already owned it), or the email your team edited onto the person (never charged); null when the person has none, or when the balance ran out (it stays billable on a later save)."}}}]},"SaveRunResult":{"type":"object","required":["requested","saved","not_found","stopped_reason","truncated"],"properties":{"requested":{"type":"integer","minimum":0,"description":"Records the search selected."},"saved":{"type":"integer","minimum":0,"description":"Records saved so far."},"not_found":{"type":"integer","minimum":0,"description":"Selected records that could not be found."},"stopped_reason":{"type":"string","description":"Why the run stopped early, or null.","nullable":true},"truncated":{"type":"boolean","description":"The selection was cut at the run limit."}}},"PeopleSearchPagination":{"allOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"object","required":["max_page","truncated","total_is_estimate"],"properties":{"total_is_estimate":{"type":"boolean","description":"True when `total_count` is a rounded estimate (a `max_person_per_company` search over a very large match set)."}}}]},"PeopleSearchCompanyFilter":{"type":"object","description":"Present only when the company filters matched more companies than one search can use: the page and `total_count` are drawn from the most-followed `companies_used` of them.","required":["truncated","companies_matched","companies_used","filters"],"properties":{"truncated":{"type":"boolean","enum":[true],"description":"Always true: the company set was cut."},"companies_matched":{"type":"integer","minimum":0,"description":"Companies the company filters matched."},"companies_used":{"type":"integer","minimum":0,"description":"Companies the search used."},"filters":{"type":"array","items":{"type":"string"},"description":"The company filters that matched."}}},"CompanySocialNetworks":{"type":"object","description":"Profile URLs found on the company's own website; `null` for a network not found there. Present on every operation that answers a `Company` - search, enrich, bulk-enrich, get, and the companies inside People Search / Enrich.","required":["linkedin_url","facebook_url","twitter_url","instagram_url","youtube_url","tiktok_url","crunchbase_url","github_url","pinterest_url"],"properties":{"linkedin_url":{"type":"string","format":"uri","nullable":true,"example":"https://www.linkedin.com/company/intercom"},"facebook_url":{"type":"string","format":"uri","nullable":true,"example":"https://www.facebook.com/intercom"},"twitter_url":{"type":"string","format":"uri","nullable":true,"example":"https://x.com/intercom"},"instagram_url":{"type":"string","format":"uri","nullable":true,"example":"https://www.instagram.com/intercom"},"youtube_url":{"type":"string","format":"uri","nullable":true,"example":"https://www.youtube.com/@intercom"},"tiktok_url":{"type":"string","format":"uri","nullable":true},"crunchbase_url":{"type":"string","format":"uri","nullable":true,"example":"https://www.crunchbase.com/organization/intercom"},"github_url":{"type":"string","format":"uri","nullable":true},"pinterest_url":{"type":"string","format":"uri","nullable":true}}},"CompanyLocation":{"type":"object","nullable":true,"description":"A resolved office location. As `location` it is the headquarters (null when none is resolved); as an item of `other_locations` it is another office.","required":["city","state","state_code","country","country_code","raw_address"],"properties":{"city":{"type":"string","nullable":true,"example":"San Francisco"},"state":{"type":"string","nullable":true,"example":"California"},"state_code":{"type":"string","nullable":true,"example":"CA"},"country":{"type":"string","nullable":true,"example":"United States"},"country_code":{"type":"string","nullable":true,"description":"ISO 3166-1 alpha-2, the codes `filters.company_country` takes.","example":"US"},"raw_address":{"type":"string","nullable":true,"description":"The address as published by the company, when known."}}},"CompanyTechnology":{"type":"object","description":"A web technology detected on the company website (from its homepage: HTML, scripts, headers and cookies). Companies are rescanned every 30 days.","required":["id","name","icon_url","website","categories"],"properties":{"id":{"type":"string","pattern":"^[1-9][0-9]*$","description":"The technology id: `filters.company_technologies` takes it."},"name":{"type":"string","example":"WordPress"},"icon_url":{"type":"string","format":"uri","nullable":true,"description":"Icon image URL; null without one."},"website":{"type":"string","nullable":true,"description":"The technology's own website."},"categories":{"type":"array","description":"Its categories, most prominent first.","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string","description":"The category id: `filters.company_technology_categories` takes it."},"name":{"type":"string","example":"CMS"}}}}}},"CompanySaved":{"type":"object","nullable":true,"description":"Your workspace's saved record of the company; null when the workspace never saved it. Save with `companies_save`, remove with `trash_companies_add`.","required":["id","saved_at","list_ids"],"properties":{"id":{"type":"string","nullable":true,"description":"Always null; kept for the shape of the person `saved` block."},"saved_at":{"type":"string","format":"date-time","nullable":true,"description":"When the workspace first saved the company."},"list_ids":{"type":"array","items":{"type":"string"},"description":"Every company list of the workspace the company is in (`[]` when saved without a list)."},"edits":{"$ref":"#/components/schemas/CompanyEdits"}}},"CompanyEdits":{"type":"object","description":"Your workspace's own edits of a saved company. A key is present only while it is edited.","properties":{"name":{"type":"string","description":"The workspace's name for the company; it replaces `name` on every read in this workspace."}}},"CompaniesBulkEnrichMatched":{"type":"object","description":"An item that found a company.","required":["identifier","matched_by","company"],"properties":{"identifier":{"type":"string","description":"The item's `identifier` as sent; else its index in `data`, as a string."},"matched_by":{"$ref":"#/components/schemas/CompanyLookupField"},"company":{"$ref":"#/components/schemas/Company"}}},"CompaniesBulkEnrichNotMatched":{"type":"object","description":"An item whose lookup keys found no company.","required":["identifier","attempted"],"properties":{"identifier":{"type":"string","description":"The item's `identifier` as sent; else its index in `data`, as a string."},"attempted":{"type":"array","items":{"$ref":"#/components/schemas/CompanyLookupField"},"description":"The lookup keys tried."}}},"CompaniesBulkEnrichInvalid":{"type":"object","description":"An item that could not be looked up: no usable key, a malformed value or an unknown field.","required":["identifier","reason"],"properties":{"identifier":{"type":"string","description":"The item's `identifier` as sent; else its index in `data`, as a string."},"reason":{"type":"string","description":"What is wrong with the item, readable."},"skipped":{"type":"array","description":"Keys sent but not usable, and why.","items":{"type":"object","required":["field","reason"],"properties":{"field":{"$ref":"#/components/schemas/CompanyLookupField"},"reason":{"type":"string"}}}},"unknown_fields":{"type":"array","items":{"type":"string"},"description":"Fields the item may not carry."}}},"CompanyLookupField":{"type":"string","description":"Which lookup key found the company: `id`, `linkedin_id`, `linkedin_url`, `domain` or `name`; `name_search` when a name matched no company directly and was resolved to the company by a web search for its domain. New values may be added.","enum":["id","linkedin_id","linkedin_url","domain","name","name_search"],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"CompanySaveSaved":{"description":"A company now saved in the workspace: the shared saved item, plus every list the company is in after the write (`all_list_ids`), while `list_ids` holds only the lists this request named.","allOf":[{"$ref":"#/components/schemas/SaveSaved"},{"type":"object","required":["all_list_ids"],"properties":{"matched_by":{"$ref":"#/components/schemas/CompanyLookupField"},"all_list_ids":{"type":"array","items":{"type":"string"},"description":"The company's whole list membership in the workspace after this save."}}}]},"CompanyIdentityFilters":{"type":"object","properties":{"id":{"description":"Match by our company `id`, as returned by this endpoint and by Company Enrich. The exact way to name companies you have already resolved.","allOf":[{"$ref":"#/components/schemas/CompanyFilterIds"}]},"name":{"description":"Match by company name. Exact, case-insensitive list lookup. A value shaped like a website (\"stripe.com\", \"https://www.stripe.com/about\") also matches the company on that domain.","allOf":[{"$ref":"#/components/schemas/CompanyFilterStrings"}]},"domain":{"description":"Match by web domain - host only, without scheme or www (e.g. \"getprospect.com\"). Every domain attached to a company is considered, not just the primary one.","allOf":[{"$ref":"#/components/schemas/CompanyFilterStrings"}]},"linkedin_id":{"description":"Match by LinkedIn's numeric company id. Company URLs go through Company Enrich first - see `id`.","allOf":[{"$ref":"#/components/schemas/CompanyLinkedinIdFilter"}]}}},"CompanyFilterStrings":{"type":"object","properties":{"include":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1,"maxLength":512},"description":"Match companies whose value is in this list - any single value qualifies (exact, case-insensitive). Optional - provide include and/or exclude. Max 500 items."},"exclude":{"type":"array","maxItems":500,"items":{"type":"string","maxLength":512},"description":"Reject companies whose value is in this list (exact, case-insensitive). 0-500 items."}}},"CompanyFilterCountry":{"type":"object","properties":{"include":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1,"maxLength":512},"description":"Match companies whose value is in this list - any single value qualifies (exact, case-insensitive). Optional - provide include and/or exclude. Max 500 items."},"exclude":{"type":"array","maxItems":500,"items":{"type":"string","maxLength":512},"description":"Reject companies whose value is in this list (exact, case-insensitive). 0-500 items."},"headquarters_only":{"type":"boolean","description":"When true, match the company headquarters country only. When false (default), any office country we have resolved counts, headquarters included: includes widen (a company with an office there matches) and excludes tighten symmetrically (a company with an office there is rejected).","default":false}}},"CompanyFilterRange":{"type":"object","properties":{"min":{"type":"number","description":"Lower bound (inclusive). Optional."},"max":{"type":"number","description":"Upper bound (inclusive). Must be >= min. Optional."}}},"CompanyFilterNumbers":{"type":"object","properties":{"include":{"maxItems":500,"description":"Match companies whose value is in this list - any single value qualifies. Optional - provide include and/or exclude. Max 500 items.","type":"array","items":{"type":"number"}},"exclude":{"maxItems":500,"description":"Reject companies whose value is in this list. 0-500 items.","type":"array","items":{"type":"number"}}}},"EmailFindStatus":{"type":"string","description":"`valid`: a verified address was found and is served. `not_found`: no address could be confirmed (also for a catch-all guess or an initials-only address, which are never served); the envelope carries `NOT_FOUND` in `errors`. A live search whose workspace runs out of credits mid-way can still report `not checked` with an empty `email` (nothing charged); that case is due to become a 402.","enum":["valid","not_found"],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"EmailDomainStatus":{"type":"string","nullable":true,"description":"Deliverability of the address's domain: `valid`, `invalid`, `accept_all` (the server accepts every address), `disposable` (a throwaway-mail domain) or `unknown`; null when it was not checked.","enum":["valid","invalid","accept_all","disposable","unknown",null],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"EmailVerificationSource":{"type":"string","nullable":true,"description":"How the emails arrived: an uploaded `file`, or a `paste` (uploaded as a generated CSV); null on jobs created before the field existed.","enum":["file","paste",null]},"EmailVerificationStatus":{"type":"string","description":"The job lifecycle: `queued` -> `counting` -> `awaiting_confirmation` (counted, waiting for `start`) -> `verifying` -> `assembling` -> `completed`; or `failed` / `cancelled`.","enum":["queued","counting","awaiting_confirmation","verifying","assembling","completed","failed","cancelled"],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"EmailVerifyStatus":{"type":"string","description":"`valid`: the mailbox accepts mail. `invalid`: it does not exist or the address is malformed. `accept_all`: the domain accepts every address, so the mailbox cannot be confirmed. `unknown`: no conclusive answer (not charged).","enum":["valid","invalid","accept_all","unknown"],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"LocationSuggestion":{"type":"object","description":"A place `person_location` and `company_location` accept.","required":["type","value","level","city","state","state_code","country","country_code"],"properties":{"type":{"type":"string","enum":["location"],"description":"The vocabulary asked for (the discriminator)."},"value":{"type":"string","description":"The location string to pass as-is to `person_location` / `company_location`, e.g. `Austin, Texas, United States`."},"level":{"$ref":"#/components/schemas/LocationLevel"},"city":{"type":"string","nullable":true,"description":"The city; null above city level."},"state":{"type":"string","nullable":true,"description":"The state or region of the country; null above state level."},"state_code":{"type":"string","nullable":true,"description":"The state code (e.g. `TX`); null when there is none."},"country":{"type":"string","nullable":true,"description":"The country name; null for a region."},"country_code":{"type":"string","nullable":true,"description":"ISO 3166-1 alpha-2 country code; null for a region."},"country_codes":{"type":"array","items":{"type":"string"},"description":"Regions only: the ISO 3166-1 alpha-2 codes of the member countries the filter expands to (the full catalog is `GET /v2/enums/regions`)."}}},"JobTitleSuggestion":{"type":"object","description":"A catalog job title `person_job_title` accepts.","required":["type","value"],"properties":{"type":{"type":"string","enum":["job_title"],"description":"The vocabulary asked for (the discriminator)."},"value":{"type":"string","description":"The canonical title to pass as-is to `person_job_title`, e.g. `Chief Executive Officer`."}}},"IndustrySuggestion":{"type":"object","description":"An industry `company_industry` accepts.","required":["type","value","group"],"properties":{"type":{"type":"string","enum":["industry"],"description":"The vocabulary asked for (the discriminator)."},"value":{"type":"string","description":"The industry to pass as-is to `company_industry`."},"group":{"type":"string","description":"The industry category (the first one, for an industry in several)."}}},"CompanyKeywordSuggestion":{"type":"object","description":"A company specialty the `company_keywords` filters accept.","required":["type","value","company_count"],"properties":{"type":{"type":"string","enum":["company_keywords"],"description":"The vocabulary asked for (the discriminator)."},"value":{"type":"string","description":"The keyword to pass as-is to `company_keywords`."},"company_count":{"type":"integer","minimum":0,"description":"About how many companies list this keyword."}}},"PersonSuggestion":{"type":"object","description":"A person whose name (or email address, or LinkedIn profile URL) matched the query.","required":["type","value","id","job_title","company","linkedin_url","saved"],"properties":{"type":{"type":"string","enum":["person"],"description":"The vocabulary asked for (the discriminator)."},"value":{"type":"string","description":"The person's full name: pass it to `person.name` to search everyone with that name."},"id":{"type":"string","description":"The person id: pass it to `person.id` to pin exactly this person."},"job_title":{"type":"string","nullable":true,"description":"Their current job title."},"company":{"type":"object","nullable":true,"description":"Their current company; null when unknown.","required":["id","name","logo"],"properties":{"id":{"type":"string","description":"The company id (`company.id`)."},"name":{"type":"string","description":"The company name."},"logo":{"type":"string","format":"uri","nullable":true,"description":"Logo URL; null without one."}}},"linkedin_url":{"type":"string","format":"uri","nullable":true,"description":"Their LinkedIn profile URL."},"saved":{"type":"boolean","description":"Your workspace has saved this person (saved people come first)."}}},"CompanySuggestion":{"type":"object","description":"A company whose name or domain prefix (or LinkedIn company URL) matched the query.","required":["type","value","id","domain","logo","industry","employee_range","linkedin_url","saved"],"properties":{"type":{"type":"string","enum":["company"],"description":"The vocabulary asked for (the discriminator)."},"value":{"type":"string","description":"The canonical company name `company.name` accepts."},"id":{"type":"string","description":"The company id: `company.id` (People Search) accepts it."},"domain":{"type":"string","nullable":true,"description":"A domain attached to the company; its website when none is attached."},"logo":{"type":"string","format":"uri","nullable":true,"description":"Logo URL; null without one."},"industry":{"type":"string","nullable":true,"description":"The industry."},"employee_range":{"type":"string","nullable":true,"description":"The employee range label, e.g. `51-200`."},"linkedin_url":{"type":"string","format":"uri","nullable":true,"description":"Its LinkedIn company page URL."},"saved":{"type":"boolean","description":"Your workspace has saved this company (saved companies come first)."}}},"TechnologySuggestion":{"type":"object","description":"A web technology or a technology category the `company_technologies` / `company_technology_categories` filters accept. Categories come first, then technologies, each by company count.","required":["type","value","kind","id","name","company_count"],"properties":{"type":{"type":"string","enum":["technology"],"description":"The vocabulary asked for (the discriminator)."},"value":{"type":"string","description":"The id to pass as-is: to `company_technologies` when `kind` is `technology`, to `company_technology_categories` when `kind` is `category`."},"kind":{"type":"string","enum":["technology","category"],"description":"Which filter `value` goes to."},"id":{"type":"string","description":"The same id as `value`."},"name":{"type":"string","description":"The display name, e.g. `WordPress` or `CMS`."},"icon_url":{"type":"string","format":"uri","nullable":true,"description":"Technologies only: icon image URL; null without one."},"category_names":{"type":"array","items":{"type":"string"},"description":"Technologies only: the technology's categories, most prominent first."},"company_count":{"type":"integer","minimum":0,"description":"About how many companies use it (refreshed daily)."}}},"CursorPagination":{"type":"object","description":"`metadata.pagination` of a keyset list: pass `next_cursor` as `before` for the next page while `has_more` is true. No total count.","required":["per_page","has_more","next_cursor"],"properties":{"per_page":{"type":"integer","minimum":1,"description":"Rows per page."},"has_more":{"type":"boolean","description":"Whether an older page exists."},"next_cursor":{"type":"string","nullable":true,"description":"Opaque cursor of the next page; null on the last page."}}},"RateLimitTier":{"type":"string","description":"The workspace's rate-limit tier, from its plan price: `free`, then `tier49` / `tier99` / `tier199` / `tier399` (monthly-equivalent price ceilings). A free plan holding unspent purchased credits gets `tier49`. New tiers may be added.","enum":["free","tier49","tier99","tier199","tier399"],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"RequestChannel":{"type":"string","description":"Where a request comes from: `app` (the GetProspect app, also OAuth apps such as Zapier and the Sheets add-on), `extension` (the browser extension), `api` (an API key) or `system` (GetProspect background jobs, never rate limited). New channels may be added.","enum":["app","extension","api","system"],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"RateLimitBuckets":{"type":"object","description":"Keyed by bucket: `search` (searches), `enrich` (enrich, email find and verify), `jobs` (job starts: exports, CSV enrichments, trash, list moves; 1 unit each) and `poll` (job polls and history lists; per-second only). A bucket added later appears as one more key.","required":["search","enrich","jobs","poll"],"properties":{"search":{"$ref":"#/components/schemas/RateLimitBucketStatus"},"enrich":{"$ref":"#/components/schemas/RateLimitBucketStatus"},"jobs":{"$ref":"#/components/schemas/RateLimitBucketStatus"},"poll":{"$ref":"#/components/schemas/RateLimitBucketStatus"}},"additionalProperties":{"$ref":"#/components/schemas/RateLimitBucketStatus"}},"PeopleExportJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["people_export"]}}}]},"CompaniesExportJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["companies_export"]}}}]},"CsvEnrichmentJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["csv_enrichment"]}}}]},"EmailVerificationJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["email_verification"]}}}]},"PeopleDeleteJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["people_delete"]},"result":{"allOf":[{"$ref":"#/components/schemas/DeleteResult"}],"description":"Partial while the job runs, final at `done`."}}}]},"CompaniesDeleteJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["companies_delete"]},"result":{"allOf":[{"$ref":"#/components/schemas/DeleteResult"}],"description":"Partial while the job runs, final at `done`."}}}]},"PeopleListsSetJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["people_lists_set"]},"result":{"allOf":[{"$ref":"#/components/schemas/ListsSetResult"}],"description":"Partial while the job runs, final at `done`."}}}]},"CompaniesListsSetJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["companies_lists_set"]},"result":{"allOf":[{"$ref":"#/components/schemas/ListsSetResult"}],"description":"Partial while the job runs, final at `done`."}}}]},"ListDeleteJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["list_delete"]},"result":{"allOf":[{"$ref":"#/components/schemas/ListDeleteResult"}],"description":"Partial while the job runs, final at `done`."}}}]},"TrashRestoreJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["trash_restore"]},"result":{"allOf":[{"$ref":"#/components/schemas/RestoreResult"}],"description":"Partial while the job runs, final at `done`."}}}]},"IntegrationPushAllJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["integration_push_all"]},"result":{"anyOf":[{"$ref":"#/components/schemas/PushAllResult"},{"type":"object","nullable":true,"enum":[null]}],"description":"Null until the run reports it."}}}]},"CompaniesSaveSearchJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["companies_save_search"]},"result":{"anyOf":[{"$ref":"#/components/schemas/SaveRunResult"},{"type":"object","nullable":true,"enum":[null]}],"description":"Null until the run reports it."}}}]},"SequencesLeadsEnrollJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["sequences_leads_enroll"]},"result":{"allOf":[{"$ref":"#/components/schemas/LeadEnrollRunResult"}],"description":"Partial while the job runs, final at `done`."}}}]},"SequencesLeadsPauseJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["sequences_leads_pause"]},"result":{"allOf":[{"$ref":"#/components/schemas/LeadBulkRunResult"}],"description":"Partial while the job runs, final at `done`."}}}]},"SequencesLeadsOptOutJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["sequences_leads_opt_out"]},"result":{"allOf":[{"$ref":"#/components/schemas/LeadBulkRunResult"}],"description":"Partial while the job runs, final at `done`."}}}]},"SequencesLeadsResumeJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["sequences_leads_resume"]},"result":{"allOf":[{"$ref":"#/components/schemas/LeadBulkRunResult"}],"description":"Partial while the job runs, final at `done`."}}}]},"SequencesLeadsRemoveJob":{"allOf":[{"$ref":"#/components/schemas/JobBase"},{"type":"object","required":["type","result"],"properties":{"type":{"type":"string","enum":["sequences_leads_remove"]},"result":{"allOf":[{"$ref":"#/components/schemas/LeadRemoveRunResult"}],"description":"Partial while the job runs, final at `done`."}}}]},"AccountStatus":{"type":"string","nullable":true,"description":"The purchase gate of the account: `pending_phone_verification` (verify a phone first), `pending_review` (support reviews the account before a purchase), `allowed_payment` / `not_allowed_payment` (the review outcome), `blocked`, `russian_suspended`, `permanently_deleted`; null when no gate applies.","enum":["allowed_payment","not_allowed_payment","blocked","pending_review","permanently_deleted","russian_suspended","pending_phone_verification",null],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"WorkspaceRef":{"type":"object","description":"The workspace the credential acts in, with your role there read live (never from the token).","required":["id","name","role"],"properties":{"id":{"type":"integer","description":"The workspace id.","example":839270},"name":{"type":"string","nullable":true,"description":"The workspace name; null when it could not be read.","example":"Acme"},"role":{"$ref":"#/components/schemas/WorkspaceRole"}}},"MeAuth":{"type":"object","description":"The credential this request used.","required":["channel","api_key_id","session_id"],"properties":{"channel":{"$ref":"#/components/schemas/RequestChannel"},"api_key_id":{"type":"string","nullable":true,"description":"The API key id when the request used one (`x-api-key`); else null."},"session_id":{"type":"string","nullable":true,"description":"The signed-in session (the app, the extension or an OAuth app) the token belongs to; null for API keys and job tokens."}}},"SubscriptionStatus":{"type":"string","description":"`active`, `pause` (paused for `pause.period_months`) or `disabled` (cancelled or ended).","enum":["active","pause","disabled"],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"PlanSummary":{"type":"object","nullable":true,"description":"A plan as a subscription names it: no prices, no payment-provider ids. Null where there is none.","required":["id","name","price","currency","is_custom","credits"],"properties":{"id":{"type":"string","pattern":"^[0-9a-f]{24}$","description":"The plan id (`plan_id` in billing requests)."},"name":{"type":"string","nullable":true,"description":"Display name."},"price":{"type":"number","nullable":true,"description":"Price per unit and period, in `currency`."},"currency":{"type":"string","nullable":true,"description":"ISO 4217 code, e.g. `USD`."},"is_custom":{"type":"boolean","description":"A plan made for this customer."},"credits":{"$ref":"#/components/schemas/PlanCredits"}}},"PaymentGateway":{"type":"string","nullable":true,"description":"The payment provider that bills the workspace (its default card); null without a card.","enum":["stripe","fastspring",null],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"CreditBalance":{"type":"object","description":"One credit balance (integers).","required":["available","allowance","additional","permanent"],"properties":{"available":{"type":"integer","description":"What the next request may spend: the plan credits plus both top-up buckets. The same number `metadata.credits.<type>` carries on credit-spending responses."},"allowance":{"type":"integer","description":"The plan's credits for the current period."},"additional":{"type":"integer","description":"Top-up credits bought or granted on top of the plan."},"permanent":{"type":"integer","description":"Credits that never expire with the period."}}},"UsageTotals":{"type":"object","description":"The sums over the whole range.","required":["email_search","email_verification","phone_search","email_credits","verification_credits","phone_credits","searches","enriches","total_credits"],"properties":{"email_search":{"type":"integer","minimum":0,"description":"Email credits spent."},"email_verification":{"type":"integer","minimum":0,"description":"Email verification credits spent."},"phone_search":{"type":"integer","minimum":0,"description":"Phone credits spent."},"email_credits":{"type":"integer","minimum":0,"description":"Deprecated: read `email_search` (the same number).","deprecated":true},"verification_credits":{"type":"integer","minimum":0,"description":"Deprecated: read `email_verification` (the same number).","deprecated":true},"phone_credits":{"type":"integer","minimum":0,"description":"Deprecated: read `phone_search` (the same number).","deprecated":true},"searches":{"type":"integer","minimum":0,"description":"Search requests made."},"enriches":{"type":"integer","minimum":0,"description":"Enrich requests made."},"total_credits":{"type":"integer","minimum":0,"description":"Every credit spent: `email_search` + `email_verification` + `phone_search`."}}},"UsageSeriesRow":{"type":"object","description":"One row of the series: a UTC day (`group_by=day`, days without usage are left out) or a `channel|action|entity` source (`group_by=source`).","required":["key","email_search","email_verification","phone_search","email_credits","verification_credits","phone_credits","searches","enriches"],"properties":{"key":{"type":"string","description":"A `YYYY-MM-DD` day, or `channel|action|entity` (e.g. `api|enrich|people`)."},"channel":{"type":"string","description":"`group_by=source` only: the channel (`app`, `extension`, `api`)."},"action":{"type":"string","description":"`group_by=source` only: the action (`search`, `enrich`, ...)."},"entity":{"type":"string","description":"`group_by=source` only: `people` or `companies`; may be empty."},"email_search":{"type":"integer","minimum":0,"description":"Email credits spent."},"email_verification":{"type":"integer","minimum":0,"description":"Email verification credits spent."},"phone_search":{"type":"integer","minimum":0,"description":"Phone credits spent."},"email_credits":{"type":"integer","minimum":0,"description":"Deprecated: read `email_search` (the same number).","deprecated":true},"verification_credits":{"type":"integer","minimum":0,"description":"Deprecated: read `email_verification` (the same number).","deprecated":true},"phone_credits":{"type":"integer","minimum":0,"description":"Deprecated: read `phone_search` (the same number).","deprecated":true},"searches":{"type":"integer","minimum":0,"description":"Search requests made."},"enriches":{"type":"integer","minimum":0,"description":"Enrich requests made."}}},"WebhookDisabledReason":{"type":"string","nullable":true,"description":"Why GetProspect stopped a `disabled` webhook: `receiver_gone` (the receiver answered 410), `failing` (3 days of nothing but failures, or over 50,000 undelivered events), `slow` (20 timeouts in a row), `creator_removed` (the member who created it left the workspace), `key_revoked` (the API key that created it was deleted). null unless `status` is `disabled`. New reasons may be added.","enum":["receiver_gone","failing","slow","creator_removed","key_revoked",null],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"WebhookLastDelivery":{"type":"object","nullable":true,"description":"The coarse outcome of the latest attempt (test events included); null before the first one.","required":["at","delivered","status_class"],"properties":{"at":{"type":"string","format":"date-time","nullable":true,"description":"When it was attempted."},"delivered":{"type":"boolean","description":"The receiver answered 2xx."},"status_class":{"$ref":"#/components/schemas/HttpStatusClass"}}},"HttpStatusClass":{"type":"string","nullable":true,"description":"The class of the receiver's HTTP status; null when no answer arrived (see `error_code`).","enum":["2xx","3xx","4xx","5xx",null]},"WebhookOutcomeErrorCode":{"type":"string","nullable":true,"description":"Why an attempt failed without a usable answer: `timeout` (no answer in 10 s), `connection_failed`, `tls_error`, `blocked_address` (the host resolved to a private address), `redirect_not_followed` (a 3xx; redirects are never followed). null otherwise. New codes may be added.","enum":["timeout","connection_failed","tls_error","blocked_address","redirect_not_followed",null],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"BlocklistCompanyResult":{"type":"object","description":"One company entry the request touched, with the items that named it.","required":["identifiers","blocked_company"],"properties":{"identifiers":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Every request item that resolved to this entry: its `identifier`, else its index in `data` as a string. Items that name the same person or domain share one result."},"blocked_company":{"$ref":"#/components/schemas/BlockedCompany"}}},"BulkInvalidItem":{"type":"object","description":"A request item that was not applied, and why. The rest of the batch still ran.","required":["identifier","code","field","reason"],"properties":{"identifier":{"type":"string","description":"The item's `identifier` as sent; else its index in `data`, as a string."},"code":{"type":"string","description":"What is wrong with the item, from the `payload.code` vocabulary. Switch on it, not on `reason`.","enum":["missing_field","invalid_format","wrong_type","out_of_range"],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"field":{"type":"string","nullable":true,"description":"The item field at fault, e.g. `last_name`."},"reason":{"type":"string","description":"What is wrong, readable; may change between releases."}}},"BlocklistPersonResult":{"type":"object","description":"One person entry the request touched, with the items that named it.","required":["identifiers","blocked_person"],"properties":{"identifiers":{"type":"array","minItems":1,"items":{"type":"string"},"description":"Every request item that resolved to this entry: its `identifier`, else its index in `data` as a string. Items that name the same person or domain share one result."},"blocked_person":{"$ref":"#/components/schemas/BlockedPerson"}}},"NotificationStatus":{"type":"string","nullable":true,"description":"The state of the work the notification reports: `done`, `success`, `failed`, `error`, `in_progress`, `processing`, `stopped` or `info`; null when the notification reports no state. New values may be added.","enum":["done","success","failed","error","in_progress","processing","stopped","info",null],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"NotificationLink":{"type":"object","nullable":true,"description":"Where the notification points the reader; null when it has no link.","required":["url","label","kind","file_name"],"properties":{"url":{"type":"string","description":"The target: an absolute URL, or an App path for `kind: app`."},"label":{"type":"string","nullable":true,"description":"The link text."},"kind":{"$ref":"#/components/schemas/NotificationLinkKind"},"file_name":{"type":"string","nullable":true,"description":"For `kind: file`: the name of the file, when the notification names it."}}},"StreamReadyEvent":{"type":"object","description":"The first event of every connection: re-read the state you show (notifications, credits), since the stream does not replay what happened while you were disconnected.","required":["type","created_at","data"],"properties":{"type":{"type":"string","enum":["stream.ready"],"description":"The event type."},"created_at":{"type":"string","format":"date-time","description":"When the frame was written."},"data":{"$ref":"#/components/schemas/StreamReadyEventData"}}},"NotificationCreatedEvent":{"type":"object","description":"A notification visible to this stream was sent: the same resource `GET /v2/notifications` lists.","required":["type","created_at","data"],"properties":{"type":{"type":"string","enum":["notification.created"],"description":"The event type."},"created_at":{"type":"string","format":"date-time","description":"When the frame was written."},"data":{"$ref":"#/components/schemas/Notification"}}},"CreditsUpdatedEvent":{"type":"object","description":"A credit balance changed.","required":["type","created_at","data"],"properties":{"type":{"type":"string","enum":["credits.updated"],"description":"The event type."},"created_at":{"type":"string","format":"date-time","description":"When the frame was written."},"data":{"$ref":"#/components/schemas/CreditsUpdatedEventData"}}},"SubscriptionUpdatedEvent":{"type":"object","description":"The workspace's subscription changed.","required":["type","created_at","data"],"properties":{"type":{"type":"string","enum":["subscription.updated"],"description":"The event type."},"created_at":{"type":"string","format":"date-time","description":"When the frame was written."},"data":{"$ref":"#/components/schemas/SubscriptionUpdatedEventData"}}},"SessionRefreshRequiredEvent":{"type":"object","description":"Signed-in sessions only, never an API key.","required":["type","created_at","data"],"properties":{"type":{"type":"string","enum":["session.refresh_required"],"description":"The event type."},"created_at":{"type":"string","format":"date-time","description":"When the frame was written."},"data":{"$ref":"#/components/schemas/SessionRefreshRequiredEventData"}}},"SessionRevokedEvent":{"type":"object","description":"Signed-in sessions only, never an API key.","required":["type","created_at","data"],"properties":{"type":{"type":"string","enum":["session.revoked"],"description":"The event type."},"created_at":{"type":"string","format":"date-time","description":"When the frame was written."},"data":{"$ref":"#/components/schemas/SessionRevokedEventData"}}},"WorkspaceMemberRemovedEvent":{"type":"object","description":"A member was removed from the workspace.","required":["type","created_at","data"],"properties":{"type":{"type":"string","enum":["workspace.member_removed"],"description":"The event type."},"created_at":{"type":"string","format":"date-time","description":"When the frame was written."},"data":{"$ref":"#/components/schemas/WorkspaceMemberRemovedEventData"}}},"WorkspaceMembersRemovedEvent":{"type":"object","description":"Every member but the admin was removed from the workspace.","required":["type","created_at","data"],"properties":{"type":{"type":"string","enum":["workspace.members_removed"],"description":"The event type."},"created_at":{"type":"string","format":"date-time","description":"When the frame was written."},"data":{"$ref":"#/components/schemas/WorkspaceMembersRemovedEventData"}}},"IntegrationUpdatedEvent":{"type":"object","description":"A CRM integration connection of the workspace changed.","required":["type","created_at","data"],"properties":{"type":{"type":"string","enum":["integration.updated"],"description":"The event type."},"created_at":{"type":"string","format":"date-time","description":"When the frame was written."},"data":{"$ref":"#/components/schemas/IntegrationUpdatedEventData"}}},"PersonEmailStatus":{"type":"string","nullable":true,"enum":["valid","not_found","not_checked",null],"description":"`valid`: a deliverable address is on file. `not_found`: the finder ran and found none, or there is no company to search against. `not_checked`: no attempt yet, a search is still possible (People Enrich runs one when it reveals). null when your workspace edited the email (its own value, no verdict of ours).","x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"PersonPhoneStatus":{"type":"string","nullable":true,"enum":["not_requested","found","not_found","error",null],"description":"`not_requested`: never looked up (the only status worth a reveal). `found`: your workspace owns the number. `not_found`: the providers were asked and had none (final, never charged). `error`: the lookup failed, retry later. null when your workspace edited the phone.","x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"PersonPositionCompany":{"type":"object","description":"The employer of a position: the Company object of `/v2/companies/enrich`, whose `email` is the person's own email slot at this company. People Search trims it (no `description`, `website`, `email`, `linkedin_url` or `naics_codes`). A company we hold no record for is a stub: on People Enrich its stored `id`, `name` and `linkedin_id` (with `email`), and other keys may appear. On People Search a role that names no company is this object with every field null (`id` and `name` included), not null. `technologies` / `technologies_checked_at` are present ONLY on `POST /v2/people/enrich` and `GET /v2/people/:id` (the single-person reads the App person panel uses) - omitted (not merely empty) on People Search, People Bulk Enrich, People Exists and exports, same restriction as `Company.technologies` on the companies side.","properties":{"id":{"type":"string","nullable":true,"description":"The GetProspect company id (for `/v2/companies/enrich`); null when the position names no company we resolved."},"name":{"type":"string","nullable":true,"description":"Company name.","example":"Intercom"},"description":{"type":"string","nullable":true,"description":"What the company does."},"logo":{"type":"string","nullable":true,"description":"Logo URL.","format":"uri"},"website":{"type":"string","nullable":true,"description":"Website."},"email":{"$ref":"#/components/schemas/PersonEmail"},"linkedin_url":{"type":"string","nullable":true,"description":"LinkedIn company page."},"social_networks":{"$ref":"#/components/schemas/CompanySocialNetworks"},"industry":{"type":"string","nullable":true,"description":"Industry (see `GET /v2/enums/industries`)."},"keywords":{"type":"array","items":{"type":"string"},"description":"Specialties, flattened."},"naics_codes":{"type":"array","items":{"type":"integer"},"description":"NAICS codes."},"type":{"type":"string","nullable":true,"description":"Legal or ownership type (see `GET /v2/enums/company_types`)."},"business_type":{"type":"string","nullable":true,"description":"Audience type (see `GET /v2/enums/business_types`)."},"revenue_stream":{"type":"string","nullable":true,"description":"Revenue model (see `GET /v2/enums/revenue_streams`)."},"founded":{"type":"integer","nullable":true,"description":"Founding year."},"employee_count":{"type":"integer","nullable":true,"description":"Exact headcount, when known."},"employee_range":{"type":"string","nullable":true,"description":"Headcount bucket (see `GET /v2/enums/employee_ranges`)."},"location":{"type":"object","nullable":true,"allOf":[{"$ref":"#/components/schemas/PersonPositionCompanyLocation"}],"description":"The headquarters; null when unresolved."},"other_locations":{"type":"array","items":{"$ref":"#/components/schemas/PersonPositionCompanyLocation"},"description":"Other offices."},"technologies":{"type":"array","items":{"$ref":"#/components/schemas/CompanyTechnology"},"description":"Technologies detected on the website, most prominent category first (`[]` when none were detected or the website has not been scanned yet). Present only on `POST /v2/people/enrich` and `GET /v2/people/:id` - the App's person panel; omitted entirely (not merely empty) everywhere else a person's company appears (People Search, People Bulk Enrich, People Exists, exports)."},"technologies_checked_at":{"type":"string","format":"date-time","nullable":true,"description":"When the website was last scanned successfully; null when never scanned. Present only alongside `technologies`, on `POST /v2/people/enrich` and `GET /v2/people/:id`."}},"additionalProperties":true},"PersonSavedList":{"type":"object","required":["id","name","created_at"],"description":"A list of your workspace the person is in.","properties":{"id":{"type":"string","description":"The list id (`GET /v2/lists`)."},"name":{"type":"string","nullable":true,"description":"List name."},"created_at":{"type":"string","nullable":true,"description":"When the list was created.","format":"date-time"}}},"PeopleLookupSkip":{"type":"object","description":"An identifier sent but not usable, with why.","required":["field","reason"],"properties":{"field":{"$ref":"#/components/schemas/PeopleMatchedBy"},"reason":{"type":"string","description":"Why the identifier could not be used, readable."}}},"PersonIdFilter":{"type":"object","properties":{"include":{"description":"Only these people. Use the `id` values returned by People Search results, People Enrich, or Search Suggestions with `type: \"person\"`. Max 100 ids.","maxItems":100,"type":"array","items":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"}},"exclude":{"description":"Reject these people (same `id` values). Max 100 ids.","maxItems":100,"type":"array","items":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"}}}},"PersonNameFilter":{"type":"object","properties":{"include":{"description":"Names to match. Every word of a term must appear somewhere in the name, in any order, so \"Dmytro Shulha\" matches \"Dmytro Shulha, PhD\" and \"Helena Calero\" matches \"Helena Montoya-Calero\". Case-insensitive; diacritics are significant (\"Jose\" does not match \"José\"). Any single term qualifies. Max 500 items.","maxItems":500,"type":"array","items":{"type":"string","maxLength":512,"minLength":1}},"exclude":{"description":"Names to reject, matched the same way. Max 500 items.","maxItems":500,"type":"array","items":{"type":"string","maxLength":512,"minLength":1}}}},"PersonLinkedinUrlFilter":{"type":"object","properties":{"include":{"description":"Look up specific profiles by LinkedIn URL. The URLs pick the people and every other filter narrows them - except `company.name.include`, which here only picks which position is returned as `primary_position`. Cannot be combined with `person.id` or `person.name`. Results keep the order of the URLs (`sort_by` does not apply) and each carries the `matched_url` it was found by. 1-50 urls.","example":["https://linkedin.com/in/emily-carter-sample"],"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","maxLength":512,"minLength":1}}}},"KeywordsSource":{"type":"string","enum":["specialties","social_media_description","website_pages"],"description":"Restrict matching to these source fields (see GET /v2/enums/keywords_sources). Omit to use the default source set - see this `company_keywords` filter's own description above for what that is."},"JobTitleMatchMode":{"type":"string","enum":["CONTAINS","EXACT"],"description":"CONTAINS = the title contains every word of the term, in any order; connector words (of, and, the, ...) are ignored, so \"Director of Sales Enablement\" also matches \"Director, Sales Enablement\". EXACT = the person's LinkedIn title is exactly the term, so \"founder\" does not match \"Founder & CEO\", \"Founder of Acme LLC\" or \"Fondateur\" - use CONTAINS for those. Applies to include/exclude; ignored when boolean_search is set."},"Seniority":{"type":"string","enum":["Owner","Partner","Chief Officer","VP","Director","Senior","Manager","Entry","Intern","Unpaid"],"description":"Seniority levels to match (any of). See GET /v2/enums/seniorities."},"Department":{"type":"string","enum":["C-Suite","Consulting","Design","Education","Engineering & Technical","Finance","Human Resources","Information Technology","Legal","Marketing","Medical & Health","Operations","Sales","Account Management","Accounting","Advertising","Anesthesiology","Artificial Intelligence & Machine Learning","Bioengineering","Brand Management","Business Development","Business Intelligence","Call Center","Channel Sales","Chemical Engineering","Chiropractics","Clinical Systems","Cloud & Infrastructure","Compensation & Benefits","Compliance","Construction","Consultant","Content Marketing","Contracts","Corporate Secretary","Culture, Diversity & Inclusion","Customer Experience","Customer Marketing","Customer Retention & Development","Customer Service & Support","Customer Success","Data Center","Data Science","Database Administration","Demand Generation","Dentistry","Dermatology","DevOps","Digital Marketing","Doctors & Physicians","eCommerce Development","eCommerce Marketing","eDiscovery","Employee & Labor Relations","Engineering Management","Enterprise Architecture","Epidemiology","ERP Systems","Event Marketing","Executive","Facilities Management","Field & Outside Sales","Finance Executive","Financial Planning & Analysis","Financial Reporting","Financial Risk","Financial Systems","Founder","Governmental Affairs & Regulatory Law","Graphic & Visual & Brand Design","Help Desk & Desktop Services","HR Business Partner","Human Resources Executive","Industrial Engineering","Infectious Disease","Information Security","Information Technology Executive","Inside Sales","Intellectual Property & Patent","Internal Audit & Control","Investor Relations","IT Asset Management","IT Audit & IT Compliance","IT Operations","Labor & Employment","Lawyer & Attorney","Lead Generation","Learning & Development","Legal Counsel","Legal Executive","Legal Operations","Litigation","Logistics","Marketing Analytics & Insights","Marketing Communications","Marketing Executive","Marketing Operations","Medical & Health Executive","Medical Administration","Medical Education & Training","Medical Research","Mergers & Acquisitions","Mobile Development","Networking","Neurology","Nursing","Nutrition & Dietetics","Obstetrics & Gynecology","Oncology","Operations Executive","Ophthalmology","Optometry","Organizational Development","Orthopedics","Pathology","Pediatrics","People Operations","Pharmacy","Physical Security","Physical Therapy","Principal","Privacy","Product Management","Product Marketing","Product or UI&UX Design","Professor","Project Management","Psychiatry","Psychology","Public Health","Public Relations","Quality Management","Radiology","Real Estate","Real Estate Finance","Recruiting & Talent Acquisition","Revenue Operations","Safety","Sales Enablement","Sales Engineering","Sales Leader","Sales Operations","Scrum Master & Agile Coach","Search Engine Optimization & Pay Per Click","Servers & Cloud Infrastructure","Social Media Marketing","Software Development","Sourcing & Procurement","Superintendent","Supply Chain","Talent Management","Tax","Teacher","Telecommunications","Test & Quality Assurance","Treasury","Web Design","Web Development","Workforce Management"],"description":"Departments to match (any of). Accepts a department group (\"Sales\", \"Legal\") or a specific sub-department (\"Sales Operations\", \"Founder\"). A group matches everyone in it; a sub-department matches only that sub-department. See GET /v2/enums/departments."},"JobChangeType":{"type":"string","enum":["any","promotion","new_company"],"description":"any = any recent role change; new_company = also changed company; promotion = changed role at the same company (approximation, includes lateral moves)."},"PeopleCompanyIdFilter":{"type":"object","properties":{"include":{"description":"Only people who work at one of these companies. Use the `id` values returned by Company Search or in People Search results. Combines with an exact `company.name` as OR (a person at any listed id or any listed name); `company.domain`, `company_keywords` and a CONTAINS `company.name` still narrow it. Max 20000 ids.","maxItems":20000,"type":"array","items":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"}},"exclude":{"description":"Reject people who work at any of these companies (same `id` values). Max 20000 ids.","maxItems":20000,"type":"array","items":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"}}}},"PeopleCompanyDomainFilter":{"type":"object","properties":{"include":{"description":"Only people who work at the organization that owns one of these domains, e.g. \"stripe.com\" - see `match_mode` for which of its company pages count. Scheme, \"www.\" and any path are stripped. Max 100 items.","maxItems":100,"type":"array","items":{"type":"string","maxLength":253,"minLength":3}},"exclude":{"description":"Reject people whose company is on one of these domains.","maxItems":100,"type":"array","items":{"type":"string","maxLength":253,"minLength":3}},"match_mode":{"default":"ORGANIZATION","description":"Which company pages an `include` domain stands for. ORGANIZATION (default) = every company page that belongs to the organization owning the domain: its main page, its regional, brand and subsidiary pages. A small page that only links to the domain - a business hosted on a platform, a same-named company - is left out. PRIMARY = only the one main company page of the domain, leaving out the organization's other pages. LINKEDIN_WEBSITE = only the organization's pages whose own LinkedIn website is on the domain, so the domain is never inferred: \"stripe.com\", \"stripe.com/jobs\" and \"jobs.stripe.com\" all match \"stripe.com\"; a page that lists another site, or no website, does not. `exclude` is not affected: it always rejects every company on the domain.","allOf":[{"$ref":"#/components/schemas/CompanyDomainMatchMode"}]}}},"PeopleCompanyNameFilter":{"type":"object","properties":{"include":{"description":"Company names to match. Combined per match_mode. With EXACT, a value shaped like a website (\"stripe.com\", \"https://www.stripe.com/about\") also matches the company on that domain. Max 500 items.","maxItems":500,"type":"array","items":{"type":"string","maxLength":512,"minLength":1}},"exclude":{"description":"Company names to reject. With EXACT, a website-shaped value also rejects the company on that domain.","maxItems":500,"type":"array","items":{"type":"string","maxLength":512}},"match_mode":{"default":"EXACT","description":"EXACT (default) = the whole company name equals the term, case-insensitive. CONTAINS = the name contains the term as a substring (\"Haven Health\" matches \"Haven Health Management\") - resolved against the company index, so it is slower and capped; narrow the term if the request is rejected.","allOf":[{"$ref":"#/components/schemas/CompanyNameMatchMode"}]}}},"CompanyLinkedinIdFilter":{"type":"object","properties":{"include":{"type":"array","maxItems":500,"items":{"type":"integer","minimum":1},"description":"Match these LinkedIn companies. LinkedIn's numeric company id. Company URLs are not accepted here - enrich the company by `linkedin_url` first, then filter by the `id` that comes back. Max 500 items.","example":[162479]},"exclude":{"type":"array","maxItems":500,"items":{"type":"integer","minimum":1},"description":"Reject these LinkedIn companies. LinkedIn's numeric company id. Company URLs are not accepted here - enrich the company by `linkedin_url` first, then filter by the `id` that comes back. Max 500 items."}}},"CompanyType":{"type":"string","enum":["Privately Held","Public Company","Non Profit","Self Owned","Self Employed","Partnership","Educational","Government Agency","Unknown"],"description":"Company types to match (any of)."},"CompanyBusinessType":{"type":"string","enum":["B2B","B2C","Nonprofit","Unknown"],"description":"Business types to match (any of)."},"CompanyRevenueStream":{"type":"string","enum":["Professional Services","Product Sales","Grants / Donations","Subscriptions / Recurring","Project / Contract Work","Event / Experience Revenue","Transaction Fees","Rental / Leasing","Advertising","Financial Services","Licensing / IP","Unknown"],"description":"Revenue streams to match (any of)."},"TechnologyMatchMode":{"type":"string","enum":["ANY","ALL"],"description":"How `include` combines: `ANY` (default) - at least one; `ALL` - every one, on the same company."},"PeopleEmailContactDetailsFilter":{"type":"object","properties":{"status":{"type":"array","description":"Contact-level email status (best stored email; valid wins). Match-any: valid (>=1 valid email, or an email your workspace entered for the person), invalid, accept_all, not_found (no stored email and none entered by your workspace).","maxItems":4,"items":{"$ref":"#/components/schemas/EmailContactStatus"}},"revealed":{"type":"boolean","description":"true = only contacts whose email your workspace already revealed; false = only those NOT revealed. Requires an authenticated workspace."}}},"PeoplePhoneContactDetailsFilter":{"type":"object","properties":{"status":{"type":"array","description":"Contact-level phone status from our lookup store. Match-any: found (number on file), not_found (looked up, none), unknown (never looked up).","maxItems":3,"items":{"$ref":"#/components/schemas/PhoneContactStatus"}},"revealed":{"type":"boolean","description":"true = only contacts whose phone your workspace already revealed; false = only those NOT revealed. Requires an authenticated workspace."}}},"PeopleSavedScope":{"type":"string","enum":["any","none","without_list"],"description":"any = only contacts your workspace saved, in a list or not; none = only contacts your workspace has not saved; without_list = only contacts your workspace saved but did not file into any list."},"PeopleSavedAtRange":{"type":"object","properties":{"from":{"type":"string","description":"Saved on/after this date (ISO 8601). Optional."},"to":{"type":"string","description":"Saved on/before this date (ISO 8601). Optional."}}},"JobType":{"type":"string","enum":["people_export","companies_export","csv_enrichment","email_verification","people_delete","companies_delete","people_lists_set","companies_lists_set","list_delete","trash_restore","integration_push_all","people_save_search","people_enrich_search","companies_save_search","sequences_leads_enroll","sequences_leads_pause","sequences_leads_opt_out","sequences_leads_resume","sequences_leads_remove"],"description":"What the job does; selects the `Job` variant. New types may be added.","x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"JobStatus":{"type":"string","enum":["queued","running","awaiting_confirmation","done","failed","cancelled"],"description":"`queued` and `running` move on their own (poll after `Retry-After`); `awaiting_confirmation` waits for the caller (start or cancel the resource); `done`, `failed` and `cancelled` are final. New values may be added.","x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"PeopleExistsMatchedBy":{"type":"string","enum":["linkedin_url"],"description":"The lookup key of an exists check: always `linkedin_url`."},"PeopleExistsPerson":{"type":"object","required":["id","full_name","first_name","last_name","email","mobile_phone","location","linkedin_url","primary_position"],"properties":{"id":{"type":"string","description":"The GetProspect person id."},"full_name":{"type":"string","nullable":true,"description":"Full name."},"first_name":{"type":"string","nullable":true,"description":"First name."},"last_name":{"type":"string","nullable":true,"description":"Last name."},"email":{"$ref":"#/components/schemas/PersonEmail"},"mobile_phone":{"$ref":"#/components/schemas/PersonMobilePhone"},"location":{"type":"object","nullable":true,"allOf":[{"$ref":"#/components/schemas/PersonLocation"}]},"linkedin_url":{"type":"string","nullable":true,"description":"LinkedIn profile URL."},"primary_position":{"type":"object","nullable":true,"allOf":[{"$ref":"#/components/schemas/PeopleExistsPosition"}],"description":"The primary current role; null when the person has none."}}},"PersonSaveEmail":{"type":"object","description":"A stored valid email, revealed to your workspace by the save; or the email your team edited onto the person, which the save serves instead and never charges for.","required":["status","address","revealed"],"properties":{"status":{"type":"string","nullable":true,"description":"The email status: `valid`, or `null` for an email your team edited."},"address":{"type":"string","description":"The address."},"revealed":{"type":"boolean","enum":[true]}}},"CompanyFilterIds":{"type":"object","properties":{"include":{"maxItems":20000,"description":"Only these companies, by `id`. Max 20000 ids.","example":["64f1a2b3c4d5e6f7a8b9c0d2"],"type":"array","items":{"type":"string"}},"exclude":{"maxItems":20000,"description":"Reject these companies (same `id` values). Max 20000 ids.","type":"array","items":{"type":"string"}}}},"LocationLevel":{"type":"string","description":"How broad the place is: `region` (e.g. EMEA, a group of countries), `country`, `state` or `city`.","enum":["region","country","state","city"]},"RateLimitBucketStatus":{"type":"object","description":"One bucket: its limits, the units used so far and when each window resets.","required":["limits","used","reset"],"properties":{"limits":{"$ref":"#/components/schemas/RateLimitWindows"},"used":{"type":"object","required":["minute","day"],"description":"Units used in the current minute and UTC day.","properties":{"minute":{"type":"integer","minimum":0,"description":"Units used this minute."},"day":{"type":"integer","minimum":0,"description":"Units used this UTC day."}}},"reset":{"type":"object","required":["minute","day"],"description":"Seconds until each window starts over.","properties":{"minute":{"type":"integer","minimum":0,"description":"Seconds until the next minute (1-60)."},"day":{"type":"integer","minimum":0,"description":"Seconds until UTC midnight."}}}}},"DeleteResult":{"type":"object","required":["deleted","skipped"],"properties":{"deleted":{"type":"integer","minimum":0,"description":"Records moved to Trash so far."},"skipped":{"type":"integer","minimum":0,"description":"Records left alone (not saved in this workspace, already in Trash, ...)."}}},"ListsSetResult":{"type":"object","required":["updated","skipped"],"properties":{"updated":{"type":"integer","minimum":0,"description":"Records whose lists were set so far."},"skipped":{"type":"integer","minimum":0,"description":"Records left alone."}}},"ListDeleteResult":{"type":"object","required":["list","records_deleted"],"properties":{"list":{"type":"boolean","description":"The list itself moved to Trash."},"records_deleted":{"type":"integer","minimum":0,"description":"Records of the list moved to Trash with it."}}},"RestoreResult":{"type":"object","required":["restored","lists_restored","skipped"],"properties":{"restored":{"type":"integer","minimum":0,"description":"Records restored so far."},"lists_restored":{"type":"integer","minimum":0,"description":"Lists restored."},"skipped":{"type":"integer","minimum":0,"description":"Trash rows left alone."}}},"PushAllResult":{"type":"object","required":["integration","records_queued"],"properties":{"integration":{"type":"string","description":"The integration the records were queued for."},"records_queued":{"type":"integer","minimum":0,"description":"Records queued for the push (not finished CRM writes)."}}},"LeadEnrollRunResult":{"type":"object","required":["added","already_enrolled","opted_out","no_email","not_found"],"properties":{"added":{"type":"integer","minimum":0,"description":"People enrolled so far."},"already_enrolled":{"type":"integer","minimum":0,"description":"People already leads of the sequence."},"opted_out":{"type":"integer","minimum":0,"description":"People whose address is on the opt-out list (exact address or exact domain)."},"no_email":{"type":"integer","minimum":0,"description":"People without an email address the workspace owns."},"not_found":{"type":"integer","minimum":0,"description":"People not saved by the workspace (or no longer existing)."}}},"LeadBulkRunResult":{"type":"object","required":["matched","updated","skipped"],"properties":{"matched":{"type":"integer","minimum":0,"description":"Leads the selection matched."},"updated":{"type":"integer","minimum":0,"description":"Leads changed so far."},"skipped":{"type":"array","description":"Empty on a job: skipped leads are listed only in an inline answer. Their count is matched - updated.","items":{"type":"object","required":["person_id","reason"],"properties":{"person_id":{"type":"string","nullable":true},"reason":{"type":"string"}}}}}},"LeadRemoveRunResult":{"type":"object","required":["removed"],"properties":{"removed":{"type":"integer","minimum":0,"description":"Leads removed so far, with their messages of the sequence."}}},"WorkspaceRole":{"type":"string","description":"Your role in a workspace: `admin` (manages members, settings and billing) or `member`. The only role vocabulary of the API.","enum":["admin","member"],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"PlanCredits":{"type":"object","description":"Credits the plan grants per period, **per unit**: a subscription of `quantity` units has that many times these.","required":["email_search","email_verification","phone_search"],"properties":{"email_search":{"type":"integer","description":"Email credits."},"email_verification":{"type":"integer","description":"Email verification credits."},"phone_search":{"type":"integer","description":"Phone credits."}}},"NotificationLinkKind":{"type":"string","description":"`external`: a web page outside the App. `app`: a path inside the GetProspect App. `file`: a file to download (`file_name` names it).","enum":["external","app","file"]},"StreamReadyEventData":{"type":"object","required":["connection_id","heartbeat_seconds","expires_at","scope"],"properties":{"connection_id":{"type":"string","description":"This connection, as named in server logs."},"heartbeat_seconds":{"type":"integer","description":"Seconds between the `: ping` heartbeat comments (25)."},"expires_at":{"type":"string","format":"date-time","description":"When the server ends the stream (30 minutes after it opened): reconnect then."},"scope":{"type":"object","description":"Whose events the stream carries.","required":["workspace_id","user_id"],"properties":{"workspace_id":{"type":"integer","description":"The workspace of the credential."},"user_id":{"type":"string","nullable":true,"description":"The user of the credential (an API key: its owner)."}}}}},"CreditsUpdatedEventData":{"type":"object","description":"A hint that a balance changed. For the allowance and the other balances, read `GET /v2/credits`. Several changes of one type within 30 seconds arrive as one event carrying the last value.","required":["credit_type","available"],"properties":{"credit_type":{"type":"string","enum":["email_search","email_verification","phone_search"],"description":"Which balance changed."},"available":{"type":"integer","description":"Credits now available of that type: plan, additional and permanent credits together."}}},"SubscriptionUpdatedEventData":{"type":"object","required":["workspace_id","status"],"properties":{"workspace_id":{"type":"integer","description":"The workspace whose subscription changed."},"status":{"type":"string","nullable":true,"description":"The subscription status after the change."}}},"SessionRefreshRequiredEventData":{"type":"object","description":"Refresh the access token (`POST /auth/refresh-tokens`): its claims are out of date.","required":["reason"],"properties":{"reason":{"$ref":"#/components/schemas/SessionRefreshReason"}}},"SessionRevokedEventData":{"type":"object","description":"The session ended: sign the user out. The server closes the stream after this event.","required":["reason"],"properties":{"reason":{"$ref":"#/components/schemas/SessionRevokedReason"}}},"WorkspaceMemberRemovedEventData":{"type":"object","required":["workspace_id","user_id"],"properties":{"workspace_id":{"type":"integer","description":"The workspace."},"user_id":{"type":"string","nullable":true,"description":"The member removed; null when not known."}}},"WorkspaceMembersRemovedEventData":{"type":"object","required":["workspace_id","except_user_id"],"properties":{"workspace_id":{"type":"integer","description":"The workspace."},"except_user_id":{"type":"string","nullable":true,"description":"The admin who removed every other member, and is still a member; null when not known."}}},"IntegrationUpdatedEventData":{"type":"object","required":["integration","status"],"properties":{"integration":{"type":"string","nullable":true,"description":"Which CRM integration, e.g. `hubspot`."},"status":{"type":"string","nullable":true,"description":"The connection status after the change."}}},"PersonPositionCompanyLocation":{"type":"object","description":"A company office: the headquarters (`location`) or another office (`other_locations`).","required":["city","state","state_code","country","country_code","raw_address"],"properties":{"city":{"type":"string","nullable":true,"description":"City."},"state":{"type":"string","nullable":true,"description":"State or region."},"state_code":{"type":"string","nullable":true,"description":"State or region code."},"country":{"type":"string","nullable":true,"description":"Country."},"country_code":{"type":"string","nullable":true,"description":"ISO 3166-1 alpha-2 country code."},"raw_address":{"type":"string","nullable":true,"description":"The address as the source wrote it."}}},"CompanyDomainMatchMode":{"type":"string","enum":["ORGANIZATION","PRIMARY","LINKEDIN_WEBSITE"],"description":"Which company pages an `include` domain stands for. ORGANIZATION (default) = every company page that belongs to the organization owning the domain: its main page, its regional, brand and subsidiary pages. A small page that only links to the domain - a business hosted on a platform, a same-named company - is left out. PRIMARY = only the one main company page of the domain, leaving out the organization's other pages. LINKEDIN_WEBSITE = only the organization's pages whose own LinkedIn website is on the domain, so the domain is never inferred: \"stripe.com\", \"stripe.com/jobs\" and \"jobs.stripe.com\" all match \"stripe.com\"; a page that lists another site, or no website, does not. `exclude` is not affected: it always rejects every company on the domain."},"CompanyNameMatchMode":{"type":"string","enum":["EXACT","CONTAINS"],"description":"EXACT (default) = the whole company name equals the term, case-insensitive. CONTAINS = the name contains the term as a substring (\"Haven Health\" matches \"Haven Health Management\") - resolved against the company index, so it is slower and capped; narrow the term if the request is rejected."},"EmailContactStatus":{"type":"string","enum":["valid","invalid","accept_all","not_found"],"description":"Contact-level email status (best stored email; valid wins). Match-any: valid (>=1 valid email, or an email your workspace entered for the person), invalid, accept_all, not_found (no stored email and none entered by your workspace)."},"PhoneContactStatus":{"type":"string","enum":["found","not_found","unknown"],"description":"Contact-level phone status from our lookup store. Match-any: found (number on file), not_found (looked up, none), unknown (never looked up)."},"PeopleExistsPosition":{"type":"object","description":"The primary current role: its titles and the employer name.","required":["job_title","normalized_job_title","company"],"properties":{"job_title":{"type":"string","nullable":true,"description":"The title as written on LinkedIn."},"normalized_job_title":{"type":"string","nullable":true,"description":"Our normalized title."},"company":{"$ref":"#/components/schemas/PeopleExistsCompany"}}},"RateLimitWindows":{"type":"object","description":"The limits of one bucket. Per-second limits count requests; minute and day limits count units.","required":["second","minute","day"],"properties":{"second":{"type":"integer","minimum":0,"description":"Requests per second."},"minute":{"type":"integer","minimum":0,"description":"Units per minute."},"day":{"type":"integer","minimum":0,"description":"Units per UTC day."}}},"SessionRefreshReason":{"type":"string","nullable":true,"description":"Why the session changed: `plan_changed` (a new plan or a Limited-plan upgrade), `payment_allowed`, or null when the change was an email or phone verification, an accepted invitation or a role change, which do not say which yet. New values may be added.","enum":["plan_changed","payment_allowed",null],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"SessionRevokedReason":{"type":"string","description":"`signed_out`: this session signed out. `signed_out_everywhere`: the user signed out of every session or reset the password (the session that did it keeps its stream). `removed_from_workspace`: the user is no longer a member of the workspace. New values may be added.","enum":["signed_out","signed_out_everywhere","removed_from_workspace"],"x-enum-open":true,"x-speakeasy-unknown-values":"allow"},"PeopleExistsCompany":{"type":"object","description":"The employer, by name only.","required":["name"],"properties":{"name":{"type":"string","nullable":true,"description":"The employer name."}}}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Your API key (Settings -> API). Send it in the `x-api-key` header."},"OAuth2":{"type":"oauth2","description":"For third-party apps acting for a GetProspect user (Zapier, the Google Sheets add-on).","flows":{"authorizationCode":{"authorizationUrl":"https://app.getprospect.com/oauth2/connect","tokenUrl":"https://api.getprospect.com/oauth2/token","refreshUrl":"https://api.getprospect.com/oauth2/token","scopes":{}}}}},"examples":{"email_find_200_found":{"summary":"A verified address, served and charged","value":{"success":true,"data":{"email":"emily.carter.sample@intercom.com","status":"valid","account":"emily.carter.sample","domain":"intercom.com","domain_status":"valid","smtp_provider":"aspmx.l.google.com","free_email":false},"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}}}},"email_find_200_not_found":{"summary":"Nothing could be confirmed (`NOT_FOUND`, not charged)","value":{"success":false,"data":{"email":null,"status":"not_found","account":null,"domain":"intercom.com","domain_status":"valid","smtp_provider":"aspmx.l.google.com","free_email":false},"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}},"errors":[{"name":"NOT_FOUND","message":"Can't find email"}]}},"email_find_400_wrong_type":{"summary":"A field of the wrong type (`payload.code: wrong_type`)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"full_name must be a string","payload":{"field":"data.full_name","code":"wrong_type","received_value":42,"received_type":"number","constraints":{"isString":"full_name must be a string"}}}]}},"email_find_400_missing_company":{"summary":"Neither `domain` nor `company`","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}},"errors":[{"name":"VALIDATION_ERROR","message":"Either domain or company is required"}]}},"email_find_402_credit_limit":{"summary":"No credits left (`X-Limit-Reached: true`, `X-Limit-Type: credits`)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"PAYMENT_REQUIRED","message":"Workspace has reached its credit limit"}]}},"email_find_408_timeout":{"summary":"Still searching; the stored result is usually ready after `Retry-After`","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}},"errors":[{"name":"TIMEOUT","message":"Email search is taking longer than expected. Please retry your request in a few minutes."}]}},"email_verify_200_valid":{"summary":"A deliverable mailbox (charged once per address)","value":{"success":true,"data":{"email":"emily.carter.sample@intercom.com","status":"valid","account":"emily.carter.sample","domain":"intercom.com","domain_status":"valid","smtp_provider":"aspmx.l.google.com","free_email":false},"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}}}},"email_verify_200_verifier_failed":{"summary":"The verifier failed (`VERIFICATION_ERROR`, an `unknown` verdict, not charged)","value":{"success":false,"data":{"email":"emily.carter.sample@intercom.com","status":"unknown","account":"emily.carter.sample","domain":"intercom.com","domain_status":"unknown","smtp_provider":"unknown","free_email":false},"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}},"errors":[{"name":"VERIFICATION_ERROR","message":"Email verification failed. Please retry your request later."}]}},"email_verify_400_missing_email":{"summary":"No `data.email` (`payload.code: wrong_type`)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"email must be a string","payload":{"field":"data.email","code":"wrong_type","received_type":"undefined","constraints":{"isString":"email must be a string"}}}]}},"email_verify_402_credit_limit":{"summary":"No credits left (`X-Limit-Reached: true`, `X-Limit-Type: credits`)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"PAYMENT_REQUIRED","message":"Workspace has reached its credit limit"}]}},"email_verify_408_timeout":{"summary":"The verifier is slow; not charged","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}},"errors":[{"name":"TIMEOUT","message":"Email verification is taking longer than expected. Please retry your request in a few minutes."}]}},"email_find_get_200_found":{"summary":"A verified address, served and charged","value":{"success":true,"data":{"email":"emily.carter.sample@intercom.com","status":"valid","account":"emily.carter.sample","domain":"intercom.com","domain_status":"valid","smtp_provider":"aspmx.l.google.com","free_email":false},"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}}}},"email_find_get_200_not_found":{"summary":"Nothing could be confirmed (`NOT_FOUND`, not charged)","value":{"success":false,"data":{"email":null,"status":"not_found","account":null,"domain":"intercom.com","domain_status":"valid","smtp_provider":"aspmx.l.google.com","free_email":false},"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}},"errors":[{"name":"NOT_FOUND","message":"Can't find email"}]}},"email_find_get_400_missing_name":{"summary":"No `full_name` and not both `first_name` and `last_name`","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}},"errors":[{"name":"VALIDATION_ERROR","message":"Provide full_name or both first_name and last_name"}]}},"email_find_get_400_missing_company":{"summary":"Neither `domain` nor `company`","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}},"errors":[{"name":"VALIDATION_ERROR","message":"Either domain or company is required"}]}},"email_find_get_402_credit_limit":{"summary":"No credits left (`X-Limit-Reached: true`, `X-Limit-Type: credits`)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"PAYMENT_REQUIRED","message":"Workspace has reached its credit limit"}]}},"email_find_get_408_timeout":{"summary":"Still searching; the stored result is usually ready after `Retry-After`","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}},"errors":[{"name":"TIMEOUT","message":"Email search is taking longer than expected. Please retry your request in a few minutes."}]}},"email_verify_get_200_valid":{"summary":"A deliverable mailbox (charged once per address)","value":{"success":true,"data":{"email":"emily.carter.sample@intercom.com","status":"valid","account":"emily.carter.sample","domain":"intercom.com","domain_status":"valid","smtp_provider":"aspmx.l.google.com","free_email":false},"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}}}},"email_verify_get_200_verifier_failed":{"summary":"The verifier failed (`VERIFICATION_ERROR`, an `unknown` verdict, not charged)","value":{"success":false,"data":{"email":"emily.carter.sample@intercom.com","status":"unknown","account":"emily.carter.sample","domain":"intercom.com","domain_status":"unknown","smtp_provider":"unknown","free_email":false},"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}},"errors":[{"name":"VERIFICATION_ERROR","message":"Email verification failed. Please retry your request later."}]}},"email_verify_get_400_missing_email":{"summary":"No `email` parameter","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}},"errors":[{"name":"VALIDATION_ERROR","message":"Email is required"}]}},"email_verify_get_402_credit_limit":{"summary":"No credits left (`X-Limit-Reached: true`, `X-Limit-Type: credits`)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"PAYMENT_REQUIRED","message":"Workspace has reached its credit limit"}]}},"email_verify_get_408_timeout":{"summary":"The verifier is slow; not charged","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","credits":{"email_search":482,"email_verification":499,"reset_at":"2026-11-01T00:00:00.000Z"}},"errors":[{"name":"TIMEOUT","message":"Email verification is taking longer than expected. Please retry your request in a few minutes."}]}},"email_verifications_list_200_first_page":{"summary":"The first page","value":{"success":true,"data":[{"id":"6703f1c2a9e4b5d6c7f80912","name":"webinar-leads.csv","source":"file","status":"awaiting_confirmation","stopped_reason":null,"counts":{"total_rows":1200,"parsed_rows":1200,"billable":1130,"duplicates":42,"invalid_syntax":18,"blank":10,"verified":0,"valid":0,"invalid":0,"accept_all":0,"unknown":0},"batches":{"total":0,"done":0},"progress_percent":100,"result_files":null,"result_expires_at":null,"owner":{"id":"64b7c0ffee0123456789abcd","first_name":"Emily","last_name":"Carter","photo_url":null},"created_by":{"id":"64b7c0ffee0123456789abcd","name":"Emily Carter"},"error":null,"created_at":"2026-10-08T14:05:12.000Z","updated_at":"2026-10-08T14:05:12.000Z"}],"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","pagination":{"page":1,"per_page":25,"page_size":25,"total_pages":1,"total_count":1}}}},"email_verifications_list_400_out_of_range":{"summary":"`per_page` over 100 (`payload.code: out_of_range`)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"per_page must not be greater than 100","payload":{"field":"per_page","code":"out_of_range","received_value":500,"received_type":"number","constraints":{"max":"per_page must not be greater than 100"}}}]}},"email_verifications_history_list_200_first_page":{"summary":"The first page, newest first","value":{"success":true,"data":[{"id":"6703f4aa1b2c3d4e5f607182","email":"emily.carter.sample@intercom.com","status":"valid","provider":"aspmx.l.google.com","domain":"intercom.com","free_email":false,"owner":{"id":"64b7c0ffee0123456789abcd","first_name":"Emily","last_name":"Carter","photo_url":null},"verified_by":{"id":"64b7c0ffee0123456789abcd","name":"Emily Carter"},"created_at":"2026-10-08T13:58:02.000Z"}],"metadata":{"timestamp":"2026-10-08T14:07:55.000Z","pagination":{"page":1,"per_page":25,"page_size":25,"total_pages":1,"total_count":1}}}},"email_verifications_history_list_400_out_of_range":{"summary":"`per_page` over 100 (`payload.code: out_of_range`)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"per_page must not be greater than 100","payload":{"field":"per_page","code":"out_of_range","received_value":500,"received_type":"number","constraints":{"max":"per_page must not be greater than 100"}}}]}},"email_verifications_get_200_awaiting_confirmation":{"summary":"Counted: `start` charges `counts.billable`","value":{"success":true,"data":{"id":"6703f1c2a9e4b5d6c7f80912","name":"webinar-leads.csv","source":"file","status":"awaiting_confirmation","stopped_reason":null,"counts":{"total_rows":1200,"parsed_rows":1200,"billable":1130,"duplicates":42,"invalid_syntax":18,"blank":10,"verified":0,"valid":0,"invalid":0,"accept_all":0,"unknown":0},"batches":{"total":0,"done":0},"progress_percent":100,"result_files":null,"result_expires_at":null,"owner":{"id":"64b7c0ffee0123456789abcd","first_name":"Emily","last_name":"Carter","photo_url":null},"created_by":{"id":"64b7c0ffee0123456789abcd","name":"Emily Carter"},"error":null,"created_at":"2026-10-08T14:05:12.000Z","updated_at":"2026-10-08T14:05:12.000Z"},"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"}}},"email_verifications_get_200_completed":{"summary":"Finished: the result files are ready","value":{"success":true,"data":{"id":"6703f1c2a9e4b5d6c7f80912","name":"webinar-leads.csv","source":"file","status":"completed","stopped_reason":null,"counts":{"total_rows":1200,"parsed_rows":1200,"billable":1130,"duplicates":42,"invalid_syntax":18,"blank":10,"verified":1130,"valid":812,"invalid":201,"accept_all":96,"unknown":21},"batches":{"total":12,"done":12},"progress_percent":100,"result_files":{"all":{"url":"https://files.example.com/email-verifications/6703f1c2a9e4b5d6c7f80912/all.csv"},"valid":{"url":"https://files.example.com/email-verifications/6703f1c2a9e4b5d6c7f80912/valid.csv"},"invalid":{"url":"https://files.example.com/email-verifications/6703f1c2a9e4b5d6c7f80912/invalid.csv"}},"result_expires_at":"2026-11-07T14:21:40.000Z","owner":{"id":"64b7c0ffee0123456789abcd","first_name":"Emily","last_name":"Carter","photo_url":null},"created_by":{"id":"64b7c0ffee0123456789abcd","name":"Emily Carter"},"error":null,"created_at":"2026-10-08T14:05:12.000Z","updated_at":"2026-10-08T14:21:40.000Z"},"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"}}},"email_verifications_get_400_malformed_id":{"summary":"Not a 24-hex id","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"\"abc\" is not a valid id."}]}},"email_verifications_get_404_not_found":{"summary":"No such job in this workspace","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"NOT_FOUND","message":"Email verification 6703f1c2a9e4b5d6c7f80912 not found."}]}},"email_verifications_start_202_verifying":{"summary":"Charged and verifying","value":{"success":true,"data":{"id":"6703f1c2a9e4b5d6c7f80912","name":"webinar-leads.csv","source":"file","status":"verifying","stopped_reason":null,"counts":{"total_rows":1200,"parsed_rows":1200,"billable":1130,"duplicates":42,"invalid_syntax":18,"blank":10,"verified":0,"valid":0,"invalid":0,"accept_all":0,"unknown":0},"batches":{"total":12,"done":0},"progress_percent":0,"result_files":null,"result_expires_at":null,"owner":{"id":"64b7c0ffee0123456789abcd","first_name":"Emily","last_name":"Carter","photo_url":null},"created_by":{"id":"64b7c0ffee0123456789abcd","name":"Emily Carter"},"error":null,"created_at":"2026-10-08T14:05:12.000Z","updated_at":"2026-10-08T14:07:55.000Z"},"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"}}},"email_verifications_start_400_malformed_id":{"summary":"Not a 24-hex id","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"\"abc\" is not a valid id."}]}},"email_verifications_start_400_invalid_idempotency_key":{"summary":"A malformed `Idempotency-Key` (`payload.code: invalid_format`)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"The Idempotency-Key header must be 1-255 printable ASCII characters.","payload":{"field":"Idempotency-Key","code":"invalid_format","constraints":{"isIdempotencyKey":"Idempotency-Key must be 1-255 printable ASCII characters"}}}]}},"email_verifications_start_402_credit_limit":{"summary":"No credits left (`X-Limit-Reached: true`, `X-Limit-Type: credits`)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"PAYMENT_REQUIRED","message":"Workspace has reached its credit limit"}]}},"email_verifications_start_402_charge_failed":{"summary":"The balance is below `counts.billable` (no `X-Limit-*` headers)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"PAYMENT_REQUIRED","message":"The credits could not be charged; the job was not started."}]}},"email_verifications_start_404_not_found":{"summary":"No such job in this workspace","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"NOT_FOUND","message":"Email verification 6703f1c2a9e4b5d6c7f80912 not found."}]}},"email_verifications_start_409_invalid_state":{"summary":"The job already left `awaiting_confirmation` (`invalid_state`)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"CONFLICT","message":"The job is verifying; only an awaiting_confirmation job can be started.","payload":{"code":"invalid_state","status":"verifying"}}]}},"email_verifications_start_409_idempotency_in_progress":{"summary":"This key's start is still being charged (`Retry-After: 2`)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"CONFLICT","message":"This start is still being charged; retry after Retry-After seconds.","payload":{"code":"idempotency_in_progress"}}]}},"email_verifications_start_409_charge_lock_busy":{"summary":"Another start of the workspace is being charged (`Retry-After: 1`)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"CONFLICT","message":"Another start for this workspace is in progress. Try again in a moment.","payload":{"code":"charge_lock_busy"}}]}},"email_verifications_cancel_200_cancelled":{"summary":"Cancelled; the unverified remainder is refunded","value":{"success":true,"data":{"id":"6703f1c2a9e4b5d6c7f80912","name":"webinar-leads.csv","source":"file","status":"cancelled","stopped_reason":"cancelled_by_user","counts":{"total_rows":1200,"parsed_rows":1200,"billable":1130,"duplicates":42,"invalid_syntax":18,"blank":10,"verified":400,"valid":290,"invalid":80,"accept_all":22,"unknown":8},"batches":{"total":12,"done":4},"progress_percent":0,"result_files":null,"result_expires_at":null,"owner":{"id":"64b7c0ffee0123456789abcd","first_name":"Emily","last_name":"Carter","photo_url":null},"created_by":{"id":"64b7c0ffee0123456789abcd","name":"Emily Carter"},"error":null,"created_at":"2026-10-08T14:05:12.000Z","updated_at":"2026-10-08T14:07:55.000Z"},"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"}}},"email_verifications_cancel_400_malformed_id":{"summary":"Not a 24-hex id","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"\"abc\" is not a valid id."}]}},"email_verifications_cancel_404_not_found":{"summary":"No such job in this workspace","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"NOT_FOUND","message":"Email verification 6703f1c2a9e4b5d6c7f80912 not found."}]}},"email_verifications_cancel_409_invalid_state":{"summary":"The job is already finished (`invalid_state`)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T14:07:55.000Z"},"errors":[{"name":"CONFLICT","message":"The job is already completed.","payload":{"code":"invalid_state","status":"completed"}}]}},"companies_search_200_page":{"summary":"The first page of a search","value":{"success":true,"data":[{"id":"696fb12757da999990585cfd","name":"Intercom","description":"The AI customer service company.","logo":"https://logos.getprospect.com/ecb5a93f5fb0f0718eaf4f75634c3cf5.jpg","website":"intercom.com","email":{"domain":"intercom.com","provider":null},"linkedin_url":"https://linkedin.com/company/intercom","social_networks":{"linkedin_url":"https://www.linkedin.com/company/intercom","facebook_url":"https://www.facebook.com/intercom","twitter_url":"https://x.com/intercom","instagram_url":"https://www.instagram.com/intercom","youtube_url":"https://www.youtube.com/@intercom","tiktok_url":null,"crunchbase_url":"https://www.crunchbase.com/organization/intercom","github_url":null,"pinterest_url":null},"industry":"Software Development","keywords":["Customer Support","Live Chat","Helpdesk"],"naics_codes":[513210],"type":"Privately Held","business_type":"B2B","revenue_stream":"Subscriptions / Recurring","founded":2011,"employee_count":1800,"employee_range":"1001-5000","location":{"city":"San Francisco","state":"California","state_code":"CA","country":"United States","country_code":"US","raw_address":"55 2nd Street, 4th Floor, San Francisco, California 94105, US"},"other_locations":[{"city":"Dublin","state":"Leinster","state_code":"L","country":"Ireland","country_code":"IE","raw_address":null}],"saved":null}],"metadata":{"timestamp":"2026-10-02T12:27:10.726Z","sort_by":"company_employee_count","sort_direction":"desc","pagination":{"page":1,"per_page":25,"total_pages":56,"max_page":1000,"truncated":false,"total_count":1397}}}},"companies_search_400_unknown_field":{"summary":"A misspelled filter names the one meant","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-02T12:27:10.726Z"},"errors":[{"name":"VALIDATION_ERROR","message":"filters.company_industy is not a field of this request - did you mean filters.company_industry?","payload":{"field":"filters.company_industy","code":"unknown_field","received_value":{"include":["Software Development"]},"received_type":"object","did_you_mean":"filters.company_industry"}}]}},"companies_search_400_value_not_allowed":{"summary":"A page size outside 25, 50, 100","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-02T12:27:10.726Z"},"errors":[{"name":"VALIDATION_ERROR","message":"per_page: 30 is not an accepted value. Accepted: 25, 50, 100","payload":{"field":"per_page","code":"value_not_allowed","received_value":30,"received_type":"number","invalid_values":[30],"allowed_values":[25,50,100]}}]}},"companies_enrich_200_found":{"summary":"A company found by domain","value":{"success":true,"data":{"id":"696fb12757da999990585cfd","name":"Intercom","description":"The AI customer service company.","logo":"https://logos.getprospect.com/ecb5a93f5fb0f0718eaf4f75634c3cf5.jpg","website":"intercom.com","email":{"domain":"intercom.com","provider":null},"linkedin_url":"https://linkedin.com/company/intercom","social_networks":{"linkedin_url":"https://www.linkedin.com/company/intercom","facebook_url":"https://www.facebook.com/intercom","twitter_url":"https://x.com/intercom","instagram_url":"https://www.instagram.com/intercom","youtube_url":"https://www.youtube.com/@intercom","tiktok_url":null,"crunchbase_url":"https://www.crunchbase.com/organization/intercom","github_url":null,"pinterest_url":null},"industry":"Software Development","keywords":["Customer Support","Live Chat","Helpdesk"],"naics_codes":[513210],"type":"Privately Held","business_type":"B2B","revenue_stream":"Subscriptions / Recurring","founded":2011,"employee_count":1800,"employee_range":"1001-5000","location":{"city":"San Francisco","state":"California","state_code":"CA","country":"United States","country_code":"US","raw_address":"55 2nd Street, 4th Floor, San Francisco, California 94105, US"},"other_locations":[{"city":"Dublin","state":"Leinster","state_code":"L","country":"Ireland","country_code":"IE","raw_address":null}],"saved":null,"technologies":[{"id":"3421","name":"Intercom","icon_url":"https://cdn.jsdelivr.net/gh/enthec/webappanalyzer@eea872af449e207e055398f7369d11ee48c8ea03/src/images/icons/Intercom.svg","website":"https://www.intercom.com","categories":[{"id":"53","name":"CRM"},{"id":"52","name":"Live chat"}]}],"technologies_checked_at":"2026-10-09T12:00:00.000Z"},"metadata":{"timestamp":"2026-10-02T12:27:10.726Z","matched_by":"domain"}}},"companies_enrich_400_unknown_field":{"summary":"A key the lookup does not take","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-02T12:27:10.726Z"},"errors":[{"name":"VALIDATION_ERROR","message":"data.website is not a field of this request","payload":{"field":"data.website","code":"unknown_field","received_value":"stripe.com","received_type":"string","allowed_fields":["id","linkedin_id","linkedin_url","domain","name"]}}]}},"companies_bulk_enrich_200_buckets":{"summary":"One item per bucket","value":{"success":true,"data":{"matched":[{"identifier":"acct-1","matched_by":"domain","company":{"id":"696fb12757da999990585cfd","name":"Intercom","description":"The AI customer service company.","logo":"https://logos.getprospect.com/ecb5a93f5fb0f0718eaf4f75634c3cf5.jpg","website":"intercom.com","email":{"domain":"intercom.com","provider":null},"linkedin_url":"https://linkedin.com/company/intercom","social_networks":{"linkedin_url":"https://www.linkedin.com/company/intercom","facebook_url":"https://www.facebook.com/intercom","twitter_url":"https://x.com/intercom","instagram_url":"https://www.instagram.com/intercom","youtube_url":"https://www.youtube.com/@intercom","tiktok_url":null,"crunchbase_url":"https://www.crunchbase.com/organization/intercom","github_url":null,"pinterest_url":null},"industry":"Software Development","keywords":["Customer Support","Live Chat","Helpdesk"],"naics_codes":[513210],"type":"Privately Held","business_type":"B2B","revenue_stream":"Subscriptions / Recurring","founded":2011,"employee_count":1800,"employee_range":"1001-5000","location":{"city":"San Francisco","state":"California","state_code":"CA","country":"United States","country_code":"US","raw_address":"55 2nd Street, 4th Floor, San Francisco, California 94105, US"},"other_locations":[{"city":"Dublin","state":"Leinster","state_code":"L","country":"Ireland","country_code":"IE","raw_address":null}],"saved":null}}],"not_matched":[{"identifier":"acct-2","attempted":["domain"]}],"invalid":[{"identifier":"acct-3","reason":"No lookup fields provided. Expected one of: id, linkedin_id, linkedin_url, domain, name."}]},"metadata":{"timestamp":"2026-10-02T12:27:10.726Z","total":3,"matched_count":1,"not_matched_count":1,"invalid_count":1}}},"companies_bulk_enrich_400_out_of_range":{"summary":"No items (1-50 are taken)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-02T12:27:10.726Z"},"errors":[{"name":"VALIDATION_ERROR","message":"data must contain at least 1 elements","payload":{"field":"data","code":"out_of_range","received_value":[],"received_type":"object"}}]}},"companies_edits_update_200_renamed":{"summary":"The name edit now in place","value":{"success":true,"data":{"id":"696fb12757da999990585cfd","edits":{"name":"Intercom (EMEA)"}},"metadata":{"timestamp":"2026-10-02T12:27:10.726Z"}}},"companies_edits_update_200_cleared":{"summary":"No edit left","value":{"success":true,"data":{"id":"696fb12757da999990585cfd","edits":{}},"metadata":{"timestamp":"2026-10-02T12:27:10.726Z"}}},"companies_edits_update_400_unknown_field":{"summary":"A field the edit does not take","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-02T12:27:10.726Z"},"errors":[{"name":"VALIDATION_ERROR","message":"title is not a field of this request","payload":{"field":"title","code":"unknown_field","received_value":"Acme","received_type":"string","allowed_fields":["name"]}}]}},"companies_edits_update_404_not_saved":{"summary":"The company is not saved in the workspace","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-02T12:27:10.726Z"},"errors":[{"name":"NOT_SAVED","message":"This company is not saved in your workspace."}]}},"companies_save_200_buckets":{"summary":"Saved, not matched and invalid items","value":{"success":true,"data":{"saved":[{"identifier":"crm-17","id":"696fb12757da999990585cfd","matched_by":"domain","list_ids":[],"all_list_ids":["66f2c1d0a1b2c3d4e5f60718"],"saved_at":"2026-09-14T08:03:51.000Z"}],"not_matched":[{"identifier":"crm-18","attempted":["linkedin_url"]}],"invalid":[{"identifier":"crm-19","reason":"name is not a save identifier: resolve the company with companies_enrich first and save its id.","skipped":["name"]}],"failed":[]},"metadata":{"timestamp":"2026-10-02T12:27:10.726Z","total":3,"saved_count":1,"not_matched_count":1,"invalid_count":1,"failed_count":0,"credits":null}}},"companies_save_400_unknown_field":{"summary":"A body key the save does not take","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-02T12:27:10.726Z"},"errors":[{"name":"VALIDATION_ERROR","message":"lists is not a field of this request","payload":{"field":"lists","code":"unknown_field","received_value":["x"],"received_type":"object","allowed_fields":["data","list_ids","search_id"]}}]}},"companies_save_400_out_of_range":{"summary":"More than 50 items without an id","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-02T12:27:10.726Z"},"errors":[{"name":"VALIDATION_ERROR","message":"At most 50 items of one save may come without an id (got 51); send company ids, or split the request.","payload":{"code":"out_of_range","field":"data"}}]}},"companies_get_200_saved":{"summary":"A company the workspace saved into one list","value":{"success":true,"data":{"id":"696fb12757da999990585cfd","name":"Intercom","description":"The AI customer service company.","logo":"https://logos.getprospect.com/ecb5a93f5fb0f0718eaf4f75634c3cf5.jpg","website":"intercom.com","email":{"domain":"intercom.com","provider":null},"linkedin_url":"https://linkedin.com/company/intercom","social_networks":{"linkedin_url":"https://www.linkedin.com/company/intercom","facebook_url":"https://www.facebook.com/intercom","twitter_url":"https://x.com/intercom","instagram_url":"https://www.instagram.com/intercom","youtube_url":"https://www.youtube.com/@intercom","tiktok_url":null,"crunchbase_url":"https://www.crunchbase.com/organization/intercom","github_url":null,"pinterest_url":null},"industry":"Software Development","keywords":["Customer Support","Live Chat","Helpdesk"],"naics_codes":[513210],"type":"Privately Held","business_type":"B2B","revenue_stream":"Subscriptions / Recurring","founded":2011,"employee_count":1800,"employee_range":"1001-5000","location":{"city":"San Francisco","state":"California","state_code":"CA","country":"United States","country_code":"US","raw_address":"55 2nd Street, 4th Floor, San Francisco, California 94105, US"},"other_locations":[{"city":"Dublin","state":"Leinster","state_code":"L","country":"Ireland","country_code":"IE","raw_address":null}],"saved":{"id":null,"saved_at":"2026-09-14T08:03:51.000Z","list_ids":["66f2c1d0a1b2c3d4e5f60718"]},"technologies":[{"id":"3421","name":"Intercom","icon_url":"https://cdn.jsdelivr.net/gh/enthec/webappanalyzer@eea872af449e207e055398f7369d11ee48c8ea03/src/images/icons/Intercom.svg","website":"https://www.intercom.com","categories":[{"id":"53","name":"CRM"},{"id":"52","name":"Live chat"}]}],"technologies_checked_at":"2026-10-09T12:00:00.000Z"},"metadata":{"timestamp":"2026-10-02T12:27:10.726Z"}}},"companies_get_400_invalid_format":{"summary":"An id that is not 24 hexadecimal characters","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-02T12:27:10.726Z"},"errors":[{"name":"VALIDATION_ERROR","message":"id must be a mongodb id","payload":{"field":"id","code":"invalid_format","received_value":"stripe","received_type":"string"}}]}},"companies_get_404_not_found":{"summary":"Unknown, erased or blocked by the workspace (not told apart)","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-02T12:27:10.726Z"},"errors":[{"name":"NOT_FOUND","message":"Company 696fb12757da999990585cfe not found."}]}},"me_get_200_api_key":{"summary":"An API key","value":{"success":true,"data":{"id":"64f1c2a9e4b0a1b2c3d4e5f6","email":"ana@acme.com","pending_email":null,"first_name":"Ana","last_name":"Diaz","phone":"+34600000000","country":"es","timezone":"Europe/Madrid","profile_photo":null,"linkedin_url":null,"email_verified":true,"phone_verified":true,"status":null,"created_at":"2025-03-01T10:00:00.000Z","workspace":{"id":839270,"name":"Acme","role":"admin"},"auth":{"channel":"api","api_key_id":"66bb0c1d2e3f4a5b6c7d8e9f","session_id":null}},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"}}},"me_get_200_session":{"summary":"A signed-in app session (with the app-only fields)","value":{"success":true,"data":{"id":"64f1c2a9e4b0a1b2c3d4e5f6","email":"ana@acme.com","pending_email":null,"first_name":"Ana","last_name":"Diaz","phone":"+34600000000","country":"es","timezone":"Europe/Madrid","profile_photo":null,"linkedin_url":null,"email_verified":true,"phone_verified":true,"status":null,"created_at":"2025-03-01T10:00:00.000Z","workspace":{"id":839270,"name":"Acme","role":"admin"},"auth":{"channel":"app","api_key_id":null,"session_id":"6702a1b2c3d4e5f6a7b8c9d0"},"intercom":{"user_id":"123456","user_hash":"3f1c...e9"},"plugin_used":true,"risk_score":0,"utm_source":"google"},"metadata":{"timestamp":"2026-10-08T09:30:00.000Z"}}},"jobs_get_200_running":{"summary":"A Trash delete still running","value":{"success":true,"data":{"id":"66ff0c1e2a4b5c6d7e8f9012","type":"people_delete","status":"running","total":25000,"processed":7000,"progress_percent":28,"result":{"deleted":6950,"skipped":50},"error":null,"resource_url":null,"created_at":"2026-10-05T09:00:00.000Z","finished_at":null},"metadata":{"timestamp":"2026-10-05T09:00:00.000Z"}}},"jobs_get_200_push_all":{"summary":"An integration push-all still running (no result until done)","value":{"success":true,"data":{"id":"66ff0c1e2a4b5c6d7e8f9014","type":"integration_push_all","status":"running","total":null,"processed":null,"progress_percent":null,"result":null,"error":null,"resource_url":"/v2/integrations/hubspot","created_at":"2026-10-05T09:00:00.000Z","finished_at":null},"metadata":{"timestamp":"2026-10-05T09:00:00.000Z"}}},"jobs_get_200_export":{"summary":"A people export, done","value":{"success":true,"data":{"id":"66ff0c1e2a4b5c6d7e8f9013","type":"people_export","status":"done","total":1200,"processed":1200,"progress_percent":100,"error":null,"resource_url":"/v2/exports/66ff0c1e2a4b5c6d7e8f9013","created_at":"2026-10-05T09:00:00.000Z","finished_at":"2026-10-05T09:00:41.000Z"},"metadata":{"timestamp":"2026-10-05T09:00:00.000Z"}}},"jobs_get_400_malformed":{"summary":"Malformed id","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-05T09:00:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"\"42\" is not a valid job id.","payload":{"code":"invalid_format","field":"id","received_value":"42"}}]}},"webhooks_list_200_one":{"summary":"One webhook","value":{"success":true,"data":[{"id":"6702a1b2c3d4e5f607182930","url":"https://hooks.zapier.com/hooks/standard/1/abc/","events":["person.saved"],"status":"active","disabled_reason":null,"api_version":"2026-10","description":"New saved people to Zapier","created_by_user_id":"64a1b2c3d4e5f60718293a4b","api_key_id":null,"last_delivery":{"at":"2026-10-08T11:58:02.000Z","delivered":true,"status_class":"2xx"},"created_at":"2026-10-06T09:00:00.000Z","updated_at":"2026-10-08T11:58:02.000Z"}],"metadata":{"timestamp":"2026-10-08T12:00:00.000Z","pagination":{"page":1,"per_page":25,"total_pages":1,"total_count":1}}}},"webhooks_list_400_value_not_allowed":{"summary":"`per_page` outside 25, 50, 100","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"per_page: 10 is not an accepted value. Accepted: 25, 50, 100","payload":{"field":"per_page","code":"value_not_allowed","received_value":10,"received_type":"number","invalid_values":[10],"allowed_values":[25,50,100]}}]}},"webhooks_create_200_existing":{"summary":"The same URL and events again: the existing webhook","value":{"success":true,"data":{"id":"6702a1b2c3d4e5f607182930","url":"https://hooks.zapier.com/hooks/standard/1/abc/","events":["person.saved"],"status":"active","disabled_reason":null,"api_version":"2026-10","description":"New saved people to Zapier","created_by_user_id":"64a1b2c3d4e5f60718293a4b","api_key_id":null,"last_delivery":null,"created_at":"2026-10-06T09:00:00.000Z","updated_at":"2026-10-08T11:58:02.000Z","secret":"whsec_4f9a2c7e1b8d4a6f9e0c3b5a7d2e8f1c"},"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"}}},"webhooks_create_201_created":{"summary":"Created, with the signing secret","value":{"success":true,"data":{"id":"6702a1b2c3d4e5f607182930","url":"https://hooks.zapier.com/hooks/standard/1/abc/","events":["person.saved"],"status":"active","disabled_reason":null,"api_version":"2026-10","description":"New saved people to Zapier","created_by_user_id":"64a1b2c3d4e5f60718293a4b","api_key_id":null,"last_delivery":null,"created_at":"2026-10-06T09:00:00.000Z","updated_at":"2026-10-08T11:58:02.000Z","secret":"whsec_4f9a2c7e1b8d4a6f9e0c3b5a7d2e8f1c"},"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"}}},"webhooks_create_400_value_not_allowed":{"summary":"An event type that does not exist","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"events: \"person.created\" is not an accepted value. Accepted: person.saved, person.email_found, company.saved","payload":{"field":"events","code":"value_not_allowed","received_value":["person.created"],"received_type":"object","invalid_values":["person.created"],"allowed_values":["person.saved","person.email_found","company.saved"]}}]}},"webhooks_create_400_invalid_format":{"summary":"Not https","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"The webhook URL must use https.","payload":{"code":"invalid_format","field":"url"}}]}},"webhooks_create_400_out_of_range":{"summary":"Already 25 active webhooks","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"A workspace can have at most 25 active webhooks.","payload":{"code":"out_of_range","field":"url","max":25}}]}},"webhooks_get_200_active":{"summary":"An active webhook","value":{"success":true,"data":{"id":"6702a1b2c3d4e5f607182930","url":"https://hooks.zapier.com/hooks/standard/1/abc/","events":["person.saved"],"status":"active","disabled_reason":null,"api_version":"2026-10","description":"New saved people to Zapier","created_by_user_id":"64a1b2c3d4e5f60718293a4b","api_key_id":null,"last_delivery":{"at":"2026-10-08T11:58:02.000Z","delivered":true,"status_class":"2xx"},"created_at":"2026-10-06T09:00:00.000Z","updated_at":"2026-10-08T11:58:02.000Z"},"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"}}},"webhooks_get_400_invalid_format":{"summary":"Malformed webhook id","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"id must be a mongodb id","payload":{"field":"id","code":"invalid_format","received_value":"123","received_type":"string"}}]}},"webhooks_get_404_not_found":{"summary":"Unknown, deleted, or another workspace's webhook","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"NOT_FOUND","message":"Webhook not found."}]}},"webhooks_delete_200_deleted":{"summary":"Unsubscribed","value":{"success":true,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"}}},"webhooks_delete_400_invalid_format":{"summary":"Malformed webhook id","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"id must be a mongodb id","payload":{"field":"id","code":"invalid_format","received_value":"123","received_type":"string"}}]}},"webhooks_delete_404_not_found":{"summary":"Unknown, deleted, or another workspace's webhook","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"NOT_FOUND","message":"Webhook not found."}]}},"webhooks_update_200_active":{"summary":"An active webhook","value":{"success":true,"data":{"id":"6702a1b2c3d4e5f607182930","url":"https://hooks.zapier.com/hooks/standard/1/abc/","events":["person.saved"],"status":"active","disabled_reason":null,"api_version":"2026-10","description":"New saved people to Zapier","created_by_user_id":"64a1b2c3d4e5f60718293a4b","api_key_id":null,"last_delivery":{"at":"2026-10-08T11:58:02.000Z","delivered":true,"status_class":"2xx"},"created_at":"2026-10-06T09:00:00.000Z","updated_at":"2026-10-08T11:58:02.000Z"},"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"}}},"webhooks_update_400_value_not_allowed":{"summary":"Only `active` and `paused` can be set","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"status: \"disabled\" is not an accepted value. Accepted: active, paused","payload":{"field":"status","code":"value_not_allowed","received_value":"disabled","received_type":"string","invalid_values":["disabled"],"allowed_values":["active","paused"]}}]}},"webhooks_update_400_invalid_format":{"summary":"Malformed webhook id","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"id must be a mongodb id","payload":{"field":"id","code":"invalid_format","received_value":"123","received_type":"string"}}]}},"webhooks_update_403_creator_mismatch":{"summary":"Another member changes the URL","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"FORBIDDEN","message":"Only the member or API key that created this webhook can change its URL or events. Create your own webhook instead.","payload":{"code":"creator_mismatch"}}]}},"webhooks_update_404_not_found":{"summary":"Unknown, deleted, or another workspace's webhook","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"NOT_FOUND","message":"Webhook not found."}]}},"webhooks_update_409_creator_removed":{"summary":"Re-activating a webhook whose creator left the workspace","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"CONFLICT","message":"The member or API key that created this webhook is gone, so it cannot be re-activated. Create a new webhook.","payload":{"code":"creator_removed"}}]}},"webhooks_test_200_delivered":{"summary":"The receiver answered 2xx","value":{"success":true,"data":{"delivered":true,"status_class":"2xx","error_code":null},"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"}}},"webhooks_test_200_timeout":{"summary":"The receiver did not answer in 10 s","value":{"success":true,"data":{"delivered":false,"status_class":null,"error_code":"timeout"},"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"}}},"webhooks_test_400_invalid_format":{"summary":"Malformed webhook id","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"id must be a mongodb id","payload":{"field":"id","code":"invalid_format","received_value":"123","received_type":"string"}}]}},"webhooks_test_404_not_found":{"summary":"Unknown, deleted, or another workspace's webhook","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"NOT_FOUND","message":"Webhook not found."}]}},"webhooks_test_429_rate_limit":{"summary":"Over 10 tests per webhook per minute","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"RATE_LIMIT","message":"Too many test events; wait a minute."}]}},"webhooks_test_503_temporarily_disabled":{"summary":"Delivery not enabled for the workspace yet","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"UNAVAILABLE","message":"Webhook delivery is not enabled for this workspace yet.","payload":{"code":"temporarily_disabled"}}]}},"webhooks_deliveries_list_200_retrying":{"summary":"An event waiting for its third attempt","value":{"success":true,"data":[{"id":"evt_6704b1c2d3e4f5061728394a","event_type":"person.saved","status":"pending","attempt":2,"delivered":false,"status_class":"5xx","error_code":null,"next_attempt_at":"2026-10-08T12:30:00.000Z","created_at":"2026-10-08T11:54:00.000Z","updated_at":"2026-10-08T12:00:00.000Z"}],"metadata":{"timestamp":"2026-10-08T12:00:00.000Z","pagination":{"page":1,"per_page":25,"total_pages":1,"total_count":1}}}},"webhooks_deliveries_list_400_value_not_allowed":{"summary":"`per_page` outside 25, 50, 100","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"per_page: 10 is not an accepted value. Accepted: 25, 50, 100","payload":{"field":"per_page","code":"value_not_allowed","received_value":10,"received_type":"number","invalid_values":[10],"allowed_values":[25,50,100]}}]}},"webhooks_deliveries_list_400_invalid_format":{"summary":"Malformed webhook id","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"VALIDATION_ERROR","message":"id must be a mongodb id","payload":{"field":"id","code":"invalid_format","received_value":"123","received_type":"string"}}]}},"webhooks_deliveries_list_404_not_found":{"summary":"Unknown, deleted, or another workspace's webhook","value":{"success":false,"data":null,"metadata":{"timestamp":"2026-10-08T12:00:00.000Z"},"errors":[{"name":"NOT_FOUND","message":"Webhook not found."}]}}}},"security":[{"ApiKeyAuth":[]},{"OAuth2":[]}]}