The single “Get Contacts” read. Structured search over the brand’s contacts: free-text search, filters ({ field, operator, value } combined with logic: "and" | "or" | "none"; the allowed operators depend on the field’s type — see the operator schema — and an unsupported pairing is a 400, never a dropped clause), sort + order, and cursor pagination. Returns { data, pagination }.
search with a whole email address matches only that contact, like filters: [{ field: "email", operator: "equals", value: "…" }] or GET /v1/contacts/{email}. Any other search text matches the contacts whose email, first or last name contains any of its words, which can include other contacts, in sort order, so act on a contact found by its address. Omit every filter to list everything.
Pass an optional audienceId to scope the search to a saved audience’s members — its stored filter set is evaluated as one unit with its own logicalOperator (an OR audience stays an OR) and then ANDed with filters, so the page is exactly who a send to that audience reaches (an unknown / cross-brand id, or an audience a send would refuse → 400).
Set count: true to get { count } instead of a page.
include: ["openProfile"] attaches each returned contact’s smart-send open-time profile (openProfile, as on getContact; null when they have no opens yet). Each row costs one profile read, so a page then holds at most 10 contacts (pagination.limit reports the size read); it needs the emails scope as well (403 INSUFFICIENT_PERMISSIONS without it) and is refused with count: true.
The brand this request acts on. REQUIRED for organization-scoped credentials (otherwise 400 BRAND_ID_REQUIRED — there is no default brand); list ids with GET /v1/brands. Brand-scoped credentials may omit it, and sending a different brand returns 403 BRAND_SCOPE_MISMATCH. A brand outside your organization returns 404 BRAND_NOT_FOUND.
A whole email address matches only that contact. Other text matches the contacts whose email, first or last name contains any of its words, in sort order.
Scope to a saved audience's members. The audience's stored filter set is evaluated as one unit with its own logicalOperator (an OR audience stays an OR), then ANDed with filters. Unknown / cross-brand id, or an audience a send would refuse (unusable filters, a cohort still building) → 400.
openProfile attaches each returned contact's smart-send open-time profile (needs the emails permission as well). A page then holds at most 10 contacts; not with count: true.
Required array length: 1 element
Available options:
openProfile
Response
A page of matching contacts — or { count } when count: true.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Brew Help Docs","colors":{"primary":"#FF772D","light":"#FF772D","dark":"#FF772D"},"logo":{"light":"https://mintcdn.com/brew-796f053a/QjuRdMJynrgWDqeo/logo/lightmode.svg?fit=max\u0026auto=format\u0026n=QjuRdMJynrgWDqeo\u0026q=85\u0026s=5e906ff65142dc905a773e7747b47816","dark":"https://mintcdn.com/brew-796f053a/QjuRdMJynrgWDqeo/logo/darkmode.svg?fit=max\u0026auto=format\u0026n=QjuRdMJynrgWDqeo\u0026q=85\u0026s=d9aa0d94ceaaf92451334849952286c9","href":"https://brew.new/"},"favicon":"https://mintcdn.com/brew-796f053a/QjuRdMJynrgWDqeo/favicon.svg?fit=max\u0026auto=format\u0026n=QjuRdMJynrgWDqeo\u0026q=85\u0026s=bb65587bb488372fc3a5faa7a6b4d2fe","appearance":{"default":"system","strict":false},"background":{"color":{"light":"#f7f7f7","dark":"#262624"}},"navbar":{"links":[{"href":"https://cal.com/team/brewdotnew/brew-demo","label":"Talk with founders"}],"primary":{"type":"button","label":"Log In","href":"https://brew.new/sign-in"}},"footer":{"socials":{"website":"https://www.brew.new","youtube":"https://www.youtube.com/@brewdotnew","twitter":"https://x.com/brewdotnew","linkedin":"https://www.linkedin.com/company/brewdotnew"}},"search":{"prompt":"Ask any question about Brew"},"seo":{"metatags":{"og:image":"https://docs.brew.new/images/og/default.png","description":"Brew is the AI-native email platform for modern teams and AI agents. Describe the email and Brew designs it on brand, builds the audience, and sends it.","keywords":"AI email marketing, Brew, AI-native email platform, on-brand email, email automations, email analytics, AI agents, MCP email server","robots":"index, follow"},"indexing":"all"},"fonts":{"family":"Inter"},"contextual":{"options":["copy","view","claude","chatgpt","grok","perplexity","mcp","cursor","vscode","download-spec"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"brew-796f053a","hasAudioNarration":false,"actualSubdomain":"brew-796f053a","customDomains":["docs.brew.new"],"gitSource":{"type":"github","owner":"getbrew","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af0a4d9c5f2ed8c323f69ae","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"Developers","count":175},{"language":"default","tag":"Public API v1","count":126},{"language":"default","tag":"Changelog","count":96},{"language":"default","tag":"2026","count":42},{"language":"default","tag":"Docs","count":40},{"language":"default","tag":"Integrations","count":33},{"language":"default","tag":"Emails","count":30},{"language":"default","tag":"Automations","count":29},{"language":"default","tag":"Guides","count":27},{"language":"default","tag":"API Contracts","count":14}]},"assistantConfig":{"deflection":{"enabled":true,"email":"philip@brew.new","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/public-v1/contacts/get-contacts","slug":"/api-reference/public-v1/contacts/get-contacts","pageMetadata":{"title":"Get contacts","description":"The single \"Get Contacts\" read. Structured search over the brand’s contacts: free-text `search`, `filters` (`{ field, operator, value }` combined with `logic: \"and\" | \"or\" | \"none\"`; the allowed operators depend on the field’s type — see the `operator` schema — and an unsupported pairing is a `400`, never a dropped clause), `sort` + `order`, and cursor pagination. Returns `{ data, pagination }`.\n\n`search` with a whole email address matches only that contact, like `filters: [{ field: \"email\", operator: \"equals\", value: \"…\" }]` or `GET /v1/contacts/{email}`. Any other `search` text matches the contacts whose email, first or last name contains any of its words, which can include other contacts, in `sort` order, so act on a contact found by its address. Omit every filter to list everything.\n\nPass an optional `audienceId` to scope the search to a saved audience’s members — its stored filter set is evaluated as one unit with its own `logicalOperator` (an OR audience stays an OR) and then ANDed with `filters`, so the page is exactly who a send to that audience reaches (an unknown / cross-brand id, or an audience a send would refuse → `400`).\n\nSet `count: true` to get `{ count }` instead of a page.\n\n`include: [\"openProfile\"]` attaches each returned contact’s smart-send open-time profile (`openProfile`, as on `getContact`; `null` when they have no opens yet). Each row costs one profile read, so a page then holds at most 10 contacts (`pagination.limit` reports the size read); it needs the `emails` scope as well (`403 INSUFFICIENT_PERMISSIONS` without it) and is refused with `count: true`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/search","href":"/api-reference/public-v1/contacts/get-contacts","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"The single “Get Contacts” read. Structured search over the brand’s contacts: free-text \", _jsx(_components.code, {\n children: \"search\"\n }), \", \", _jsx(_components.code, {\n children: \"filters\"\n }), \" (\", _jsx(_components.code, {\n children: \"{ field, operator, value }\"\n }), \" combined with \", _jsx(_components.code, {\n children: \"logic: \\\"and\\\" | \\\"or\\\" | \\\"none\\\"\"\n }), \"; the allowed operators depend on the field’s type — see the \", _jsx(_components.code, {\n children: \"operator\"\n }), \" schema — and an unsupported pairing is a \", _jsx(_components.code, {\n children: \"400\"\n }), \", never a dropped clause), \", _jsx(_components.code, {\n children: \"sort\"\n }), \" + \", _jsx(_components.code, {\n children: \"order\"\n }), \", and cursor pagination. Returns \", _jsx(_components.code, {\n children: \"{ data, pagination }\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"search\"\n }), \" with a whole email address matches only that contact, like \", _jsx(_components.code, {\n children: \"filters: [{ field: \\\"email\\\", operator: \\\"equals\\\", value: \\\"…\\\" }]\"\n }), \" or \", _jsx(_components.code, {\n children: \"GET /v1/contacts/{email}\"\n }), \". Any other \", _jsx(_components.code, {\n children: \"search\"\n }), \" text matches the contacts whose email, first or last name contains any of its words, which can include other contacts, in \", _jsx(_components.code, {\n children: \"sort\"\n }), \" order, so act on a contact found by its address. Omit every filter to list everything.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Pass an optional \", _jsx(_components.code, {\n children: \"audienceId\"\n }), \" to scope the search to a saved audience’s members — its stored filter set is evaluated as one unit with its own \", _jsx(_components.code, {\n children: \"logicalOperator\"\n }), \" (an OR audience stays an OR) and then ANDed with \", _jsx(_components.code, {\n children: \"filters\"\n }), \", so the page is exactly who a send to that audience reaches (an unknown / cross-brand id, or an audience a send would refuse → \", _jsx(_components.code, {\n children: \"400\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Set \", _jsx(_components.code, {\n children: \"count: true\"\n }), \" to get \", _jsx(_components.code, {\n children: \"{ count }\"\n }), \" instead of a page.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"include: [\\\"openProfile\\\"]\"\n }), \" attaches each returned contact’s smart-send open-time profile (\", _jsx(_components.code, {\n children: \"openProfile\"\n }), \", as on \", _jsx(_components.code, {\n children: \"getContact\"\n }), \"; \", _jsx(_components.code, {\n children: \"null\"\n }), \" when they have no opens yet). Each row costs one profile read, so a page then holds at most 10 contacts (\", _jsx(_components.code, {\n children: \"pagination.limit\"\n }), \" reports the size read); it needs the \", _jsx(_components.code, {\n children: \"emails\"\n }), \" scope as well (\", _jsx(_components.code, {\n children: \"403 INSUFFICIENT_PERMISSIONS\"\n }), \" without it) and is refused with \", _jsx(_components.code, {\n children: \"count: true\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get contacts","description":"The single \"Get Contacts\" read. Structured search over the brand’s contacts: free-text `search`, `filters` (`{ field, operator, value }` combined with `logic: \"and\" | \"or\" | \"none\"`; the allowed operators depend on the field’s type — see the `operator` schema — and an unsupported pairing is a `400`, never a dropped clause), `sort` + `order`, and cursor pagination. Returns `{ data, pagination }`.\n\n`search` with a whole email address matches only that contact, like `filters: [{ field: \"email\", operator: \"equals\", value: \"…\" }]` or `GET /v1/contacts/{email}`. Any other `search` text matches the contacts whose email, first or last name contains any of its words, which can include other contacts, in `sort` order, so act on a contact found by its address. Omit every filter to list everything.\n\nPass an optional `audienceId` to scope the search to a saved audience’s members — its stored filter set is evaluated as one unit with its own `logicalOperator` (an OR audience stays an OR) and then ANDed with `filters`, so the page is exactly who a send to that audience reaches (an unknown / cross-brand id, or an audience a send would refuse → `400`).\n\nSet `count: true` to get `{ count }` instead of a page.\n\n`include: [\"openProfile\"]` attaches each returned contact’s smart-send open-time profile (`openProfile`, as on `getContact`; `null` when they have no opens yet). Each row costs one profile read, so a page then holds at most 10 contacts (`pagination.limit` reports the size read); it needs the `emails` scope as well (`403 INSUFFICIENT_PERMISSIONS` without it) and is refused with `count: true`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/search","href":"/api-reference/public-v1/contacts/get-contacts","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/brew-796f053a/b7b4876a6d26628c/ask-ai-menu.js"],"openApiReferenceData":{"operation":{"operationId":"searchContacts","tags":["Contacts"],"summary":"Get contacts","description":"The single \"Get Contacts\" read. Structured search over the brand’s contacts: free-text `search`, `filters` (`{ field, operator, value }` combined with `logic: \"and\" | \"or\" | \"none\"`; the allowed operators depend on the field’s type — see the `operator` schema — and an unsupported pairing is a `400`, never a dropped clause), `sort` + `order`, and cursor pagination. Returns `{ data, pagination }`.\n\n`search` with a whole email address matches only that contact, like `filters: [{ field: \"email\", operator: \"equals\", value: \"…\" }]` or `GET /v1/contacts/{email}`. Any other `search` text matches the contacts whose email, first or last name contains any of its words, which can include other contacts, in `sort` order, so act on a contact found by its address. Omit every filter to list everything.\n\nPass an optional `audienceId` to scope the search to a saved audience’s members — its stored filter set is evaluated as one unit with its own `logicalOperator` (an OR audience stays an OR) and then ANDed with `filters`, so the page is exactly who a send to that audience reaches (an unknown / cross-brand id, or an audience a send would refuse → `400`).\n\nSet `count: true` to get `{ count }` instead of a page.\n\n`include: [\"openProfile\"]` attaches each returned contact’s smart-send open-time profile (`openProfile`, as on `getContact`; `null` when they have no opens yet). Each row costs one profile read, so a page then holds at most 10 contacts (`pagination.limit` reports the size read); it needs the `emails` scope as well (`403 INSUFFICIENT_PERMISSIONS` without it) and is refused with `count: true`.","requestBody":"8d27ee3d-2898-4194-af12-3d14f50f6676","responses":{"200":"2bb1eb03-189e-41d9-b8f2-ff22c4971e79","400":"b3dde73d-2333-450f-bbce-d7f6e1c72e45","401":"2edc2ea1-7912-4410-8804-a84a1214b60e","403":"a6d59c07-5d1d-4f64-9052-072ff668e9ae","404":"8834326c-e8e1-46df-8363-3c2383043712","409":"65336cb8-7566-45ce-bae4-59be0e42e0ad","422":"0ec43676-7d32-4a6b-a5bb-614ada05252e","429":"5a9b4648-70d8-4115-a937-1d51dbf3de21","500":"5d1ad6be-b543-47c7-bdba-c770caee9cd6"},"parameters":["ba3d5007-7f80-4c29-8118-4ed76d4aee4e"],"x-brew-scope":"contacts","x-brew-brand-scope":"brand","x-brew-idempotency":"none","x-brew-credited":false,"x-brew-rate-policy":"contacts.read","method":"post","type":"path","servers":["16779731-d97b-4178-b35d-ab9db802c966","d75b81f5-e341-4448-9191-a43a58d2508e"],"security":["3becd03d-c396-4bc3-84c1-231cdbf0a23e","a3a3e731-b20f-48f7-873a-3123be78670a"],"path":"/v1/contacts/search","baseUrlOptions":["https://brew.new/api","http://localhost:3000/api"],"title":"Get contacts","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"ba3d5007-7f80-4c29-8118-4ed76d4aee4e":{"name":"X-Brand-Id","in":"header","required":false,"description":"The brand this request acts on. REQUIRED for organization-scoped credentials (otherwise `400 BRAND_ID_REQUIRED` — there is no default brand); list ids with `GET /v1/brands`. Brand-scoped credentials may omit it, and sending a different brand returns `403 BRAND_SCOPE_MISMATCH`. A brand outside your organization returns `404 BRAND_NOT_FOUND`.","schema":{"type":"string","minLength":1,"maxLength":64,"isRequired":false,"description":"The brand this request acts on. REQUIRED for organization-scoped credentials (otherwise `400 BRAND_ID_REQUIRED` — there is no default brand); list ids with `GET /v1/brands`. Brand-scoped credentials may omit it, and sending a different brand returns `403 BRAND_SCOPE_MISMATCH`. A brand outside your organization returns `404 BRAND_NOT_FOUND`.","uniqueKey":"","typeLabel":"string"},"example":"kx7b3s7fapqz8mjm12ekz1kxdx87yceg"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"search":{"type":"string","minLength":1,"description":"A whole email address matches only that contact. Other text matches the contacts whose email, first or last name contains any of its words, in `sort` order.","uniqueKey":"search","typeLabel":"string"},"filters":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","minLength":1,"description":"The contact column or custom-field name to filter on (e.g. `email`, `firstName`, or a key from GET /v1/fields).","isRequired":true,"uniqueKey":"filters.items.[INDEX].field","typeLabel":"string"},"operator":{"type":"string","minLength":1,"description":"Allowed operators depend on the field's type — string: equals, not_equals, contains, not_contains, contains_any, not_contains_any, starts_with, ends_with, is_empty, is_not_empty, in, not_in, exists, not_exists; number: equals, not_equals, gt, gte, lt, lte, between, is_empty, is_not_empty; date: on_date, before, after, between, is_empty, is_not_empty; bool: is_true, is_false (`equals` with true/false/1/0 is accepted as an alias). Any other operator, or an operator on a field type that does not support it, is rejected with 400 INVALID_REQUEST (`param: \"filter\"`) — nothing is silently ignored. E.g. use `equals`, not `eq`.","isRequired":true,"uniqueKey":"filters.items.[INDEX].operator","typeLabel":"string"},"value":{"type":"string","description":"The comparison value, as a string. `in`, `not_in`, `contains_any` and `not_contains_any` take a comma-separated list; `between` takes exactly two comma-separated bounds (e.g. \"10,30\"). Unary operators (`is_empty`, `is_not_empty`, `exists`, `not_exists`, `is_true`, `is_false`) ignore it — pass \"\".","isRequired":true,"uniqueKey":"filters.items.[INDEX].value","typeLabel":"string"}},"required":["field","operator","value"],"additionalProperties":false,"uniqueKey":"filters.items.[INDEX]","typeLabel":"object"},"default":[],"uniqueKey":"filters","typeLabel":"object[]"},"audienceId":{"type":"string","minLength":1,"description":"Scope to a saved audience's members. The audience's stored filter set is evaluated as one unit with its own `logicalOperator` (an OR audience stays an OR), then ANDed with `filters`. Unknown / cross-brand id, or an audience a send would refuse (unusable filters, a cohort still building) → 400.","uniqueKey":"audienceId","typeLabel":"string"},"logic":{"type":"string","enum":["and","or","none"],"default":"and","uniqueKey":"logic","typeLabel":"enum\u003cstring>"},"sort":{"type":"string","minLength":1,"default":"createdAt","uniqueKey":"sort","typeLabel":"string"},"order":{"type":"string","enum":["asc","desc"],"default":"desc","uniqueKey":"order","typeLabel":"enum\u003cstring>"},"count":{"type":"boolean","default":false,"uniqueKey":"count","typeLabel":"boolean"},"groupBy":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"uniqueKey":"groupBy.items.[INDEX]","typeLabel":"string"},"minItems":1,"maxItems":2,"description":"With `count: true`: also count per value of up to two fields (a contact field, a custom field, or `emailDomain`), largest group first.","uniqueKey":"groupBy","typeLabel":"string[]"},"bucket":{"type":"string","enum":["day","week","month"],"description":"With `count: true`: also count per UTC `createdAt` day, week (Monday start) or month.","uniqueKey":"bucket","typeLabel":"enum\u003cstring>"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":50,"uniqueKey":"limit","typeLabel":"integer"},"cursor":{"type":"string","minLength":1,"uniqueKey":"cursor","typeLabel":"string"},"include":{"type":"array","items":{"type":"string","enum":["openProfile"],"uniqueKey":"include.items.[INDEX]","typeLabel":"enum\u003cstring>"},"minItems":1,"maxItems":1,"description":"`openProfile` attaches each returned contact's smart-send open-time profile (needs the `emails` permission as well). A page then holds at most 10 contacts; not with `count: true`.","uniqueKey":"include","typeLabel":"enum\u003cstring>[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"filtered":{"title":"filtered","value":{"filters":[{"field":"plan","operator":"equals","value":"enterprise"}],"sort":"createdAt","order":"desc","limit":50}},"count":{"title":"count","value":{"filters":[{"field":"subscribed","operator":"equals","value":"true"}],"count":true}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"2bb1eb03-189e-41d9-b8f2-ff22c4971e79":{"description":"A page of matching contacts — or `{ count }` when `count: true`.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."},"X-RateLimit-Limit":{"schema":{"type":"integer","description":"Requests allowed in the current rolling rate limit window.","example":100},"required":true,"description":"Requests allowed in the current rolling rate limit window."},"X-RateLimit-Remaining":{"schema":{"type":"integer","description":"Requests remaining in the current rolling rate limit window.","example":99},"required":true,"description":"Requests remaining in the current rolling rate limit window."},"X-RateLimit-Reset":{"schema":{"type":"integer","description":"Unix timestamp in seconds when the oldest recorded request leaves the rolling window.","example":1712592360},"required":true,"description":"Unix timestamp in seconds when the oldest recorded request leaves the rolling window."}},"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["data","pagination"],"properties":{"data":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.data.items.[INDEX].email","typeLabel":"string"},"createdAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"oneOf.0.data.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"oneOf.0.data.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time>"},"firstName":{"type":"string","uniqueKey":"oneOf.0.data.items.[INDEX].firstName","typeLabel":"string"},"lastName":{"type":"string","uniqueKey":"oneOf.0.data.items.[INDEX].lastName","typeLabel":"string"},"subscribed":{"type":"boolean","default":true,"uniqueKey":"oneOf.0.data.items.[INDEX].subscribed","typeLabel":"boolean"},"consent":{"type":"object","properties":{"source":{"type":"string","enum":["api","form","import","app","integration"],"description":"Who captured it: `api` (an API caller asserted it), `form` (a signup form), `import` (a bulk import), `app` (the in-app CSV wizard checkbox), `integration` (an integration sync such as Stripe created the contact; provenance only, not an opt-in).","isRequired":true,"uniqueKey":"oneOf.0.data.items.[INDEX].consent.source","typeLabel":"enum\u003cstring>"},"capturedAt":{"type":"string","format":"date-time","description":"When it was captured.","isRequired":true,"uniqueKey":"oneOf.0.data.items.[INDEX].consent.capturedAt","typeLabel":"string\u003cdate-time>"},"policyVersion":{"type":"string","description":"The policy or terms version in force when it was captured.","uniqueKey":"oneOf.0.data.items.[INDEX].consent.policyVersion","typeLabel":"string"},"evidence":{"type":"string","description":"Free-text evidence: a form URL, a ticket, a checkbox label.","uniqueKey":"oneOf.0.data.items.[INDEX].consent.evidence","typeLabel":"string"}},"required":["source","capturedAt"],"additionalProperties":false,"uniqueKey":"oneOf.0.data.items.[INDEX].consent","typeLabel":"object"},"validationStatus":{"type":"string","enum":["valid","risky","invalid"],"description":"The latest verdict. `valid` only ever comes from a deliverability check (`validate: true` on ingest, or POST /v1/contacts/validate), which also sets `lastValidatedAt`. Without a check the free format check on ingest stores `risky` (disposable or role address) or `invalid`, and leaves the field unset otherwise: not validated.","uniqueKey":"oneOf.0.data.items.[INDEX].validationStatus","typeLabel":"enum\u003cstring>"},"suppressed":{"type":"boolean","default":false,"uniqueKey":"oneOf.0.data.items.[INDEX].suppressed","typeLabel":"boolean"},"suppressedReason":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.data.items.[INDEX].suppressedReason.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"oneOf.0.data.items.[INDEX].suppressedReason.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.data.items.[INDEX].suppressedReason","typeLabel":"string | null"},"unsubscribedDomains":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.data.items.[INDEX].unsubscribedDomains.items.[INDEX]","typeLabel":"string"},"default":[],"uniqueKey":"oneOf.0.data.items.[INDEX].unsubscribedDomains","typeLabel":"string[]"},"lastValidatedAt":{"type":"string","format":"date-time","uniqueKey":"oneOf.0.data.items.[INDEX].lastValidatedAt","typeLabel":"string\u003cdate-time>"},"validationDetails":{"type":"object","properties":{"provider":{"type":"string","enum":["brew"],"isRequired":true,"uniqueKey":"oneOf.0.data.items.[INDEX].validationDetails.provider","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","uniqueKey":"oneOf.0.data.items.[INDEX].validationDetails.reason","typeLabel":"string"},"didYouMean":{"type":"string","uniqueKey":"oneOf.0.data.items.[INDEX].validationDetails.didYouMean","typeLabel":"string"},"risk":{"type":"string","uniqueKey":"oneOf.0.data.items.[INDEX].validationDetails.risk","typeLabel":"string"},"isDisposable":{"type":"boolean","uniqueKey":"oneOf.0.data.items.[INDEX].validationDetails.isDisposable","typeLabel":"boolean"},"isRole":{"type":"boolean","uniqueKey":"oneOf.0.data.items.[INDEX].validationDetails.isRole","typeLabel":"boolean"}},"required":["provider"],"additionalProperties":false,"uniqueKey":"oneOf.0.data.items.[INDEX].validationDetails","typeLabel":"object"},"importId":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.data.items.[INDEX].importId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"oneOf.0.data.items.[INDEX].importId.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.data.items.[INDEX].importId","typeLabel":"string | null"},"csvFileName":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.data.items.[INDEX].csvFileName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"oneOf.0.data.items.[INDEX].csvFileName.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.data.items.[INDEX].csvFileName","typeLabel":"string | null"},"customFields":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.0.data.items.[INDEX].customFields.additionalProperties","typeLabel":"any"},"default":{},"uniqueKey":"oneOf.0.data.items.[INDEX].customFields","typeLabel":"object"}},"required":["email","createdAt","updatedAt"],"additionalProperties":false,"uniqueKey":"oneOf.0.data.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.0.data","typeLabel":"object[]"},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"isRequired":true,"uniqueKey":"oneOf.0.pagination.limit","typeLabel":"integer"},"cursor":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.pagination.cursor.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"oneOf.0.pagination.cursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.0.pagination.cursor","typeLabel":"string | null"},"hasMore":{"type":"boolean","isRequired":true,"uniqueKey":"oneOf.0.pagination.hasMore","typeLabel":"boolean"}},"required":["limit","cursor","hasMore"],"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.0.pagination","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["data","pagination"],"properties":{"data":{"type":"array","items":{"type":"object","properties":{"email":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.data.items.[INDEX].email","typeLabel":"string"},"createdAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"oneOf.1.data.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"oneOf.1.data.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time>"},"firstName":{"type":"string","uniqueKey":"oneOf.1.data.items.[INDEX].firstName","typeLabel":"string"},"lastName":{"type":"string","uniqueKey":"oneOf.1.data.items.[INDEX].lastName","typeLabel":"string"},"subscribed":{"type":"boolean","default":true,"uniqueKey":"oneOf.1.data.items.[INDEX].subscribed","typeLabel":"boolean"},"consent":{"type":"object","properties":{"source":{"type":"string","enum":["api","form","import","app","integration"],"description":"Who captured it: `api` (an API caller asserted it), `form` (a signup form), `import` (a bulk import), `app` (the in-app CSV wizard checkbox), `integration` (an integration sync such as Stripe created the contact; provenance only, not an opt-in).","isRequired":true,"uniqueKey":"oneOf.1.data.items.[INDEX].consent.source","typeLabel":"enum\u003cstring>"},"capturedAt":{"type":"string","format":"date-time","description":"When it was captured.","isRequired":true,"uniqueKey":"oneOf.1.data.items.[INDEX].consent.capturedAt","typeLabel":"string\u003cdate-time>"},"policyVersion":{"type":"string","description":"The policy or terms version in force when it was captured.","uniqueKey":"oneOf.1.data.items.[INDEX].consent.policyVersion","typeLabel":"string"},"evidence":{"type":"string","description":"Free-text evidence: a form URL, a ticket, a checkbox label.","uniqueKey":"oneOf.1.data.items.[INDEX].consent.evidence","typeLabel":"string"}},"required":["source","capturedAt"],"additionalProperties":false,"uniqueKey":"oneOf.1.data.items.[INDEX].consent","typeLabel":"object"},"validationStatus":{"type":"string","enum":["valid","risky","invalid"],"description":"The latest verdict. `valid` only ever comes from a deliverability check (`validate: true` on ingest, or POST /v1/contacts/validate), which also sets `lastValidatedAt`. Without a check the free format check on ingest stores `risky` (disposable or role address) or `invalid`, and leaves the field unset otherwise: not validated.","uniqueKey":"oneOf.1.data.items.[INDEX].validationStatus","typeLabel":"enum\u003cstring>"},"suppressed":{"type":"boolean","default":false,"uniqueKey":"oneOf.1.data.items.[INDEX].suppressed","typeLabel":"boolean"},"suppressedReason":{"oneOf":[{"type":"string","uniqueKey":"oneOf.1.data.items.[INDEX].suppressedReason.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"oneOf.1.data.items.[INDEX].suppressedReason.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.data.items.[INDEX].suppressedReason","typeLabel":"string | null"},"unsubscribedDomains":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.data.items.[INDEX].unsubscribedDomains.items.[INDEX]","typeLabel":"string"},"default":[],"uniqueKey":"oneOf.1.data.items.[INDEX].unsubscribedDomains","typeLabel":"string[]"},"lastValidatedAt":{"type":"string","format":"date-time","uniqueKey":"oneOf.1.data.items.[INDEX].lastValidatedAt","typeLabel":"string\u003cdate-time>"},"validationDetails":{"type":"object","properties":{"provider":{"type":"string","enum":["brew"],"isRequired":true,"uniqueKey":"oneOf.1.data.items.[INDEX].validationDetails.provider","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","uniqueKey":"oneOf.1.data.items.[INDEX].validationDetails.reason","typeLabel":"string"},"didYouMean":{"type":"string","uniqueKey":"oneOf.1.data.items.[INDEX].validationDetails.didYouMean","typeLabel":"string"},"risk":{"type":"string","uniqueKey":"oneOf.1.data.items.[INDEX].validationDetails.risk","typeLabel":"string"},"isDisposable":{"type":"boolean","uniqueKey":"oneOf.1.data.items.[INDEX].validationDetails.isDisposable","typeLabel":"boolean"},"isRole":{"type":"boolean","uniqueKey":"oneOf.1.data.items.[INDEX].validationDetails.isRole","typeLabel":"boolean"}},"required":["provider"],"additionalProperties":false,"uniqueKey":"oneOf.1.data.items.[INDEX].validationDetails","typeLabel":"object"},"importId":{"oneOf":[{"type":"string","uniqueKey":"oneOf.1.data.items.[INDEX].importId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"oneOf.1.data.items.[INDEX].importId.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.data.items.[INDEX].importId","typeLabel":"string | null"},"csvFileName":{"oneOf":[{"type":"string","uniqueKey":"oneOf.1.data.items.[INDEX].csvFileName.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"oneOf.1.data.items.[INDEX].csvFileName.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.data.items.[INDEX].csvFileName","typeLabel":"string | null"},"customFields":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.1.data.items.[INDEX].customFields.additionalProperties","typeLabel":"any"},"default":{},"uniqueKey":"oneOf.1.data.items.[INDEX].customFields","typeLabel":"object"},"openProfile":{"oneOf":[{"type":"object","properties":{"totalOpens":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.1.data.items.[INDEX].openProfile.oneOf.0.totalOpens","typeLabel":"integer"},"lastOpenedAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"oneOf.1.data.items.[INDEX].openProfile.oneOf.0.lastOpenedAt","typeLabel":"string\u003cdate-time>"},"histogram":{"type":"array","items":{"type":"integer","minimum":0,"uniqueKey":"oneOf.1.data.items.[INDEX].openProfile.oneOf.0.histogram.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"oneOf.1.data.items.[INDEX].openProfile.oneOf.0.histogram","typeLabel":"integer[]"},"bestOpenMinuteUtc":{"type":"integer","minimum":0,"maximum":1439,"uniqueKey":"oneOf.1.data.items.[INDEX].openProfile.oneOf.0.bestOpenMinuteUtc","typeLabel":"integer"},"bestSendMinuteUtc":{"type":"integer","minimum":0,"maximum":1439,"uniqueKey":"oneOf.1.data.items.[INDEX].openProfile.oneOf.0.bestSendMinuteUtc","typeLabel":"integer"},"confidence":{"type":"number","minimum":0,"maximum":1,"uniqueKey":"oneOf.1.data.items.[INDEX].openProfile.oneOf.0.confidence","typeLabel":"number"}},"required":["totalOpens","lastOpenedAt","histogram"],"additionalProperties":false,"description":"With `include` openProfile: the contact's smart-send open-time profile (48 UTC half-hour open counts and the best send time derived from them), or null when they have no opens folded yet. Not bot detection: machine opens cannot be told apart here.","uniqueKey":"oneOf.1.data.items.[INDEX].openProfile.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"totalOpens":{"type":"integer","minimum":0},"lastOpenedAt":{"type":"string","format":"date-time"},"bestOpenMinuteUtc":{"type":"integer","minimum":0,"maximum":1439},"bestSendMinuteUtc":{"type":"integer","minimum":0,"maximum":1439},"confidence":{"type":"number","minimum":0,"maximum":1},"histogram":{"type":"array","items":{"type":"integer","minimum":0}}},"required":["totalOpens","lastOpenedAt","histogram"],"additionalProperties":false,"description":"With `include` openProfile: the contact's smart-send open-time profile (48 UTC half-hour open counts and the best send time derived from them), or null when they have no opens folded yet. Not bot detection: machine opens cannot be told apart here.","uniqueKey":"oneOf.1.data.items.[INDEX].openProfile.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.data.items.[INDEX].openProfile","typeLabel":"object | null"}},"required":["email","createdAt","updatedAt"],"additionalProperties":false,"uniqueKey":"oneOf.1.data.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"oneOf.1.data","typeLabel":"object[]"},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100,"isRequired":true,"uniqueKey":"oneOf.1.pagination.limit","typeLabel":"integer"},"cursor":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.pagination.cursor.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"oneOf.1.pagination.cursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.1.pagination.cursor","typeLabel":"string | null"},"hasMore":{"type":"boolean","isRequired":true,"uniqueKey":"oneOf.1.pagination.hasMore","typeLabel":"boolean"}},"required":["limit","cursor","hasMore"],"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.1.pagination","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.1","typeLabel":"object"},{"type":"object","required":["count"],"properties":{"count":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"oneOf.2.count","typeLabel":"integer"},"groups":{"type":"array","items":{"type":"object","properties":{"key":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"oneOf.2.groups.items.[INDEX].key.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.2.groups.items.[INDEX].key.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.2.groups.items.[INDEX].key.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"oneOf.2.groups.items.[INDEX].key.additionalProperties.oneOf.3","typeLabel":"null"}],"uniqueKey":"oneOf.2.groups.items.[INDEX].key.additionalProperties","typeLabel":"string | number | boolean | null"},"isRequired":true,"uniqueKey":"oneOf.2.groups.items.[INDEX].key","typeLabel":"object"},"count":{"type":"integer","exclusiveMinimum":0,"isRequired":true,"uniqueKey":"oneOf.2.groups.items.[INDEX].count","typeLabel":"integer"},"bucket":{"oneOf":[{"type":"string","uniqueKey":"oneOf.2.groups.items.[INDEX].bucket.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"oneOf.2.groups.items.[INDEX].bucket.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.2.groups.items.[INDEX].bucket","typeLabel":"string | null"}},"required":["key","count"],"additionalProperties":false,"uniqueKey":"oneOf.2.groups.items.[INDEX]","typeLabel":"object"},"description":"With `groupBy` or `bucket`: the largest 200 groups; `key` maps each grouped field to its value, `bucket` is the ISO period start.","uniqueKey":"oneOf.2.groups","typeLabel":"object[]"},"otherCount":{"type":"integer","minimum":0,"description":"Contacts in the groups past the first 200.","uniqueKey":"oneOf.2.otherCount","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"oneOf.2","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"page":{"title":"page","value":{"data":[{"email":"jane@example.com","firstName":"Jane","lastName":"Doe","subscribed":true,"validationStatus":"valid","lastValidatedAt":"2026-04-08T12:01:00.000Z","suppressed":false,"suppressedReason":null,"consent":{"source":"form","capturedAt":"2026-04-08T12:00:00.000Z","policyVersion":"2026-03"},"createdAt":"2026-04-08T12:00:00.000Z","updatedAt":"2026-04-08T12:05:00.000Z","importId":null,"customFields":{"plan":"enterprise","revenue":4200}},{"email":"john@example.com","firstName":"John","lastName":"Smith","subscribed":true,"validationStatus":"valid","lastValidatedAt":"2026-04-08T12:01:00.000Z","suppressed":false,"suppressedReason":null,"consent":{"source":"form","capturedAt":"2026-04-08T12:00:00.000Z","policyVersion":"2026-03"},"createdAt":"2026-04-08T12:00:00.000Z","updatedAt":"2026-04-08T12:05:00.000Z","importId":null,"customFields":{"plan":"starter"}}],"pagination":{"limit":50,"cursor":"eyJsYXN0SWQiOiIxMjMiLCJsYXN0U29ydCI6MTcxMjU5MjAwMDAwMH0=","hasMore":true}}},"count":{"title":"count","value":{"count":1284}}},"exampleType":"examples"}},"exampleType":"examples"},"b3dde73d-2333-450f-bbce-d7f6e1c72e45":{"description":"`BRAND_ID_REQUIRED`: An organization-scoped credential called a brand-scoped operation without naming the brand.\n\n`INVALID_REQUEST`: The body or query failed validation: an unknown key, a wrong type, or a missing required field. `param` names the first offender; with more than one problem, `details.issues[]` lists each one (`{ param?, message }`, at most 20).","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"brandIdRequired":{"title":"brandIdRequired","value":{"error":{"code":"BRAND_ID_REQUIRED","type":"invalid_request","message":"An organization-scoped credential called a brand-scoped operation without naming the brand.","suggestion":"List brands with GET /v1/brands, then name one with the X-Brand-Id header. There is no default brand.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"invalidRequest":{"title":"invalidRequest","value":{"error":{"code":"INVALID_REQUEST","type":"invalid_request","message":"The body or query failed validation: an unknown key, a wrong type, or a missing required field. `param` names the first offender; with more than one problem, `details.issues[]` lists each one (`{ param?, message }`, at most 20).","suggestion":"Fix the field reported in `param`, and every entry in `details.issues[]` when present, then retry.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"2edc2ea1-7912-4410-8804-a84a1214b60e":{"description":"`API_KEY_REVOKED`: The API key was revoked.\n\n`AUTHENTICATION_REQUIRED`: No API key or session accompanied the request.\n\n`INVALID_API_KEY`: The API key is malformed or unknown.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"apiKeyRevoked":{"title":"apiKeyRevoked","value":{"error":{"code":"API_KEY_REVOKED","type":"authentication_error","message":"The API key was revoked.","suggestion":"Create a new active API key and retry.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"authenticationRequired":{"title":"authenticationRequired","value":{"error":{"code":"AUTHENTICATION_REQUIRED","type":"authentication_error","message":"No API key or session accompanied the request.","suggestion":"Provide a valid API key or sign in with an organization session.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"invalidApiKey":{"title":"invalidApiKey","value":{"error":{"code":"INVALID_API_KEY","type":"authentication_error","message":"The API key is malformed or unknown.","suggestion":"Check the API key format and retry with a valid active key.","docs":"https://docs.brew.new/api-reference/api/authentication"}}}},"exampleType":"examples"}},"exampleType":"examples"},"a6d59c07-5d1d-4f64-9052-072ff668e9ae":{"description":"`ACCOUNT_SUSPENDED`: The organization behind the credential is suspended.\n\n`BRAND_SCOPE_MISMATCH`: A brand-scoped credential named a brand other than the one it is bound to.\n\n`INSUFFICIENT_PERMISSIONS`: The credential lacks the permission scope the operation needs.\n\n`INSUFFICIENT_ROLE`: The caller lacks the access the operation needs: `param` names `member` (access to the brand) or `org_admin` (the organization role).","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"accountSuspended":{"title":"accountSuspended","value":{"error":{"code":"ACCOUNT_SUSPENDED","type":"authorization_error","message":"The organization behind the credential is suspended.","suggestion":"The organization behind this credential is suspended. Contact support@brew.new; do not retry.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"brandScopeMismatch":{"title":"brandScopeMismatch","value":{"error":{"code":"BRAND_SCOPE_MISMATCH","type":"authorization_error","message":"A brand-scoped credential named a brand other than the one it is bound to.","suggestion":"Omit the brand to use the one this credential is bound to, or use an organization-scoped credential to reach other brands.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"insufficientPermissions":{"title":"insufficientPermissions","value":{"error":{"code":"INSUFFICIENT_PERMISSIONS","type":"authorization_error","message":"The credential lacks the permission scope the operation needs.","suggestion":"Use an API key or session with the required permission.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"insufficientRole":{"title":"insufficientRole","value":{"error":{"code":"INSUFFICIENT_ROLE","type":"authorization_error","message":"The caller lacks the access the operation needs: `param` names `member` (access to the brand) or `org_admin` (the organization role).","suggestion":"Ask an organization admin to run this, to add you to the brand, or to make you an admin.","docs":"https://docs.brew.new/api-reference/api/authentication"}}}},"exampleType":"examples"}},"exampleType":"examples"},"8834326c-e8e1-46df-8363-3c2383043712":{"description":"`BRAND_NOT_FOUND`: The named or bound brand does not exist in this organization (unknown, deleting, or another organization).","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"brandNotFound":{"title":"brandNotFound","value":{"error":{"code":"BRAND_NOT_FOUND","type":"not_found","message":"The named or bound brand does not exist in this organization (unknown, deleting, or another organization).","suggestion":"List the brands this credential can reach with GET /v1/brands.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"65336cb8-7566-45ce-bae4-59be0e42e0ad":{"description":"`FIELD_TYPE_MISMATCH`: A value does not match the declared type of its custom field.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"fieldTypeMismatch":{"title":"fieldTypeMismatch","value":{"error":{"code":"FIELD_TYPE_MISMATCH","type":"conflict","message":"A value does not match the declared type of its custom field.","suggestion":"Send a value that matches the field's type. To change the type, delete the field (this clears its value on every contact) and create it again.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"0ec43676-7d32-4a6b-a5bb-614ada05252e":{"description":"`BATCH_TOO_LARGE`: A batch write exceeds the per-request row cap.\n\n`CORE_FIELD_IMMUTABLE`: The field is a core contact column and cannot be created, changed, or deleted as a custom field.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"batchTooLarge":{"title":"batchTooLarge","value":{"error":{"code":"BATCH_TOO_LARGE","type":"invalid_request","message":"A batch write exceeds the per-request row cap.","suggestion":"Split the request into smaller batches and retry.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"coreFieldImmutable":{"title":"coreFieldImmutable","value":{"error":{"code":"CORE_FIELD_IMMUTABLE","type":"invalid_request","message":"The field is a core contact column and cannot be created, changed, or deleted as a custom field.","suggestion":"Use a custom field name instead.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"5a9b4648-70d8-4115-a937-1d51dbf3de21":{"description":"`RATE_LIMITED`: The credential exhausted the rolling window for this route policy; Retry-After is when the oldest recorded request leaves, and the refused request does not take a slot.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."},"X-RateLimit-Limit":{"schema":{"type":"integer","description":"Requests allowed in the current rolling rate limit window.","example":100},"required":true,"description":"Requests allowed in the current rolling rate limit window."},"X-RateLimit-Remaining":{"schema":{"type":"integer","description":"Requests remaining in the current rolling rate limit window.","example":0},"required":true,"description":"Requests remaining in the current rolling rate limit window."},"X-RateLimit-Reset":{"schema":{"type":"integer","description":"Unix timestamp in seconds when the oldest recorded request leaves the rolling window.","example":1712592360},"required":true,"description":"Unix timestamp in seconds when the oldest recorded request leaves the rolling window."},"Retry-After":{"schema":{"type":"integer","description":"Seconds to wait before retrying the request.","example":42},"required":true,"description":"Seconds to wait before retrying the request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"rateLimited":{"title":"rateLimited","value":{"error":{"code":"RATE_LIMITED","type":"rate_limit","message":"The credential exhausted the rolling window for this route policy; Retry-After is when the oldest recorded request leaves, and the refused request does not take a slot.","suggestion":"Wait the Retry-After time, then retry the same request.","docs":"https://docs.brew.new/api-reference/api/rate-limits","retryAfter":42,"details":{"scope":"credential","limit":100,"remaining":0,"reset":1712592360,"consumed":false}}}}},"exampleType":"examples"}},"exampleType":"examples"},"5d1ad6be-b543-47c7-bdba-c770caee9cd6":{"description":"`INTERNAL_ERROR`: An unexpected failure; the x-request-id header identifies it.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"internalError":{"title":"internalError","value":{"error":{"code":"INTERNAL_ERROR","type":"internal_error","message":"An unexpected failure; the x-request-id header identifies it.","suggestion":"Retry the request. If it keeps failing, contact support with the x-request-id header.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"3becd03d-c396-4bc3-84c1-231cdbf0a23e":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Send your Brew API key as `Authorization: Bearer brew_xxx`.","x-default":"Bearer brew_your_api_key","scopes":[],"schemeName":"bearerAuth"}},"a3a3e731-b20f-48f7-873a-3123be78670a":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Send your Brew API key as `X-API-Key: brew_xxx`.","x-default":"brew_your_api_key","scopes":[],"schemeName":"apiKeyAuth"}}},"servers":{"16779731-d97b-4178-b35d-ab9db802c966":{"url":"https://brew.new/api","description":"Production"},"d75b81f5-e341-4448-9191-a43a58d2508e":{"url":"http://localhost:3000/api","description":"Local development"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Send your Brew API key as `Authorization: Bearer brew_xxx`.","x-default":"Bearer brew_your_api_key","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Send your Brew API key as `Authorization: Bearer brew_xxx`.","format":"bearer","default":"Bearer brew_your_api_key","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Send your Brew API key as `X-API-Key: brew_xxx`.","x-default":"brew_your_api_key","scopes":[],"schemeName":"apiKeyAuth"},"schema":{"title":"X-API-Key","type":"string","description":"Send your Brew API key as `X-API-Key: brew_xxx`.","isRequired":true,"default":"brew_your_api_key","typeLabel":"string","deprecated":false},"schemeName":"apiKeyAuth","name":"X-API-Key"}],"title":"apiKeyAuth"}]},"originalFileLocation":"api-reference/openapi-public-v1.yaml"},"subdomain":"brew-796f053a","siteName":"Brew Help Docs","title":"Get contacts - Brew Help Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T17:55:00.464Z","originalFileLocation":"api-reference/public-v1/contacts/get-contacts.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"The single \u0026quot;Get Contacts\u0026quot; read. Structured search over the brand’s contacts: free-text search, filters ({ field, operator, value } combined with logic: \u0026quot;and\u0026quot; | \u0026quot;or\u0026quot; | \u0026quot;none\u0026quot;; the allowed operators depend on the field’s type — see the operator schema — and an unsupported pairing is a 400, never a dropped clause), sort + order, and cursor pagination. Returns { data, pagination }. search with a whole email address matches only that contact, like filters: [{ field: \u0026quot;email\u0026quot;, operator: \u0026quot;equals\u0026quot;, value: \u0026quot;…\u0026quot; }] or GET /v1/contacts/{email}. Any other search text matches the contacts whose email, first or last name contains any of its words, which can include other contacts, in sort order, so act on a contact found by its address. Omit every filter to list everything. Pass an optional audienceId to scope the search to a saved audience’s members — its stored filter set is evaluated as one unit with its own logicalOperator (an OR audience stays an OR) and then ANDed with filters, so the page is exactly who a send to that audience reaches (an unknown / cross-brand id, or an audience a send would refuse → 400). Set count: true to get { count } instead of a page. include: [\u0026quot;openProfile\u0026quot;] attaches each returned contact’s smart-send open-time profile (openProfile, as on getContact; null when they have no opens yet). Each row costs one profile read, so a page then holds at most 10 contacts (pagination.limit reports the size read); it needs the emails scope as well (403 INSUFFICIENT_PERMISSIONS without it) and is refused with count: true.\">\u003cmeta data-mint-head name=\"keywords\" content=\"AI email marketing, Brew, AI-native email platform, on-brand email, email automations, email analytics, AI agents, MCP email server\">\u003cmeta data-mint-head name=\"application-name\" content=\"Brew Help Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get contacts - Brew Help Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"The single \u0026quot;Get Contacts\u0026quot; read. Structured search over the brand’s contacts: free-text search, filters ({ field, operator, value } combined with logic: \u0026quot;and\u0026quot; | \u0026quot;or\u0026quot; | \u0026quot;none\u0026quot;; the allowed operators depend on the field’s type — see the operator schema — and an unsupported pairing is a 400, never a dropped clause), sort + order, and cursor pagination. Returns { data, pagination }. search with a whole email address matches only that contact, like filters: [{ field: \u0026quot;email\u0026quot;, operator: \u0026quot;equals\u0026quot;, value: \u0026quot;…\u0026quot; }] or GET /v1/contacts/{email}. Any other search text matches the contacts whose email, first or last name contains any of its words, which can include other contacts, in sort order, so act on a contact found by its address. Omit every filter to list everything. Pass an optional audienceId to scope the search to a saved audience’s members — its stored filter set is evaluated as one unit with its own logicalOperator (an OR audience stays an OR) and then ANDed with filters, so the page is exactly who a send to that audience reaches (an unknown / cross-brand id, or an audience a send would refuse → 400). Set count: true to get { count } instead of a page. include: [\u0026quot;openProfile\u0026quot;] attaches each returned contact’s smart-send open-time profile (openProfile, as on getContact; null when they have no opens yet). Each row costs one profile read, so a page then holds at most 10 contacts (pagination.limit reports the size read); it needs the emails scope as well (403 INSUFFICIENT_PERMISSIONS without it) and is refused with count: true.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Brew Help Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.brew.new/api-reference/public-v1/contacts/get-contacts\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.brew.new/images/og/default.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get contacts - Brew Help Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The single \u0026quot;Get Contacts\u0026quot; read. Structured search over the brand’s contacts: free-text search, filters ({ field, operator, value } combined with logic: \u0026quot;and\u0026quot; | \u0026quot;or\u0026quot; | \u0026quot;none\u0026quot;; the allowed operators depend on the field’s type — see the operator schema — and an unsupported pairing is a 400, never a dropped clause), sort + order, and cursor pagination. Returns { data, pagination }. search with a whole email address matches only that contact, like filters: [{ field: \u0026quot;email\u0026quot;, operator: \u0026quot;equals\u0026quot;, value: \u0026quot;…\u0026quot; }] or GET /v1/contacts/{email}. Any other search text matches the contacts whose email, first or last name contains any of its words, which can include other contacts, in sort order, so act on a contact found by its address. Omit every filter to list everything. Pass an optional audienceId to scope the search to a saved audience’s members — its stored filter set is evaluated as one unit with its own logicalOperator (an OR audience stays an OR) and then ANDed with filters, so the page is exactly who a send to that audience reaches (an unknown / cross-brand id, or an audience a send would refuse → 400). Set count: true to get { count } instead of a page. include: [\u0026quot;openProfile\u0026quot;] attaches each returned contact’s smart-send open-time profile (openProfile, as on getContact; null when they have no opens yet). Each row costs one profile read, so a page then holds at most 10 contacts (pagination.limit reports the size read); it needs the emails scope as well (403 INSUFFICIENT_PERMISSIONS without it) and is refused with count: true.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.brew.new/images/og/default.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Brew Help Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF772D\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.brew.new/api-reference/public-v1/contacts/get-contacts\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/public-v1/contacts/get-contacts.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.brew.new/#organization\",\"name\":\"Brew Help Docs\",\"url\":\"https://docs.brew.new\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/brew-796f053a/QjuRdMJynrgWDqeo/logo/lightmode.svg?fit=max\u0026auto=format\u0026n=QjuRdMJynrgWDqeo\u0026q=85\u0026s=5e906ff65142dc905a773e7747b47816\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.brew.new#website\",\"name\":\"Brew Help Docs\",\"url\":\"https://docs.brew.new\",\"publisher\":{\"@id\":\"https://docs.brew.new/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.brew.new/api-reference/public-v1/contacts/get-contacts#webpage\",\"url\":\"https://docs.brew.new/api-reference/public-v1/contacts/get-contacts\",\"name\":\"Get contacts\",\"description\":\"The single \\\"Get Contacts\\\" read. Structured search over the brand’s contacts: free-text search, filters ({ field, operator, value } combined with logic: \\\"and\\\" | \\\"or\\\" | \\\"none\\\"; the allowed operators depend on the field’s type — see the operator schema — and an unsupported pairing is a 400, never a dropped clause), sort + order, and cursor pagination. Returns { data, pagination }. search with a whole email address matches only that contact, like filters: [{ field: \\\"email\\\", operator: \\\"equals\\\", value: \\\"…\\\" }] or GET /v1/contacts/{email}. Any other search text matches the contacts whose email, first or last name contains any of its words, which can include other contacts, in sort order, so act on a contact found by its address. Omit every filter to list everything. Pass an optional audienceId to scope the search to a saved audience’s members — its stored filter set is evaluated as one unit with its own logicalOperator (an OR audience stays an OR) and then ANDed with filters, so the page is exactly who a send to that audience reaches (an unknown / cross-brand id, or an audience a send would refuse → 400). Set count: true to get { count } instead of a page. include: [\\\"openProfile\\\"] attaches each returned contact’s smart-send open-time profile (openProfile, as on getContact; null when they have no opens yet). Each row costs one profile read, so a page then holds at most 10 contacts (pagination.limit reports the size read); it needs the emails scope as well (403 INSUFFICIENT_PERMISSIONS without it) and is refused with count: true.\",\"dateModified\":\"2026-11-06T17:55:00.464Z\",\"isPartOf\":{\"@id\":\"https://docs.brew.new#website\"},\"breadcrumb\":{\"@id\":\"https://docs.brew.new/api-reference/public-v1/contacts/get-contacts#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.brew.new/api-reference/public-v1/contacts/get-contacts#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Public API v1\",\"item\":\"https://docs.brew.new/api-reference/public-v1/emails/list-email-designs\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contacts\",\"item\":\"https://docs.brew.new/api-reference/public-v1/contacts/list-contacts\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Get contacts\",\"item\":\"https://docs.brew.new/api-reference/public-v1/contacts/get-contacts\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.brew.new/api-reference/public-v1/contacts/get-contacts#apireference\",\"headline\":\"Get contacts\",\"name\":\"Get contacts\",\"description\":\"The single \\\"Get Contacts\\\" read. Structured search over the brand’s contacts: free-text search, filters ({ field, operator, value } combined with logic: \\\"and\\\" | \\\"or\\\" | \\\"none\\\"; the allowed operators depend on the field’s type — see the operator schema — and an unsupported pairing is a 400, never a dropped clause), sort + order, and cursor pagination. Returns { data, pagination }. search with a whole email address matches only that contact, like filters: [{ field: \\\"email\\\", operator: \\\"equals\\\", value: \\\"…\\\" }] or GET /v1/contacts/{email}. Any other search text matches the contacts whose email, first or last name contains any of its words, which can include other contacts, in sort order, so act on a contact found by its address. Omit every filter to list everything. Pass an optional audienceId to scope the search to a saved audience’s members — its stored filter set is evaluated as one unit with its own logicalOperator (an OR audience stays an OR) and then ANDed with filters, so the page is exactly who a send to that audience reaches (an unknown / cross-brand id, or an audience a send would refuse → 400). Set count: true to get { count } instead of a page. include: [\\\"openProfile\\\"] attaches each returned contact’s smart-send open-time profile (openProfile, as on getContact; null when they have no opens yet). Each row costs one profile read, so a page then holds at most 10 contacts (pagination.limit reports the size read); it needs the emails scope as well (403 INSUFFICIENT_PERMISSIONS without it) and is refused with count: true.\",\"url\":\"https://docs.brew.new/api-reference/public-v1/contacts/get-contacts\",\"mainEntityOfPage\":{\"@id\":\"https://docs.brew.new/api-reference/public-v1/contacts/get-contacts#webpage\"},\"image\":\"https://docs.brew.new/images/og/default.png\",\"dateModified\":\"2026-11-06T17:55:00.464Z\",\"publisher\":{\"@id\":\"https://docs.brew.new/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.brew.new#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Brew Help Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Brew Help Docs","nav":{"global":{},"tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":"/get-started/welcome"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/brew-university"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations/integrations"}]},{"tab":"Developers","groups":[{"group":"Start Here","pages":[{"title":"Build with Brew","href":"/api-reference/overview"},{"title":"API Introduction","href":"/api-reference/api/api-introduction"},{"title":"Send Your First Email from Code","href":"/api-reference/guides/send-your-first-email-from-code"},{"title":"API Catalog","href":"/api-reference/api/api-catalog"}]},{"group":"Public API v1","pages":[{"group":"Emails","pages":[{"title":"List email designs","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails","href":"/api-reference/public-v1/emails/list-email-designs"},{"title":"Generate an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails","href":"/api-reference/public-v1/emails/generate-an-email-design"},{"title":"Get an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/{emailId}","href":"/api-reference/public-v1/emails/get-an-email-design"},{"title":"Delete an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/emails/{emailId}","href":"/api-reference/public-v1/emails/delete-an-email-design"},{"title":"Edit an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/emails/{emailId}","href":"/api-reference/public-v1/emails/edit-an-email-design"},{"title":"Import an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/import","href":"/api-reference/public-v1/emails/import-an-email"},{"title":"Import a Figma frame","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/figma","href":"/api-reference/public-v1/emails/import-a-figma-frame"},{"title":"Clone an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/clone","href":"/api-reference/public-v1/emails/clone-an-email-design"},{"title":"Restore a historical version","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/restore","href":"/api-reference/public-v1/emails/restore-a-historical-version"},{"title":"Export a design to an ESP","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/export","href":"/api-reference/public-v1/emails/export-a-design-to-an-esp"},{"title":"Audit an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/audit","href":"/api-reference/public-v1/emails/audit-an-email"},{"title":"Preview across clients \u0026 devices","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/client-previews","href":"/api-reference/public-v1/emails/preview-across-clients-\u0026-devices"},{"title":"List inbox placement tests","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/{emailId}/inbox-placement-tests","href":"/api-reference/public-v1/emails/list-inbox-placement-tests"},{"title":"Run an inbox placement test","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/inbox-placement-tests","href":"/api-reference/public-v1/emails/run-an-inbox-placement-test"},{"title":"Get inbox placement test results","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/{emailId}/inbox-placement-tests/{testId}","href":"/api-reference/public-v1/emails/get-inbox-placement-test-results"},{"title":"Read a saved email audit","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/audits/{auditId}","href":"/api-reference/public-v1/emails/read-a-saved-email-audit"},{"title":"Read email rendering progress","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/client-previews/{previewId}","href":"/api-reference/public-v1/emails/read-email-rendering-progress"},{"title":"Create an authenticated email canvas embed session","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/canvas/sessions","href":"/api-reference/public-v1/emails/create-an-authenticated-email-canvas-embed-session"},{"title":"Refresh a canvas session","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/canvas/sessions/{sessionId}/refresh","href":"/api-reference/public-v1/emails/refresh-a-canvas-session"},{"title":"Revoke a canvas session","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/canvas/sessions/{sessionId}","href":"/api-reference/public-v1/emails/revoke-a-canvas-session"},{"title":"List email groups","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/email-groups","href":"/api-reference/public-v1/emails/list-email-groups"},{"title":"Create an email group","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/email-groups","href":"/api-reference/public-v1/emails/create-an-email-group"},{"title":"Get an email group","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/email-groups/{groupId}","href":"/api-reference/public-v1/emails/get-an-email-group"},{"title":"Delete an email group","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/email-groups/{groupId}","href":"/api-reference/public-v1/emails/delete-an-email-group"},{"title":"Update an email group","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/email-groups/{groupId}","href":"/api-reference/public-v1/emails/update-an-email-group"},{"title":"Send an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/sends","href":"/api-reference/public-v1/emails/send-an-email"},{"title":"Cancel a send","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/sends/{sendId}/cancel","href":"/api-reference/public-v1/emails/cancel-a-send"},{"title":"Pause a gradual send","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/sends/{sendId}/pause","href":"/api-reference/public-v1/emails/pause-a-gradual-send"},{"title":"Resume a paused gradual send","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/sends/{sendId}/resume","href":"/api-reference/public-v1/emails/resume-a-paused-gradual-send"},{"title":"List email comments","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/{emailId}/comments","href":"/api-reference/public-v1/emails/list-email-comments"}]},{"group":"Sends","pages":[{"title":"List sends","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/sends","href":"/api-reference/public-v1/sends/list-sends"},{"title":"Get a send","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/sends/{sendId}","href":"/api-reference/public-v1/sends/get-a-send"}]},{"group":"Analytics","pages":[{"title":"Brand overview (totals, rates, timeseries)","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/analytics/overview","href":"/api-reference/public-v1/analytics/brand-overview-totals-rates-timeseries"},{"title":"Automation performance","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/analytics/automations","href":"/api-reference/public-v1/analytics/automation-performance"},{"title":"Unified events feed","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/analytics/events","href":"/api-reference/public-v1/analytics/unified-events-feed"}]},{"group":"Automations","pages":[{"title":"List automations","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations","href":"/api-reference/public-v1/automations/list-automations"},{"title":"Create an automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations","href":"/api-reference/public-v1/automations/create-an-automation"},{"title":"Get an automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/{automationId}","href":"/api-reference/public-v1/automations/get-an-automation"},{"title":"Delete an automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/automations/{automationId}","href":"/api-reference/public-v1/automations/delete-an-automation"},{"title":"Update or publish an automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/automations/{automationId}","href":"/api-reference/public-v1/automations/update-or-publish-an-automation"},{"title":"Test an automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/{automationId}/test","href":"/api-reference/public-v1/automations/test-an-automation"},{"title":"Run a manual-audience automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/{automationId}/run","href":"/api-reference/public-v1/automations/run-a-manual-audience-automation"},{"title":"List manual-audience runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/audience-runs","href":"/api-reference/public-v1/automations/list-manual-audience-runs"},{"title":"Get a manual-audience run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/audience-runs/{audienceRunId}","href":"/api-reference/public-v1/automations/get-a-manual-audience-run"},{"title":"Pause a manual-audience run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/audience-runs/{audienceRunId}/pause","href":"/api-reference/public-v1/automations/pause-a-manual-audience-run"},{"title":"Resume a manual-audience run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/audience-runs/{audienceRunId}/resume","href":"/api-reference/public-v1/automations/resume-a-manual-audience-run"},{"title":"Cancel a manual-audience run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/audience-runs/{audienceRunId}/cancel","href":"/api-reference/public-v1/automations/cancel-a-manual-audience-run"},{"title":"List automation runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/runs","href":"/api-reference/public-v1/automations/list-automation-runs"},{"title":"Get an automation run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/runs/{automationRunId}","href":"/api-reference/public-v1/automations/get-an-automation-run"},{"title":"Cancel an automation run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/runs/{automationRunId}/cancel","href":"/api-reference/public-v1/automations/cancel-an-automation-run"},{"title":"Get or create an unsubscribe trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/triggers/brew-events","href":"/api-reference/public-v1/automations/get-or-create-an-unsubscribe-trigger"},{"title":"List triggers","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/triggers","href":"/api-reference/public-v1/automations/list-triggers"},{"title":"Create a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/triggers","href":"/api-reference/public-v1/automations/create-a-trigger"},{"title":"Get a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/triggers/{triggerEventId}","href":"/api-reference/public-v1/automations/get-a-trigger"},{"title":"Delete a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/automations/triggers/{triggerEventId}","href":"/api-reference/public-v1/automations/delete-a-trigger"},{"title":"Update a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/automations/triggers/{triggerEventId}","href":"/api-reference/public-v1/automations/update-a-trigger"},{"title":"Check a trigger is ready to fire","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/triggers/{triggerEventId}/readiness","href":"/api-reference/public-v1/automations/check-a-trigger-is-ready-to-fire"},{"title":"Fire a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/triggers/{triggerEventId}/fire","href":"/api-reference/public-v1/automations/fire-a-trigger"},{"title":"Get a trigger payload contract","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/triggers/{triggerEventId}/contract","href":"/api-reference/public-v1/automations/get-a-trigger-payload-contract"},{"title":"Declare a trigger payload contract","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml put /v1/automations/triggers/{triggerEventId}/contract","href":"/api-reference/public-v1/automations/declare-a-trigger-payload-contract"},{"title":"Validate a trigger payload","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/triggers/{triggerEventId}/contract/validate","href":"/api-reference/public-v1/automations/validate-a-trigger-payload"},{"title":"Infer a payload contract from an example","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/payload-contracts/infer","href":"/api-reference/public-v1/automations/infer-a-payload-contract-from-an-example"},{"title":"List trigger instances","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/trigger-instances","href":"/api-reference/public-v1/automations/list-trigger-instances"},{"title":"Get a trigger instance","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/trigger-instances/{triggerInstanceId}","href":"/api-reference/public-v1/automations/get-a-trigger-instance"}]},{"group":"Contacts","pages":[{"title":"List contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/contacts","href":"/api-reference/public-v1/contacts/list-contacts"},{"title":"Create or update contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts","href":"/api-reference/public-v1/contacts/create-or-update-contacts"},{"title":"Get a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/contacts/{email}","href":"/api-reference/public-v1/contacts/get-a-contact"},{"title":"Delete a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/contacts/{email}","href":"/api-reference/public-v1/contacts/delete-a-contact"},{"title":"Update a contact","description":"Patches fields on the contact (`{ fields: { \u003cname>: \u003cvalue> } }` — core columns or custom fields) and/or records marketing consent provenance (`{ consent: { source, capturedAt?, policyVersion?, evidence? } }`, never re-subscribing an opt-out). Send one or both. Returns `{ contact, updated, warnings }`: `updated` lists the fields whose stored value changed (`consent` included), and is empty when every value sent matched what was stored (nothing is written then). `warnings` carries the same `DATE_ORDER_ASSUMED` and `FIELD_TYPE_COERCED` caveats a single upsert reports: an ambiguous date such as `03/04/2026` reads month/day, so send `YYYY-MM-DD`. A JSON number past 9007199254740991 (2^53 - 1) arrives already rounded, so a `number` or `string` field refuses it with `409 FIELD_TYPE_MISMATCH`; send large ids as JSON strings to a `string` field. `fields.subscribed: false` unsubscribes; `true` on a contact who opted out is a `422 RESUBSCRIBE_NOT_ALLOWED` (they re-subscribe through their own action, or from their contact page in the Brew app). Two `fields` keys that name one field (`plan` and `Plan`, `customFields.plan` and `plan`) are a `422 FIELD_NAME_COLLISION`, nothing written.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/contacts/{email}","href":"/api-reference/public-v1/contacts/update-a-contact"},{"title":"Get contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/search","href":"/api-reference/public-v1/contacts/get-contacts"},{"title":"Validate email deliverability","description":"Batch deliverability check (up to 100 addresses) — run BEFORE importing or sending. Each address is classified `valid` (safe), `risky` (deliverable but flagged — e.g. role account, disposable, catch-all), or `invalid` (undeliverable / do-not-send), with a machine-readable `reason` and a `didYouMean` typo correction when applicable. Partial outages retain the legacy `status: risky` with `checkOutcome: unavailable` (not a completed risky verdict) and preserve the stored verdict. `persistence` reports matched, modified and failed update-only writes; validation never grants subscription or clears suppression. Cost: 2 credits PER ADDRESS (`X-Credit-Cost` = 2 × the number of addresses), charged ONLY on success — if the check cannot complete for the whole batch, the call returns `503` (transient outages are retryable; configuration failures need support) and is NOT billed.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/validate","href":"/api-reference/public-v1/contacts/validate-email-deliverability"},{"title":"Bulk-import contacts from CSV","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/import-csv","href":"/api-reference/public-v1/contacts/bulk-import-contacts-from-csv"},{"title":"Bulk-import contacts from JSON","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/import","href":"/api-reference/public-v1/contacts/bulk-import-contacts-from-json"},{"title":"Batch-delete contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/batch-delete","href":"/api-reference/public-v1/contacts/batch-delete-contacts"}]},{"group":"Contact Fields","pages":[{"title":"List contact fields","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/fields","href":"/api-reference/public-v1/contact-fields/list-contact-fields"},{"title":"Create a contact field","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/fields","href":"/api-reference/public-v1/contact-fields/create-a-contact-field"},{"title":"Get a contact field","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/fields/{fieldName}","href":"/api-reference/public-v1/contact-fields/get-a-contact-field"},{"title":"Delete a contact field","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/fields/{fieldName}","href":"/api-reference/public-v1/contact-fields/delete-a-contact-field"}]},{"group":"Audiences","pages":[{"title":"List audiences","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/audiences","href":"/api-reference/public-v1/audiences/list-audiences"},{"title":"Create an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/audiences","href":"/api-reference/public-v1/audiences/create-an-audience"},{"title":"Get an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/audiences/{audienceId}","href":"/api-reference/public-v1/audiences/get-an-audience"},{"title":"Delete an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/audiences/{audienceId}","href":"/api-reference/public-v1/audiences/delete-an-audience"},{"title":"Update an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/audiences/{audienceId}","href":"/api-reference/public-v1/audiences/update-an-audience"},{"title":"Create an audience from analytics events","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/audiences/from-events","href":"/api-reference/public-v1/audiences/create-an-audience-from-analytics-events"},{"title":"Duplicate an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/audiences/{audienceId}/duplicate","href":"/api-reference/public-v1/audiences/duplicate-an-audience"}]},{"group":"Domains","pages":[{"title":"List domains","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains","href":"/api-reference/public-v1/domains/list-domains"},{"title":"Add a domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/domains","href":"/api-reference/public-v1/domains/add-a-domain"},{"title":"Get a domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains/{domainId}","href":"/api-reference/public-v1/domains/get-a-domain"},{"title":"Delete a domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/domains/{domainId}","href":"/api-reference/public-v1/domains/delete-a-domain"},{"title":"Update domain settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/domains/{domainId}","href":"/api-reference/public-v1/domains/update-domain-settings"},{"title":"Verify a domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/domains/{domainId}/verify","href":"/api-reference/public-v1/domains/verify-a-domain"},{"title":"List a domain's unsubscribes","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains/{domainId}/unsubscribes","href":"/api-reference/public-v1/domains/list-a-domains-unsubscribes"},{"title":"Add addresses to a domain's unsubscribe list","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/domains/{domainId}/unsubscribes","href":"/api-reference/public-v1/domains/add-addresses-to-a-domains-unsubscribe-list"},{"title":"Remove an address from a domain's unsubscribe list","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/domains/{domainId}/unsubscribes/{email}","href":"/api-reference/public-v1/domains/remove-an-address-from-a-domains-unsubscribe-list"},{"title":"Import a CSV into a domain's unsubscribe list","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/domains/{domainId}/unsubscribes/import","href":"/api-reference/public-v1/domains/import-a-csv-into-a-domains-unsubscribe-list"},{"title":"Export a domain's unsubscribe list","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains/{domainId}/unsubscribes/export","href":"/api-reference/public-v1/domains/export-a-domains-unsubscribe-list"},{"title":"Get domain health","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains/{domainId}/health","href":"/api-reference/public-v1/domains/get-domain-health"}]},{"group":"Templates","pages":[{"title":"List templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/templates","href":"/api-reference/public-v1/templates/list-templates"},{"title":"Get a public template","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/templates/{templateId}","href":"/api-reference/public-v1/templates/get-a-public-template"},{"title":"List flows","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/flows","href":"/api-reference/public-v1/templates/list-flows"},{"title":"Get a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/flows/{slug}","href":"/api-reference/public-v1/templates/get-a-flow"}]},{"group":"Brand","pages":[{"title":"Get the brand bound to this API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/brand","href":"/api-reference/public-v1/brand/get-the-brand-bound-to-this-api-key"},{"title":"Update brand identity + design system","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/brand","href":"/api-reference/public-v1/brand/update-brand-identity-+-design-system"},{"title":"Get brand images","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/brand/images","href":"/api-reference/public-v1/brand/get-brand-images"},{"title":"Delete a brand image","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/brand/images/{assetId}","href":"/api-reference/public-v1/brand/delete-a-brand-image"}]},{"group":"Brands","pages":[{"title":"List the brands this credential can reach","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/brands","href":"/api-reference/public-v1/brands/list-the-brands-this-credential-can-reach"},{"title":"Create a brand and start its extraction","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/brands","href":"/api-reference/public-v1/brands/create-a-brand-and-start-its-extraction"},{"title":"Get one brand’s lifecycle state","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/brands/{brandId}","href":"/api-reference/public-v1/brands/get-one-brand’s-lifecycle-state"}]},{"group":"Content","pages":[{"title":"Generate an image","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/generate-image","href":"/api-reference/public-v1/content/generate-an-image"},{"title":"Generate a GIF","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/gif","href":"/api-reference/public-v1/content/generate-a-gif"},{"title":"Transform an image","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/transform","href":"/api-reference/public-v1/content/transform-an-image"},{"title":"Render HTML to a PNG","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/html-to-png","href":"/api-reference/public-v1/content/render-html-to-a-png"},{"title":"Add image","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/add-image","href":"/api-reference/public-v1/content/add-image"},{"title":"Create an image upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/image-uploads","href":"/api-reference/public-v1/content/create-an-image-upload"}]},{"group":"Usage","pages":[{"title":"Get usage","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/usage","href":"/api-reference/public-v1/usage/get-usage"}]},{"group":"Integrations","pages":[{"title":"List integrations","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/integrations","href":"/api-reference/public-v1/integrations/list-integrations"}]},{"group":"API Keys","pages":[{"title":"List API keys","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/api-keys","href":"/api-reference/public-v1/api-keys/list-api-keys"},{"title":"Create an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/api-keys","href":"/api-reference/public-v1/api-keys/create-an-api-key"},{"title":"Revoke an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/api-keys/{keyId}","href":"/api-reference/public-v1/api-keys/revoke-an-api-key"}]},{"group":"Health","pages":[{"title":"Liveness probe","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/health","href":"/api-reference/public-v1/health/liveness-probe"}]},{"group":"Meta","pages":[{"title":"Machine-readable API catalog","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/help","href":"/api-reference/public-v1/meta/machine-readable-api-catalog"}]},{"group":"Chats","pages":[{"title":"List chats","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/chats","href":"/api-reference/public-v1/chats/list-chats"},{"title":"Get chat context","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/chats/{chatId}","href":"/api-reference/public-v1/chats/get-chat-context"}]},{"group":"Insights","pages":[{"title":"List insights","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/insights","href":"/api-reference/public-v1/insights/list-insights"},{"title":"Get an insight","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/insights/{insightId}","href":"/api-reference/public-v1/insights/get-an-insight"}]},{"group":"Notifications","pages":[{"title":"List notifications","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/notifications","href":"/api-reference/public-v1/notifications/list-notifications"}]}]},{"group":"API Contracts","pages":[{"title":"Authentication and Security","href":"/api-reference/api/authentication"},{"title":"Organization and Brand Credentials","href":"/api-reference/api/organization-and-brand-scope"},{"title":"Data Model","href":"/api-reference/api/data-model"},{"title":"Rate Limits","href":"/api-reference/api/rate-limits"},{"title":"Idempotency","href":"/api-reference/api/idempotency"},{"title":"Pagination","href":"/api-reference/api/pagination"},{"title":"Batch Operations","href":"/api-reference/api/batch-operations"},{"title":"Async Jobs and Polling","href":"/api-reference/api/async-jobs"},{"title":"API Credits","sidebarTitle":"Credits","href":"/api-reference/api/credits"},{"title":"Events and Webhooks","href":"/api-reference/api/events-and-webhooks"},{"title":"API Errors","sidebarTitle":"Errors","href":"/api-reference/api/errors"},{"title":"Response Headers","href":"/api-reference/api/response-headers"},{"title":"API Design Notes","href":"/api-reference/api/design-notes"},{"title":"Migrate to the New v1 Surface","href":"/api-reference/api/v1-migration"}]},{"group":"API Guides","pages":[{"title":"Check Brand Readiness Before Generating","href":"/api-reference/guides/check-brand-readiness"},{"title":"Upload a Local Image","href":"/api-reference/guides/upload-a-local-image"},{"title":"Monitor Email Sends","href":"/api-reference/guides/monitor-campaign-sends"},{"title":"Explore Per-Contact Engagement","href":"/api-reference/guides/per-contact-engagement"},{"title":"Read Brew Insights","href":"/api-reference/guides/read-brew-insights"},{"title":"Typed Payload Contracts","href":"/api-reference/guides/typed-payload-contracts"}]},{"group":"MCP Server","pages":[{"title":"Brew MCP Server","href":"/api-reference/mcp/overview"},{"title":"MCP Quickstart","href":"/api-reference/mcp/quickstart"},{"title":"Connect Your MCP Client","sidebarTitle":"Connect Your Client","href":"/api-reference/mcp/connect-your-client"},{"title":"MCP Tools","href":"/api-reference/mcp/tools"},{"title":"MCP Workflows","href":"/api-reference/mcp/workflows"},{"title":"Sync a CRM into Brew over MCP","href":"/api-reference/mcp/sync-a-crm"},{"title":"Sync Brew and Attio over MCP","href":"/api-reference/mcp/attio"},{"title":"MCP Authentication and Scoping","href":"/api-reference/mcp/authentication-and-scoping"}]},{"group":"CLI","pages":[{"title":"Brew CLI","href":"/api-reference/cli/overview"},{"title":"CLI Quickstart","href":"/api-reference/cli/quickstart"},{"title":"CLI Installation","sidebarTitle":"Installation","href":"/api-reference/cli/installation"},{"title":"CLI Authentication","sidebarTitle":"Authentication","href":"/api-reference/cli/authentication"},{"title":"CLI Commands","sidebarTitle":"Commands","href":"/api-reference/cli/commands"},{"title":"CLI Common Flows","sidebarTitle":"Common Flows","href":"/api-reference/cli/common-flows"},{"title":"Use the CLI from AI Agents","sidebarTitle":"Use from AI Agents","href":"/api-reference/cli/agents"}]},{"group":"SDKs","pages":[{"title":"SDK Overview","href":"/sdks/overview"},{"title":"SDK Authentication","sidebarTitle":"Authentication","href":"/sdks/authentication"},{"title":"Generate Your Own SDK","href":"/sdks/openapi-codegen"},{"title":"TypeScript Installation","href":"/sdks/typescript/installation"},{"title":"TypeScript Quickstart","href":"/sdks/typescript/quickstart"},{"title":"TypeScript Resource Surface","href":"/sdks/typescript/resources"},{"title":"Build a White-Label Email Editor","sidebarTitle":"White-Label Integration","href":"/sdks/typescript/white-label-email-editor"},{"title":"Embed the Email Canvas","href":"/sdks/typescript/embedded-email-canvas"},{"title":"TypeScript Error Handling","href":"/sdks/typescript/error-handling"},{"title":"Agentic Cookbook","href":"/sdks/typescript/agentic-cookbook"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/overview"}]},{"tab":"Legal","pages":[{"title":"Legal","href":"/legal/terms-of-service"}]}]},"basePath":"","title":"Get contacts - Brew Help Docs","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-5FCzAcfS.js","utils-SLtAG4EZ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-2DZi8ZMu.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D7J3nkzE.js","snippetPresets-D0Alv0AH.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BI4qNJ2c.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BD3uyr8j.js","shallow-D8iEBr5z.js","getApiPlaygroundDisplay-CgNP4lzR.js","CodeSnippet-CX-QHuMs.js","CodeSnippets-VlXE-ZUf.js","Page-D9ithiIZ.js","getPastedJson-DYNQkZ1M.js","icon-CzacdwOi.js","MethodPill-2JVqoYKi.js","DuplicateIcon-_xVXs-U8.js","createIcon-BRHrweLo.js","DynamicMarkdown-mQG_iQiE.js","SectionHeading-DMpJzv8f.js","axios-vUo_bRtp.js","Markdown-5FGIym-8.js","clsx-D-TRO5q5.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CdrJecqK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CHlcWBLM.js"]}