{
"error": {
"code": "INVALID_REQUEST",
"message": "The request was invalid.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#bad-request",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}
{
"error": {
"code": "UNAUTHORIZED",
"message": "No valid API key provided.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unauthorized",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}
{
"error": {
"code": "FORBIDDEN",
"message": "The API key doesn’t have permissions to perform the request.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#forbidden",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}
{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "The requested resource was not found.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#not-found",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}
{
"error": {
"code": "UNPROCESSABLE_ENTITY",
"message": "Invalid query parameters",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unprocessable-entity",
"details": {
"issues": [
{
"code": "too_small",
"minimum": 1,
"type": "number",
"inclusive": true,
"exact": false,
"message": "Number must be greater than or equal to 1",
"path": [
"limit"
]
}
]
},
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}
{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "The service is currently unavailable.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#service-unavailable",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}
Campaigns
(Beta) List message senders
Retrieve a paginated list of the email addresses you can send campaigns from, last used first: those you own, those shared with the workspace, and every sender of the workspace for admins. Senders still waiting for verification are left out. Each sender comes with its signature, which is what {{signature}} inserts on a new step or message: end a body with <p>{{signature}}</p> to sign it, rather than writing the signature yourself.
This endpoint is currently in open beta. The API surface may change as we iterate based on feedback.
{
"error": {
"code": "INVALID_REQUEST",
"message": "The request was invalid.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#bad-request",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}
{
"error": {
"code": "UNAUTHORIZED",
"message": "No valid API key provided.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unauthorized",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}
{
"error": {
"code": "FORBIDDEN",
"message": "The API key doesn’t have permissions to perform the request.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#forbidden",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}
{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "The requested resource was not found.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#not-found",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}
{
"error": {
"code": "UNPROCESSABLE_ENTITY",
"message": "Invalid query parameters",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unprocessable-entity",
"details": {
"issues": [
{
"code": "too_small",
"minimum": 1,
"type": "number",
"inclusive": true,
"exact": false,
"message": "Number must be greater than or equal to 1",
"path": [
"limit"
]
}
]
},
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}
{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "The service is currently unavailable.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#service-unavailable",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}
A cursor for pagination across multiple pages of results. Don’t include this parameter on the first call. Use the pagination.nextLink value returned in a previous response to request subsequent results.
Maximum string length: 512
Response
A page of the senders you can send campaigns from.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Folk Developer Portal","description":"Developer portal and API reference of folk","colors":{"primary":"#000000","light":"#ffffff","dark":"#222222"},"logo":{"light":"https://mintcdn.com/folk-cf968f5e/I7wFhRmtMuOvy2tG/assets/logo-light.svg?fit=max\u0026auto=format\u0026n=I7wFhRmtMuOvy2tG\u0026q=85\u0026s=08eda1dcbb1eefceac8ca5fea9c103d8","dark":"https://mintcdn.com/folk-cf968f5e/I7wFhRmtMuOvy2tG/assets/logo-dark.svg?fit=max\u0026auto=format\u0026n=I7wFhRmtMuOvy2tG\u0026q=85\u0026s=f7a85c0692d36cf4ae95ba0cb3a13827"},"favicon":{"light":"https://mintcdn.com/folk-cf968f5e/HcSGFJR-HRVkFe3E/assets/favicon-light.svg?fit=max\u0026auto=format\u0026n=HcSGFJR-HRVkFe3E\u0026q=85\u0026s=f507f5945e391292cf6679ecee54f2a0","dark":"https://mintcdn.com/folk-cf968f5e/HcSGFJR-HRVkFe3E/assets/favicon-dark.svg?fit=max\u0026auto=format\u0026n=HcSGFJR-HRVkFe3E\u0026q=85\u0026s=26f07b15afad6f7a4467054d25a0f955"},"api":{"playground":{"display":"interactive"},"examples":{"defaults":"all","languages":["curl","javascript","python","ruby","go","php"]}},"navbar":{"links":[{"href":"intercom://show","label":"Chat with support"},{"href":"https://www.folk.app/contact-sales","label":"Get a demo"}],"primary":{"type":"button","label":"Open app","href":"https://app.folk.app"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/folkhq","x":"https://twitter.com/folkhq","youtube":"https://www.youtube.com/channel/UCs3bswOUZvkouum7Rdx4i5w"}},"integrations":{"intercom":{"appId":"rn8e78eq"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"folk-cf968f5e","hasAudioNarration":false,"actualSubdomain":"folk-cf968f5e","customDomains":["developer.folk.app"],"gitSource":{"type":"github","owner":"folkapp-mintlify-prod","repo":"api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adf97e943e9400227447b11","collectionId":"c83d8b32-0b82-4286-a0a3-b474a1178bd0","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adf97e943e9400227447b11"},"entitlements":{},"buildId":"6ae31dbecf19676b2b588155","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"API Reference","count":82},{"language":"default","tag":"Available endpoints","count":71},{"language":"default","tag":"Guides","count":15},{"language":"default","tag":"Introduction","count":11},{"language":"default","tag":"Webhooks","count":9},{"language":"default","tag":"Companies","count":8},{"language":"default","tag":"Custom objects","count":8},{"language":"default","tag":"People","count":8},{"language":"default","tag":"Core concepts","count":8},{"language":"default","tag":"Tasks","count":7}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"/* vietnamese */\n@font-face {\n font-family: 'Bricolage Grotesque';\n font-style: normal;\n font-weight: 200 800;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/bricolagegrotesque/v9/3y9K6as8bTXq_nANBjzKo3IeZx8z6up5BeSl9D4dj_x9PpZBMlGHInHEVA.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Bricolage Grotesque';\n font-style: normal;\n font-weight: 200 800;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/bricolagegrotesque/v9/3y9K6as8bTXq_nANBjzKo3IeZx8z6up5BeSl9D4dj_x9PpZBMlGGInHEVA.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Bricolage Grotesque';\n font-style: normal;\n font-weight: 200 800;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/bricolagegrotesque/v9/3y9K6as8bTXq_nANBjzKo3IeZx8z6up5BeSl9D4dj_x9PpZBMlGIInE.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n:root{--font-family-headings-custom:'Bricolage Grotesque', sans-serif}h1,h2,h3,h4,h5,h6{font-optical-sizing:auto;font-weight:600;font-style:normal;font-variation-settings:'wdth' 100}.dark{--background-dark:25 25 25}#home-cta-button,.dark #topbar-cta-button>a>span{border:1px solid rgb(var(--gray-800))}.prose :where(a):not(:where([class~='not-prose'], [class~='not-prose'] *)){border-color:rgb(var(--primary-dark))}.dark .prose :where(a):not(:where([class~='not-prose'], [class~='not-prose'] *)){border-color:rgb(var(--primary-light))}.nav-tag-pill-text{font-weight:500!important;text-shadow:none;color:#fff!important;background-color:#2563eb!important}.dark .nav-tag-pill-text{background-color:#3b82f6!important}"}],"page":{"pagePath":"api-reference/campaigns/list-message-senders","slug":"/api-reference/campaigns/list-message-senders","pageMetadata":{"title":"(Beta) List message senders","description":"Retrieve a paginated list of the email addresses you can send campaigns from, last used first: those you own, those shared with the workspace, and every sender of the workspace for admins. Senders still waiting for verification are left out. Each sender comes with its `signature`, which is what `{{signature}}` inserts on a new step or message: end a body with `\u003cp>{{signature}}\u003c/p>` to sign it, rather than writing the signature yourself.\u003cbr/>\u003cWarning>This endpoint is currently in open beta. The API surface may change as we iterate based on feedback.\u003c/Warning>","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"List message senders","openapi":"/schemas/2025-06-09.json get /v1/message-senders","href":"/api-reference/campaigns/list-message-senders","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {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 }, {Warning} = _components;\n if (!Warning) _missingMdxReference(\"Warning\", true);\n return _jsxs(_components.p, {\n children: [\"Retrieve a paginated list of the email addresses you can send campaigns from, last used first: those you own, those shared with the workspace, and every sender of the workspace for admins. Senders still waiting for verification are left out. Each sender comes with its \", _jsx(_components.code, {\n children: \"signature\"\n }), \", which is what \", _jsx(_components.code, {\n children: \"{{signature}}\"\n }), \" inserts on a new step or message: end a body with \", _jsx(_components.code, {\n children: \"\u003cp>{{signature}}\u003c/p>\"\n }), \" to sign it, rather than writing the signature yourself.\", _jsx(\"br\", {}), _jsx(Warning, {\n children: \"This endpoint is currently in open beta. The API surface may change as we iterate based on feedback.\"\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};\nfunction _missingMdxReference(id, component) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\");\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":"(Beta) List message senders","description":"Retrieve a paginated list of the email addresses you can send campaigns from, last used first: those you own, those shared with the workspace, and every sender of the workspace for admins. Senders still waiting for verification are left out. Each sender comes with its `signature`, which is what `{{signature}}` inserts on a new step or message: end a body with `\u003cp>{{signature}}\u003c/p>` to sign it, rather than writing the signature yourself.\u003cbr/>\u003cWarning>This endpoint is currently in open beta. The API surface may change as we iterate based on feedback.\u003c/Warning>","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"List message senders","openapi":"/schemas/2025-06-09.json get /v1/message-senders","href":"/api-reference/campaigns/list-message-senders","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/folk-cf968f5e/c239747596c4df94/intercom.js"],"openApiReferenceData":{"operation":{"security":["8a43d9af-d8c7-445c-bfac-42707fa24cf2"],"x-mint":{"metadata":{"tag":"Beta","title":"(Beta) List message senders","sidebarTitle":"List message senders"}},"operationId":"listMessageSenders","summary":"List message senders","description":"Retrieve a paginated list of the email addresses you can send campaigns from, last used first: those you own, those shared with the workspace, and every sender of the workspace for admins. Senders still waiting for verification are left out. Each sender comes with its `signature`, which is what `{{signature}}` inserts on a new step or message: end a body with `\u003cp>{{signature}}\u003c/p>` to sign it, rather than writing the signature yourself.\u003cbr/>\u003cWarning>This endpoint is currently in open beta. The API surface may change as we iterate based on feedback.\u003c/Warning>","tags":["Campaigns"],"parameters":["0a6bdfa3-bb57-46c9-a2d2-ddf364cfb3b0","bc3d9cd5-94bf-4dba-9eb3-b42461967c80"],"responses":{"200":"827dff43-6a59-41b1-bfe4-3f986c54219e","400":"6d9cd9d0-d930-4fbd-9d0a-8fd21bda68b9","401":"cf764cb6-889a-47c8-b4f1-44f406479a3d","403":"3cc112be-109d-473d-81fe-86d78002228a","404":"215edd0e-37a0-4d37-9d5e-3728e4e4a09e","422":"19546371-7c4b-4ccf-a669-8685cd2451dc","429":"6e520362-6921-49fc-8d56-4e0666051643","500":"db660619-99cf-4d5a-b031-35170ec8acd6","503":"413e2a8d-b612-4816-979c-8dd3b02dbfdc"},"method":"get","type":"path","servers":["9ff6af81-d226-4589-a8c5-5e6c925a5653"],"path":"/v1/message-senders","baseUrlOptions":["https://api.folk.app"],"title":"List message senders","codeSamples":[],"requestExampleLanguages":["bash","javascript","python","ruby","go","php"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"0a6bdfa3-bb57-46c9-a2d2-ddf364cfb3b0":{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"isRequired":false,"description":"The number of items to return.","uniqueKey":"","typeLabel":"integer"},"required":false,"description":"The number of items to return.","example":20,"name":"limit","in":"query"},"bc3d9cd5-94bf-4dba-9eb3-b42461967c80":{"schema":{"type":"string","maxLength":512,"isRequired":false,"description":"A cursor for pagination across multiple pages of results. Don’t include this parameter on the first call. Use the `pagination.nextLink` value returned in a previous response to request subsequent results.","uniqueKey":"","typeLabel":"string"},"required":false,"description":"A cursor for pagination across multiple pages of results. Don’t include this parameter on the first call. Use the `pagination.nextLink` value returned in a previous response to request subsequent results.","example":"eyJvZmZzZXQiOjN9","name":"cursor","in":"query"}},"responses":{"827dff43-6a59-41b1-bfe4-3f986c54219e":{"description":"A page of the senders you can send campaigns from.","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer","example":1000},"description":"The maximum number of requests that you can make in the current rate limit window."},"X-RateLimit-Remaining":{"schema":{"type":"integer","example":998},"description":"The number of requests remaining in the current rate limit window."},"X-RateLimit-Reset":{"schema":{"type":"integer","example":1747322958},"description":"The time at which the current rate limit window resets, in UTC epoch seconds."},"X-RateLimit-Limit-Burst":{"schema":{"type":"integer","example":20},"description":"The maximum number of requests that you can make in the current burst rate limit window."},"X-RateLimit-Remaining-Burst":{"schema":{"type":"integer","example":18},"description":"The number of requests remaining in the current burst rate limit window."},"X-RateLimit-Reset-Burst":{"schema":{"type":"integer","example":1747322902},"description":"The time at which the current burst rate limit window resets, in UTC epoch seconds."},"RateLimit-Policy":{"schema":{"type":"string","example":"\"default\";q=600;w=60, \"burst\";q=20;w=2"},"description":"The rate limit policies applied to the request, as defined by the IETF RateLimit header fields draft. `q` is the number of requests allowed per window and `w` the window length in seconds."},"RateLimit":{"schema":{"type":"string","example":"\"default\";r=598;t=42, \"burst\";r=18;t=1"},"description":"The current usage of each rate limit policy, as defined by the IETF RateLimit header fields draft. `r` is the number of requests remaining and `t` the number of seconds until the window resets."},"Retry-After":{"schema":{"type":"integer","example":60},"description":"The number of seconds to wait before making a new request after hitting the rate limit."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the sender.","example":"snd_4c3b2a19-8f7e-4d6c-9b5a-1e2f3d4c5b6a","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].id","typeLabel":"string"},"email":{"type":"string","description":"The email address messages are sent from.","example":"john.doe@example.com","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].email","typeLabel":"string"},"displayName":{"type":"string","description":"The name messages are sent under.","example":"John Doe","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].displayName","typeLabel":"string"},"provider":{"type":"string","enum":["custom_domain","gmail"],"description":"How messages are sent: `custom_domain` through folk from a verified address of your domain, `gmail` through the Gmail account of the sender. Only `custom_domain` senders accept an unsubscribe link.","example":"custom_domain","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].provider","typeLabel":"enum\u003cstring>"},"supportsSequences":{"type":"boolean","description":"Whether the sender can send follow-up steps. A campaign with more than one step needs such a sender on every step.","example":true,"isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].supportsSequences","typeLabel":"boolean"},"signature":{"oneOf":[{"type":"string","description":"The signature `{{signature}}` inserts when a body ending with it is written to a new step or message, as HTML; null when the sender has none. End a body with `\u003cp>{{signature}}\u003c/p>` to sign it, rather than writing the signature yourself. Senders set up their signature in the app.","example":"\u003cp>John Doe\u003c/p>\u003cp>Head of Sales, Example Inc.\u003c/p>","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].signature.oneOf.0","typeLabel":"string"},{"type":"null","description":"The signature `{{signature}}` inserts when a body ending with it is written to a new step or message, as HTML; null when the sender has none. End a body with `\u003cp>{{signature}}\u003c/p>` to sign it, rather than writing the signature yourself. Senders set up their signature in the app.","example":"\u003cp>John Doe\u003c/p>\u003cp>Head of Sales, Example Inc.\u003c/p>","isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].signature.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.\\items.items.[INDEX].signature","typeLabel":"string | null"}},"required":["id","email","displayName","provider","supportsSequences","signature"],"example":{"id":"snd_4c3b2a19-8f7e-4d6c-9b5a-1e2f3d4c5b6a","email":"john.doe@example.com","displayName":"John Doe","provider":"custom_domain","supportsSequences":true,"signature":"\u003cp>John Doe\u003c/p>\u003cp>Head of Sales, Example Inc.\u003c/p>"},"uniqueKey":"data.\\items.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.\\items","typeLabel":"object[]"},"pagination":{"type":"object","properties":{"nextLink":{"type":"string","uniqueKey":"data.pagination.nextLink","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.pagination","typeLabel":"object"}},"required":["items","pagination"],"example":{"items":[{"id":"snd_4c3b2a19-8f7e-4d6c-9b5a-1e2f3d4c5b6a","email":"john.doe@example.com","displayName":"John Doe","provider":"custom_domain","supportsSequences":true,"signature":"\u003cp>John Doe\u003c/p>\u003cp>Head of Sales, Example Inc.\u003c/p>"}],"pagination":{"nextLink":"https://api.folk.app/v1/message-senders?limit=20\u0026cursor=eyJvZmZzZXQiOjIwfQ%3D%3D"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"},"deprecations":{"type":"array","items":{"type":"string","uniqueKey":"deprecations.items.[INDEX]","typeLabel":"string"},"example":["This field is deprecated"],"uniqueKey":"deprecations","typeLabel":"string[]"}},"required":["data"],"uniqueKey":"","typeLabel":"object"},"example":{"data":{"items":[{"id":"snd_4c3b2a19-8f7e-4d6c-9b5a-1e2f3d4c5b6a","email":"john.doe@example.com","displayName":"John Doe","provider":"custom_domain","supportsSequences":true,"signature":"\u003cp>John Doe\u003c/p>\u003cp>Head of Sales, Example Inc.\u003c/p>"}],"pagination":{"nextLink":"https://api.folk.app/v1/message-senders?limit=20\u0026cursor=eyJvZmZzZXQiOjIwfQ%3D%3D"}}},"examples":{"Example":{"title":"Example","value":{"data":{"items":[{"id":"snd_4c3b2a19-8f7e-4d6c-9b5a-1e2f3d4c5b6a","email":"john.doe@example.com","displayName":"John Doe","provider":"custom_domain","supportsSequences":true,"signature":"\u003cp>John Doe\u003c/p>\u003cp>Head of Sales, Example Inc.\u003c/p>"}],"pagination":{"nextLink":"https://api.folk.app/v1/message-senders?limit=20\u0026cursor=eyJvZmZzZXQiOjIwfQ%3D%3D"}}}}},"exampleType":"examples"}},"exampleType":"examples"},"6d9cd9d0-d930-4fbd-9d0a-8fd21bda68b9":{"description":"The request was unacceptable, often due to missing an invalid parameter.","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer","example":1000},"description":"The maximum number of requests that you can make in the current rate limit window."},"X-RateLimit-Remaining":{"schema":{"type":"integer","example":998},"description":"The number of requests remaining in the current rate limit window."},"X-RateLimit-Reset":{"schema":{"type":"integer","example":1747322958},"description":"The time at which the current rate limit window resets, in UTC epoch seconds."},"X-RateLimit-Limit-Burst":{"schema":{"type":"integer","example":20},"description":"The maximum number of requests that you can make in the current burst rate limit window."},"X-RateLimit-Remaining-Burst":{"schema":{"type":"integer","example":18},"description":"The number of requests remaining in the current burst rate limit window."},"X-RateLimit-Reset-Burst":{"schema":{"type":"integer","example":1747322902},"description":"The time at which the current burst rate limit window resets, in UTC epoch seconds."},"RateLimit-Policy":{"schema":{"type":"string","example":"\"default\";q=600;w=60, \"burst\";q=20;w=2"},"description":"The rate limit policies applied to the request, as defined by the IETF RateLimit header fields draft. `q` is the number of requests allowed per window and `w` the window length in seconds."},"RateLimit":{"schema":{"type":"string","example":"\"default\";r=598;t=42, \"burst\";r=18;t=1"},"description":"The current usage of each rate limit policy, as defined by the IETF RateLimit header fields draft. `r` is the number of requests remaining and `t` the number of seconds until the window resets."},"Retry-After":{"schema":{"type":"integer","example":60},"description":"The number of seconds to wait before making a new request after hitting the rate limit."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"TOO_MANY_REQUESTS","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"You have exceeded your rate limit.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"documentationUrl":{"type":"string","format":"uri","example":"https://developer.folk.app/api-reference/errors#rate-limiting","isRequired":true,"uniqueKey":"error.documentationUrl","typeLabel":"string\u003curi>"},"requestId":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string\u003cuuid>"},"timestamp":{"type":"string","format":"date-time","example":"2025-10-01T12:00:00Z","isRequired":true,"uniqueKey":"error.timestamp","typeLabel":"string\u003cdate-time>"},"details":{"type":"object","additionalProperties":true,"example":{"policy":"burst","limit":20,"remaining":0,"windowSeconds":2,"retryAfter":"2025-10-01T12:00:02.000Z"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","documentationUrl","requestId","timestamp"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"Error response containing error details.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"INVALID_REQUEST","message":"The request was invalid.","documentationUrl":"https://developer.folk.app/api-reference/errors#bad-request","requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"INVALID_REQUEST","message":"The request was invalid.","documentationUrl":"https://developer.folk.app/api-reference/errors#bad-request","requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z"}}}},"exampleType":"examples"}},"exampleType":"examples"},"cf764cb6-889a-47c8-b4f1-44f406479a3d":{"description":"No valid API key provided.","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer","example":1000},"description":"The maximum number of requests that you can make in the current rate limit window."},"X-RateLimit-Remaining":{"schema":{"type":"integer","example":998},"description":"The number of requests remaining in the current rate limit window."},"X-RateLimit-Reset":{"schema":{"type":"integer","example":1747322958},"description":"The time at which the current rate limit window resets, in UTC epoch seconds."},"X-RateLimit-Limit-Burst":{"schema":{"type":"integer","example":20},"description":"The maximum number of requests that you can make in the current burst rate limit window."},"X-RateLimit-Remaining-Burst":{"schema":{"type":"integer","example":18},"description":"The number of requests remaining in the current burst rate limit window."},"X-RateLimit-Reset-Burst":{"schema":{"type":"integer","example":1747322902},"description":"The time at which the current burst rate limit window resets, in UTC epoch seconds."},"RateLimit-Policy":{"schema":{"type":"string","example":"\"default\";q=600;w=60, \"burst\";q=20;w=2"},"description":"The rate limit policies applied to the request, as defined by the IETF RateLimit header fields draft. `q` is the number of requests allowed per window and `w` the window length in seconds."},"RateLimit":{"schema":{"type":"string","example":"\"default\";r=598;t=42, \"burst\";r=18;t=1"},"description":"The current usage of each rate limit policy, as defined by the IETF RateLimit header fields draft. `r` is the number of requests remaining and `t` the number of seconds until the window resets."},"Retry-After":{"schema":{"type":"integer","example":60},"description":"The number of seconds to wait before making a new request after hitting the rate limit."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"TOO_MANY_REQUESTS","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"You have exceeded your rate limit.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"documentationUrl":{"type":"string","format":"uri","example":"https://developer.folk.app/api-reference/errors#rate-limiting","isRequired":true,"uniqueKey":"error.documentationUrl","typeLabel":"string\u003curi>"},"requestId":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string\u003cuuid>"},"timestamp":{"type":"string","format":"date-time","example":"2025-10-01T12:00:00Z","isRequired":true,"uniqueKey":"error.timestamp","typeLabel":"string\u003cdate-time>"},"details":{"type":"object","additionalProperties":true,"example":{"policy":"burst","limit":20,"remaining":0,"windowSeconds":2,"retryAfter":"2025-10-01T12:00:02.000Z"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","documentationUrl","requestId","timestamp"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"Error response containing error details.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"UNAUTHORIZED","message":"No valid API key provided.","documentationUrl":"https://developer.folk.app/api-reference/errors#unauthorized","requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"UNAUTHORIZED","message":"No valid API key provided.","documentationUrl":"https://developer.folk.app/api-reference/errors#unauthorized","requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z"}}}},"exampleType":"examples"}},"exampleType":"examples"},"3cc112be-109d-473d-81fe-86d78002228a":{"description":"The API key doesn’t have permissions to perform the request.","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer","example":1000},"description":"The maximum number of requests that you can make in the current rate limit window."},"X-RateLimit-Remaining":{"schema":{"type":"integer","example":998},"description":"The number of requests remaining in the current rate limit window."},"X-RateLimit-Reset":{"schema":{"type":"integer","example":1747322958},"description":"The time at which the current rate limit window resets, in UTC epoch seconds."},"X-RateLimit-Limit-Burst":{"schema":{"type":"integer","example":20},"description":"The maximum number of requests that you can make in the current burst rate limit window."},"X-RateLimit-Remaining-Burst":{"schema":{"type":"integer","example":18},"description":"The number of requests remaining in the current burst rate limit window."},"X-RateLimit-Reset-Burst":{"schema":{"type":"integer","example":1747322902},"description":"The time at which the current burst rate limit window resets, in UTC epoch seconds."},"RateLimit-Policy":{"schema":{"type":"string","example":"\"default\";q=600;w=60, \"burst\";q=20;w=2"},"description":"The rate limit policies applied to the request, as defined by the IETF RateLimit header fields draft. `q` is the number of requests allowed per window and `w` the window length in seconds."},"RateLimit":{"schema":{"type":"string","example":"\"default\";r=598;t=42, \"burst\";r=18;t=1"},"description":"The current usage of each rate limit policy, as defined by the IETF RateLimit header fields draft. `r` is the number of requests remaining and `t` the number of seconds until the window resets."},"Retry-After":{"schema":{"type":"integer","example":60},"description":"The number of seconds to wait before making a new request after hitting the rate limit."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"TOO_MANY_REQUESTS","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"You have exceeded your rate limit.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"documentationUrl":{"type":"string","format":"uri","example":"https://developer.folk.app/api-reference/errors#rate-limiting","isRequired":true,"uniqueKey":"error.documentationUrl","typeLabel":"string\u003curi>"},"requestId":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string\u003cuuid>"},"timestamp":{"type":"string","format":"date-time","example":"2025-10-01T12:00:00Z","isRequired":true,"uniqueKey":"error.timestamp","typeLabel":"string\u003cdate-time>"},"details":{"type":"object","additionalProperties":true,"example":{"policy":"burst","limit":20,"remaining":0,"windowSeconds":2,"retryAfter":"2025-10-01T12:00:02.000Z"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","documentationUrl","requestId","timestamp"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"Error response containing error details.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"FORBIDDEN","message":"The API key doesn’t have permissions to perform the request.","documentationUrl":"https://developer.folk.app/api-reference/errors#forbidden","requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"FORBIDDEN","message":"The API key doesn’t have permissions to perform the request.","documentationUrl":"https://developer.folk.app/api-reference/errors#forbidden","requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z"}}}},"exampleType":"examples"}},"exampleType":"examples"},"215edd0e-37a0-4d37-9d5e-3728e4e4a09e":{"description":"The requested resource doesn’t exist.","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer","example":1000},"description":"The maximum number of requests that you can make in the current rate limit window."},"X-RateLimit-Remaining":{"schema":{"type":"integer","example":998},"description":"The number of requests remaining in the current rate limit window."},"X-RateLimit-Reset":{"schema":{"type":"integer","example":1747322958},"description":"The time at which the current rate limit window resets, in UTC epoch seconds."},"X-RateLimit-Limit-Burst":{"schema":{"type":"integer","example":20},"description":"The maximum number of requests that you can make in the current burst rate limit window."},"X-RateLimit-Remaining-Burst":{"schema":{"type":"integer","example":18},"description":"The number of requests remaining in the current burst rate limit window."},"X-RateLimit-Reset-Burst":{"schema":{"type":"integer","example":1747322902},"description":"The time at which the current burst rate limit window resets, in UTC epoch seconds."},"RateLimit-Policy":{"schema":{"type":"string","example":"\"default\";q=600;w=60, \"burst\";q=20;w=2"},"description":"The rate limit policies applied to the request, as defined by the IETF RateLimit header fields draft. `q` is the number of requests allowed per window and `w` the window length in seconds."},"RateLimit":{"schema":{"type":"string","example":"\"default\";r=598;t=42, \"burst\";r=18;t=1"},"description":"The current usage of each rate limit policy, as defined by the IETF RateLimit header fields draft. `r` is the number of requests remaining and `t` the number of seconds until the window resets."},"Retry-After":{"schema":{"type":"integer","example":60},"description":"The number of seconds to wait before making a new request after hitting the rate limit."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"TOO_MANY_REQUESTS","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"You have exceeded your rate limit.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"documentationUrl":{"type":"string","format":"uri","example":"https://developer.folk.app/api-reference/errors#rate-limiting","isRequired":true,"uniqueKey":"error.documentationUrl","typeLabel":"string\u003curi>"},"requestId":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string\u003cuuid>"},"timestamp":{"type":"string","format":"date-time","example":"2025-10-01T12:00:00Z","isRequired":true,"uniqueKey":"error.timestamp","typeLabel":"string\u003cdate-time>"},"details":{"type":"object","additionalProperties":true,"example":{"policy":"burst","limit":20,"remaining":0,"windowSeconds":2,"retryAfter":"2025-10-01T12:00:02.000Z"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","documentationUrl","requestId","timestamp"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"Error response containing error details.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"RESOURCE_NOT_FOUND","message":"The requested resource was not found.","documentationUrl":"https://developer.folk.app/api-reference/errors#not-found","requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"RESOURCE_NOT_FOUND","message":"The requested resource was not found.","documentationUrl":"https://developer.folk.app/api-reference/errors#not-found","requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z"}}}},"exampleType":"examples"}},"exampleType":"examples"},"19546371-7c4b-4ccf-a669-8685cd2451dc":{"description":"The request was unacceptable, often due to missing or invalid parameters.","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer","example":1000},"description":"The maximum number of requests that you can make in the current rate limit window."},"X-RateLimit-Remaining":{"schema":{"type":"integer","example":998},"description":"The number of requests remaining in the current rate limit window."},"X-RateLimit-Reset":{"schema":{"type":"integer","example":1747322958},"description":"The time at which the current rate limit window resets, in UTC epoch seconds."},"X-RateLimit-Limit-Burst":{"schema":{"type":"integer","example":20},"description":"The maximum number of requests that you can make in the current burst rate limit window."},"X-RateLimit-Remaining-Burst":{"schema":{"type":"integer","example":18},"description":"The number of requests remaining in the current burst rate limit window."},"X-RateLimit-Reset-Burst":{"schema":{"type":"integer","example":1747322902},"description":"The time at which the current burst rate limit window resets, in UTC epoch seconds."},"RateLimit-Policy":{"schema":{"type":"string","example":"\"default\";q=600;w=60, \"burst\";q=20;w=2"},"description":"The rate limit policies applied to the request, as defined by the IETF RateLimit header fields draft. `q` is the number of requests allowed per window and `w` the window length in seconds."},"RateLimit":{"schema":{"type":"string","example":"\"default\";r=598;t=42, \"burst\";r=18;t=1"},"description":"The current usage of each rate limit policy, as defined by the IETF RateLimit header fields draft. `r` is the number of requests remaining and `t` the number of seconds until the window resets."},"Retry-After":{"schema":{"type":"integer","example":60},"description":"The number of seconds to wait before making a new request after hitting the rate limit."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"TOO_MANY_REQUESTS","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"You have exceeded your rate limit.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"documentationUrl":{"type":"string","format":"uri","example":"https://developer.folk.app/api-reference/errors#rate-limiting","isRequired":true,"uniqueKey":"error.documentationUrl","typeLabel":"string\u003curi>"},"requestId":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string\u003cuuid>"},"timestamp":{"type":"string","format":"date-time","example":"2025-10-01T12:00:00Z","isRequired":true,"uniqueKey":"error.timestamp","typeLabel":"string\u003cdate-time>"},"details":{"type":"object","additionalProperties":true,"example":{"policy":"burst","limit":20,"remaining":0,"windowSeconds":2,"retryAfter":"2025-10-01T12:00:02.000Z"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","documentationUrl","requestId","timestamp"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"Error response containing error details.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"UNPROCESSABLE_ENTITY","message":"Invalid query parameters","documentationUrl":"https://developer.folk.app/api-reference/errors#unprocessable-entity","details":{"issues":[{"code":"too_small","minimum":1,"type":"number","inclusive":true,"exact":false,"message":"Number must be greater than or equal to 1","path":["limit"]}]},"requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"UNPROCESSABLE_ENTITY","message":"Invalid query parameters","documentationUrl":"https://developer.folk.app/api-reference/errors#unprocessable-entity","details":{"issues":[{"code":"too_small","minimum":1,"type":"number","inclusive":true,"exact":false,"message":"Number must be greater than or equal to 1","path":["limit"]}]},"requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z"}}}},"exampleType":"examples"}},"exampleType":"examples"},"6e520362-6921-49fc-8d56-4e0666051643":{"description":"Too many requests hit the API too quickly. We recommend an exponential backoff of your requests.","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer","example":1000},"description":"The maximum number of requests that you can make in the current rate limit window."},"X-RateLimit-Remaining":{"schema":{"type":"integer","example":998},"description":"The number of requests remaining in the current rate limit window."},"X-RateLimit-Reset":{"schema":{"type":"integer","example":1747322958},"description":"The time at which the current rate limit window resets, in UTC epoch seconds."},"X-RateLimit-Limit-Burst":{"schema":{"type":"integer","example":20},"description":"The maximum number of requests that you can make in the current burst rate limit window."},"X-RateLimit-Remaining-Burst":{"schema":{"type":"integer","example":18},"description":"The number of requests remaining in the current burst rate limit window."},"X-RateLimit-Reset-Burst":{"schema":{"type":"integer","example":1747322902},"description":"The time at which the current burst rate limit window resets, in UTC epoch seconds."},"RateLimit-Policy":{"schema":{"type":"string","example":"\"default\";q=600;w=60, \"burst\";q=20;w=2"},"description":"The rate limit policies applied to the request, as defined by the IETF RateLimit header fields draft. `q` is the number of requests allowed per window and `w` the window length in seconds."},"RateLimit":{"schema":{"type":"string","example":"\"default\";r=598;t=42, \"burst\";r=18;t=1"},"description":"The current usage of each rate limit policy, as defined by the IETF RateLimit header fields draft. `r` is the number of requests remaining and `t` the number of seconds until the window resets."},"Retry-After":{"schema":{"type":"integer","example":60},"description":"The number of seconds to wait before making a new request after hitting the rate limit."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"TOO_MANY_REQUESTS","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"You have exceeded your rate limit.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"documentationUrl":{"type":"string","format":"uri","example":"https://developer.folk.app/api-reference/errors#rate-limiting","isRequired":true,"uniqueKey":"error.documentationUrl","typeLabel":"string\u003curi>"},"requestId":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string\u003cuuid>"},"timestamp":{"type":"string","format":"date-time","example":"2025-10-01T12:00:00Z","isRequired":true,"uniqueKey":"error.timestamp","typeLabel":"string\u003cdate-time>"},"details":{"type":"object","properties":{"policy":{"type":"string","enum":["default","burst"],"description":"The name of the rate limit policy.","isRequired":true,"uniqueKey":"error.details.policy","typeLabel":"enum\u003cstring>"},"limit":{"type":"integer","description":"The maximum number of requests allowed per window.","isRequired":true,"uniqueKey":"error.details.limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"The number of requests remaining in the current window.","isRequired":true,"uniqueKey":"error.details.remaining","typeLabel":"integer"},"windowSeconds":{"type":"integer","description":"The length of the window, in seconds.","isRequired":true,"uniqueKey":"error.details.windowSeconds","typeLabel":"integer"},"retryAfter":{"type":"string","format":"date-time","description":"When the current window resets.","isRequired":true,"uniqueKey":"error.details.retryAfter","typeLabel":"string\u003cdate-time>"},"policies":{"type":"array","items":{"type":"object","properties":{"policy":{"type":"string","enum":["default","burst"],"description":"The name of the rate limit policy.","isRequired":true,"uniqueKey":"error.details.policies.items.[INDEX].policy","typeLabel":"enum\u003cstring>"},"limit":{"type":"integer","description":"The maximum number of requests allowed per window.","isRequired":true,"uniqueKey":"error.details.policies.items.[INDEX].limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"The number of requests remaining in the current window.","isRequired":true,"uniqueKey":"error.details.policies.items.[INDEX].remaining","typeLabel":"integer"},"windowSeconds":{"type":"integer","description":"The length of the window, in seconds.","isRequired":true,"uniqueKey":"error.details.policies.items.[INDEX].windowSeconds","typeLabel":"integer"},"retryAfter":{"type":"string","format":"date-time","description":"When the current window resets.","isRequired":true,"uniqueKey":"error.details.policies.items.[INDEX].retryAfter","typeLabel":"string\u003cdate-time>"}},"required":["policy","limit","remaining","windowSeconds","retryAfter"],"uniqueKey":"error.details.policies.items.[INDEX]","typeLabel":"object"},"description":"The status of every rate limit policy applied to the request.","isRequired":true,"uniqueKey":"error.details.policies","typeLabel":"object[]"}},"required":["policy","limit","remaining","windowSeconds","retryAfter","policies"],"description":"The exceeded rate limit policy. When several are exceeded, the one resetting last.","isRequired":true,"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","documentationUrl","requestId","timestamp","details"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"Error response returned when a rate limit is exceeded.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"TOO_MANY_REQUESTS","message":"You have exceeded your rate limit.","documentationUrl":"https://developer.folk.app/api-reference/errors#rate-limiting","requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z","details":{"policy":"burst","limit":20,"remaining":0,"windowSeconds":2,"retryAfter":"2025-10-01T12:00:02.000Z","policies":[{"policy":"default","limit":600,"remaining":412,"windowSeconds":60,"retryAfter":"2025-10-01T12:01:00.000Z"},{"policy":"burst","limit":20,"remaining":0,"windowSeconds":2,"retryAfter":"2025-10-01T12:00:02.000Z"}]}}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"TOO_MANY_REQUESTS","message":"You have exceeded your rate limit.","documentationUrl":"https://developer.folk.app/api-reference/errors#rate-limiting","requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z","details":{"policy":"burst","limit":20,"remaining":0,"windowSeconds":2,"retryAfter":"2025-10-01T12:00:02.000Z","policies":[{"policy":"default","limit":600,"remaining":412,"windowSeconds":60,"retryAfter":"2025-10-01T12:01:00.000Z"},{"policy":"burst","limit":20,"remaining":0,"windowSeconds":2,"retryAfter":"2025-10-01T12:00:02.000Z"}]}}}}},"exampleType":"examples"}},"exampleType":"examples"},"db660619-99cf-4d5a-b031-35170ec8acd6":{"description":"Something went wrong on our end.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"TOO_MANY_REQUESTS","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"You have exceeded your rate limit.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"documentationUrl":{"type":"string","format":"uri","example":"https://developer.folk.app/api-reference/errors#rate-limiting","isRequired":true,"uniqueKey":"error.documentationUrl","typeLabel":"string\u003curi>"},"requestId":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string\u003cuuid>"},"timestamp":{"type":"string","format":"date-time","example":"2025-10-01T12:00:00Z","isRequired":true,"uniqueKey":"error.timestamp","typeLabel":"string\u003cdate-time>"},"details":{"type":"object","additionalProperties":true,"example":{"policy":"burst","limit":20,"remaining":0,"windowSeconds":2,"retryAfter":"2025-10-01T12:00:02.000Z"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","documentationUrl","requestId","timestamp"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"Error response containing error details.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"INTERNAL_SERVER_ERROR","message":"An internal server error occurred.","documentationUrl":"https://developer.folk.app/api-reference/errors#internal-server-error","requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"INTERNAL_SERVER_ERROR","message":"An internal server error occurred.","documentationUrl":"https://developer.folk.app/api-reference/errors#internal-server-error","requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z"}}}},"exampleType":"examples"}},"exampleType":"examples"},"413e2a8d-b612-4816-979c-8dd3b02dbfdc":{"description":"The server is overloaded or down for maintenance.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"TOO_MANY_REQUESTS","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"You have exceeded your rate limit.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"documentationUrl":{"type":"string","format":"uri","example":"https://developer.folk.app/api-reference/errors#rate-limiting","isRequired":true,"uniqueKey":"error.documentationUrl","typeLabel":"string\u003curi>"},"requestId":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000","isRequired":true,"uniqueKey":"error.requestId","typeLabel":"string\u003cuuid>"},"timestamp":{"type":"string","format":"date-time","example":"2025-10-01T12:00:00Z","isRequired":true,"uniqueKey":"error.timestamp","typeLabel":"string\u003cdate-time>"},"details":{"type":"object","additionalProperties":true,"example":{"policy":"burst","limit":20,"remaining":0,"windowSeconds":2,"retryAfter":"2025-10-01T12:00:02.000Z"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message","documentationUrl","requestId","timestamp"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"description":"Error response containing error details.","uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"SERVICE_UNAVAILABLE","message":"The service is currently unavailable.","documentationUrl":"https://developer.folk.app/api-reference/errors#service-unavailable","requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"SERVICE_UNAVAILABLE","message":"The service is currently unavailable.","documentationUrl":"https://developer.folk.app/api-reference/errors#service-unavailable","requestId":"123e4567-e89b-12d3-a456-426614174000","timestamp":"2025-10-01T12:00:00Z"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"8a43d9af-d8c7-445c-bfac-42707fa24cf2":{"bearerApiKeyAuth":{"type":"http","scheme":"bearer","description":"API key for authentication","scopes":[],"schemeName":"bearerApiKeyAuth"}}},"servers":{"9ff6af81-d226-4589-a8c5-5e6c925a5653":{"url":"https://api.folk.app","description":"Folk's public API production base URL.","x-internal":false}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"API key for authentication","scopes":[],"schemeName":"bearerApiKeyAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key for authentication","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerApiKeyAuth","name":"Authorization"}],"title":"bearerApiKeyAuth"}]},"originalFileLocation":"schemas/2025-06-09.json"},"subdomain":"folk-cf968f5e","siteName":"Folk Developer Portal","title":"(Beta) List message senders - Folk Developer Portal","navMaps":{"firstHrefInVersion":{"2025-06-09":{"href":"/api-reference/campaigns/list-message-senders","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T10:19:49.428Z","originalFileLocation":"api-reference/campaigns/list-message-senders.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=\"Retrieve a paginated list of the email addresses you can send campaigns from, last used first: those you own, those shared with the workspace, and every sender of the workspace for admins. Senders still waiting for verification are left out. Each sender comes with its signature, which is what {{signature}} inserts on a new step or message: end a body with {{signature}} to sign it, rather than writing the signature yourself.This endpoint is currently in open beta. The API surface may change as we iterate based on feedback.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Folk Developer Portal\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/folk-cf968f5e/2qJ3PKRZLvFhl3LP/_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/folk-cf968f5e/2qJ3PKRZLvFhl3LP/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/folk-cf968f5e/2qJ3PKRZLvFhl3LP/_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/folk-cf968f5e/2qJ3PKRZLvFhl3LP/_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/folk-cf968f5e/2qJ3PKRZLvFhl3LP/_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/folk-cf968f5e/2qJ3PKRZLvFhl3LP/_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/folk-cf968f5e/2qJ3PKRZLvFhl3LP/_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/folk-cf968f5e/2qJ3PKRZLvFhl3LP/_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/folk-cf968f5e/2qJ3PKRZLvFhl3LP/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"(Beta) List message senders - Folk Developer Portal\">\u003cmeta data-mint-head property=\"og:description\" content=\"Retrieve a paginated list of the email addresses you can send campaigns from, last used first: those you own, those shared with the workspace, and every sender of the workspace for admins. Senders still waiting for verification are left out. Each sender comes with its signature, which is what {{signature}} inserts on a new step or message: end a body with {{signature}} to sign it, rather than writing the signature yourself.This endpoint is currently in open beta. The API surface may change as we iterate based on feedback.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Folk Developer Portal\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.folk.app/api-reference/campaigns/list-message-senders\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://folk-cf968f5e.mintlify.app/_mintlify/api/og/v2?division=Campaigns\u0026amp;title=%28Beta%29+List+message+senders\u0026amp;description=Retrieve+a+paginated+list+of+the+email+addresses+you+can+send+campaigns+from%2C+last+used+first%3A+those+you+own%2C+those+shared+with+the+workspace%2C+and+every+sender+\u0026amp;theme=85df8d899a1a67ad96f0c424\u0026amp;signature=61144ae8bc500b00306f6dbdd39caba1a0fe9b623725112fe6d50c4bcf6e89cc\">\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=\"(Beta) List message senders - Folk Developer Portal\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Retrieve a paginated list of the email addresses you can send campaigns from, last used first: those you own, those shared with the workspace, and every sender of the workspace for admins. Senders still waiting for verification are left out. Each sender comes with its signature, which is what {{signature}} inserts on a new step or message: end a body with {{signature}} to sign it, rather than writing the signature yourself.This endpoint is currently in open beta. The API surface may change as we iterate based on feedback.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://folk-cf968f5e.mintlify.app/_mintlify/api/og/v2?division=Campaigns\u0026amp;title=%28Beta%29+List+message+senders\u0026amp;description=Retrieve+a+paginated+list+of+the+email+addresses+you+can+send+campaigns+from%2C+last+used+first%3A+those+you+own%2C+those+shared+with+the+workspace%2C+and+every+sender+\u0026amp;theme=85df8d899a1a67ad96f0c424\u0026amp;signature=61144ae8bc500b00306f6dbdd39caba1a0fe9b623725112fe6d50c4bcf6e89cc\">\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/folk-cf968f5e/2qJ3PKRZLvFhl3LP/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Folk Developer Portal\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.folk.app/api-reference/campaigns/list-message-senders\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/campaigns/list-message-senders.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.folk.app/#organization\",\"name\":\"Folk Developer Portal\",\"url\":\"https://developer.folk.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/folk-cf968f5e/I7wFhRmtMuOvy2tG/assets/logo-light.svg?fit=max\u0026auto=format\u0026n=I7wFhRmtMuOvy2tG\u0026q=85\u0026s=08eda1dcbb1eefceac8ca5fea9c103d8\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.folk.app#website\",\"name\":\"Folk Developer Portal\",\"url\":\"https://developer.folk.app\",\"publisher\":{\"@id\":\"https://developer.folk.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.folk.app/api-reference/campaigns/list-message-senders#webpage\",\"url\":\"https://developer.folk.app/api-reference/campaigns/list-message-senders\",\"name\":\"(Beta) List message senders\",\"description\":\"Retrieve a paginated list of the email addresses you can send campaigns from, last used first: those you own, those shared with the workspace, and every sender of the workspace for admins. Senders still waiting for verification are left out. Each sender comes with its signature, which is what {{signature}} inserts on a new step or message: end a body with {{signature}} to sign it, rather than writing the signature yourself.This endpoint is currently in open beta. The API surface may change as we iterate based on feedback.\",\"dateModified\":\"2026-10-29T10:19:49.428Z\",\"isPartOf\":{\"@id\":\"https://developer.folk.app#website\"},\"breadcrumb\":{\"@id\":\"https://developer.folk.app/api-reference/campaigns/list-message-senders#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.folk.app/api-reference/campaigns/list-message-senders#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Available endpoints\",\"item\":\"https://developer.folk.app/api-reference/people/list-people\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Campaigns\",\"item\":\"https://developer.folk.app/api-reference/campaigns/list-campaigns\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"(Beta) List message senders\",\"item\":\"https://developer.folk.app/api-reference/campaigns/list-message-senders\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.folk.app/api-reference/campaigns/list-message-senders#apireference\",\"headline\":\"(Beta) List message senders\",\"name\":\"(Beta) List message senders\",\"description\":\"Retrieve a paginated list of the email addresses you can send campaigns from, last used first: those you own, those shared with the workspace, and every sender of the workspace for admins. Senders still waiting for verification are left out. Each sender comes with its signature, which is what {{signature}} inserts on a new step or message: end a body with {{signature}} to sign it, rather than writing the signature yourself.This endpoint is currently in open beta. The API surface may change as we iterate based on feedback.\",\"url\":\"https://developer.folk.app/api-reference/campaigns/list-message-senders\",\"mainEntityOfPage\":{\"@id\":\"https://developer.folk.app/api-reference/campaigns/list-message-senders#webpage\"},\"dateModified\":\"2026-10-29T10:19:49.428Z\",\"publisher\":{\"@id\":\"https://developer.folk.app/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.folk.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Folk Developer Portal\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Folk Developer Portal","nav":{"global":null,"tabs":[{"tab":"Welcome","pages":[{"title":"Welcome","href":""}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides/quick-start"}]},{"tab":"API Reference","versions":[{"version":"2025-06-09","default":true,"groups":[{"group":"Introduction","pages":[{"title":null,"href":"/api-reference/overview"},{"title":null,"href":"/api-reference/authentication"},{"title":null,"href":"/api-reference/success-responses"},{"title":null,"href":"/api-reference/errors"},{"title":null,"href":"/api-reference/pagination"},{"title":null,"href":"/api-reference/filtering"},{"title":"Idempotency","href":"/api-reference/idempotency"},{"title":"Batch requests","href":"/api-reference/batch-requests"},{"title":null,"href":"/api-reference/rate-limits"},{"title":"Request ID","href":"/api-reference/request-id"},{"title":null,"href":"/api-reference/versioning"}]},{"group":"Available endpoints","pages":[{"group":"People","pages":[{"title":"List people","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/people","href":"/api-reference/people/list-people"},{"openapi":"post /v1/people","title":"Create a person","href":"/api-reference/people/create-a-person"},{"title":"Get a person","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/people/{personId}","href":"/api-reference/people/get-a-person"},{"openapi":"patch /v1/people/{personId}","title":"Update a person","href":"/api-reference/people/update-a-person"},{"openapi":"delete /v1/people/{personId}","title":"Delete a person","href":"/api-reference/people/delete-a-person"},{"openapi":"post /v1/people/batch/create","title":"Create people in batch","href":"/api-reference/people/create-people-in-batch"},{"openapi":"post /v1/people/batch/update","title":"Update people in batch","href":"/api-reference/people/update-people-in-batch"},{"openapi":"post /v1/people/batch/delete","title":"Delete people in batch","href":"/api-reference/people/delete-people-in-batch"}]},{"group":"Companies","pages":[{"title":"List companies","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/companies","href":"/api-reference/companies/list-companies"},{"openapi":"post /v1/companies","title":"Create a company","href":"/api-reference/companies/create-a-company"},{"title":"Get a company","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/companies/{companyId}","href":"/api-reference/companies/get-a-company"},{"openapi":"patch /v1/companies/{companyId}","title":"Update a company","href":"/api-reference/companies/update-a-company"},{"openapi":"delete /v1/companies/{companyId}","title":"Delete a company","href":"/api-reference/companies/delete-a-company"},{"openapi":"post /v1/companies/batch/create","title":"Create companies in batch","href":"/api-reference/companies/create-companies-in-batch"},{"openapi":"post /v1/companies/batch/update","title":"Update companies in batch","href":"/api-reference/companies/update-companies-in-batch"},{"openapi":"post /v1/companies/batch/delete","title":"Delete companies in batch","href":"/api-reference/companies/delete-companies-in-batch"}]},{"group":"Credits","pages":[{"title":"Get credits","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/credits","href":"/api-reference/credits/get-credits"}]},{"group":"Group members","pages":[{"title":"List group members","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/groups/{groupId}/members","href":"/api-reference/group-members/list-group-members"},{"title":"Add a group member","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json post /v1/groups/{groupId}/members","href":"/api-reference/group-members/add-a-group-member"},{"title":"Update a group member","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json patch /v1/groups/{groupId}/members/{userId}","href":"/api-reference/group-members/update-a-group-member"},{"title":"Remove a group member","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json delete /v1/groups/{groupId}/members/{userId}","href":"/api-reference/group-members/remove-a-group-member"}]},{"group":"Group custom fields","pages":[{"title":"List group custom fields","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/groups/{groupId}/custom-fields/{entityType}","href":"/api-reference/group-custom-fields/list-group-custom-fields"},{"title":"Create a group custom field","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json post /v1/groups/{groupId}/custom-fields/{entityType}","href":"/api-reference/group-custom-fields/create-a-group-custom-field"},{"title":"Get a group custom field","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/groups/{groupId}/custom-fields/{entityType}/{customFieldName}","href":"/api-reference/group-custom-fields/get-a-group-custom-field"},{"title":"Update a group custom field","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json patch /v1/groups/{groupId}/custom-fields/{entityType}/{customFieldName}","href":"/api-reference/group-custom-fields/update-a-group-custom-field"}]},{"group":"Custom objects","pages":[{"openapi":"get /v1/groups/{groupId}/{objectType}","title":"List objects","href":"/api-reference/custom-objects/list-objects"},{"openapi":"post /v1/groups/{groupId}/{objectType}","title":"Create an object","href":"/api-reference/custom-objects/create-an-object"},{"openapi":"get /v1/groups/{groupId}/{objectType}/{objectId}","title":"Get an object","href":"/api-reference/custom-objects/get-an-object"},{"openapi":"patch /v1/groups/{groupId}/{objectType}/{objectId}","title":"Update an object","href":"/api-reference/custom-objects/update-an-object"},{"openapi":"delete /v1/groups/{groupId}/{objectType}/{objectId}","title":"Delete an object","href":"/api-reference/custom-objects/delete-an-object"},{"openapi":"post /v1/groups/{groupId}/{objectType}/batch/create","title":"Create objects in batch","href":"/api-reference/custom-objects/create-objects-in-batch"},{"openapi":"post /v1/groups/{groupId}/{objectType}/batch/update","title":"Update objects in batch","href":"/api-reference/custom-objects/update-objects-in-batch"},{"openapi":"post /v1/groups/{groupId}/{objectType}/batch/delete","title":"Delete objects in batch","href":"/api-reference/custom-objects/delete-objects-in-batch"}]},{"group":"Groups","pages":[{"title":"List groups","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/groups","href":"/api-reference/groups/list-groups"},{"title":"Create a group","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json post /v1/groups","href":"/api-reference/groups/create-a-group"},{"title":"Update a group","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json patch /v1/groups/{groupId}","href":"/api-reference/groups/update-a-group"}]},{"group":"Users","pages":[{"title":"List users","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/users","href":"/api-reference/users/list-users"},{"title":"Get the current user","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/users/me","href":"/api-reference/users/get-the-current-user"},{"title":"Get a user","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/users/{userId}","href":"/api-reference/users/get-a-user"}]},{"group":"Notes","pages":[{"title":"List notes","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/notes","href":"/api-reference/notes/list-notes"},{"openapi":"post /v1/notes","title":"Create a note","href":"/api-reference/notes/create-a-note"},{"title":"Get a note","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/notes/{noteId}","href":"/api-reference/notes/get-a-note"},{"openapi":"patch /v1/notes/{noteId}","title":"Update a note","href":"/api-reference/notes/update-a-note"},{"title":"Delete a note","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json delete /v1/notes/{noteId}","href":"/api-reference/notes/delete-a-note"}]},{"group":"Reminders","pages":[{"title":"List reminders","deprecated":true,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/reminders","href":"/api-reference/reminders/list-reminders"},{"openapi":"post /v1/reminders","deprecated":true,"title":"Create a reminder","href":"/api-reference/reminders/create-a-reminder"},{"title":"Get a reminder","deprecated":true,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/reminders/{reminderId}","href":"/api-reference/reminders/get-a-reminder"},{"openapi":"patch /v1/reminders/{reminderId}","deprecated":true,"title":"Update a reminder","href":"/api-reference/reminders/update-a-reminder"},{"title":"Delete a reminder","deprecated":true,"version":null,"openapi":"/schemas/2025-06-09.json delete /v1/reminders/{reminderId}","href":"/api-reference/reminders/delete-a-reminder"}]},{"group":"Tasks","pages":[{"title":"List tasks","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/tasks","href":"/api-reference/tasks/list-tasks"},{"title":"Create a task","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json post /v1/tasks","href":"/api-reference/tasks/create-a-task"},{"title":"Get a task","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/tasks/{taskId}","href":"/api-reference/tasks/get-a-task"},{"openapi":"patch /v1/tasks/{taskId}","title":"Update a task","href":"/api-reference/tasks/update-a-task"},{"title":"Delete a task","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json delete /v1/tasks/{taskId}","href":"/api-reference/tasks/delete-a-task"},{"title":"Mark a task as done","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json post /v1/tasks/{taskId}/mark-as-done","href":"/api-reference/tasks/mark-a-task-as-done"},{"title":"Mark a task as to do","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json post /v1/tasks/{taskId}/mark-as-todo","href":"/api-reference/tasks/mark-a-task-as-to-do"}]},{"group":"Person enrichments","pages":[{"title":"List enrichments of people","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/person-enrichments","href":"/api-reference/person-enrichments/list-enrichments-of-people"},{"openapi":"post /v1/person-enrichments","title":"Enrich people","href":"/api-reference/person-enrichments/enrich-people"},{"title":"Get an enrichment of people","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json get /v1/person-enrichments/{enrichmentId}","href":"/api-reference/person-enrichments/get-an-enrichment-of-people"}]},{"group":"Interactions","pages":[{"title":"(Beta) List interactions","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"List interactions","openapi":"/schemas/2025-06-09.json get /v1/interactions","href":"/api-reference/interactions/list-interactions"},{"title":"Create an interaction","deprecated":null,"version":null,"openapi":"/schemas/2025-06-09.json post /v1/interactions","href":"/api-reference/interactions/create-an-interaction"},{"title":"(Beta) List past interactions","deprecated":true,"version":null,"tag":"Beta","sidebarTitle":"List past interactions","openapi":"/schemas/2025-06-09.json get /v1/interactions/past","href":"/api-reference/interactions/list-past-interactions"},{"title":"(Beta) List upcoming interactions","deprecated":true,"version":null,"tag":"Beta","sidebarTitle":"List upcoming interactions","openapi":"/schemas/2025-06-09.json get /v1/interactions/upcoming","href":"/api-reference/interactions/list-upcoming-interactions"},{"title":"(Beta) Get a past or upcoming interaction","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"Get a past or upcoming interaction","openapi":"/schemas/2025-06-09.json get /v1/interactions/{interactionId}","href":"/api-reference/interactions/get-a-past-or-upcoming-interaction"},{"title":"(Beta) Update an interaction","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"Update an interaction","openapi":"/schemas/2025-06-09.json patch /v1/interactions/{interactionId}","href":"/api-reference/interactions/update-an-interaction"},{"title":"(Beta) Delete an interaction","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"Delete an interaction","openapi":"/schemas/2025-06-09.json delete /v1/interactions/{interactionId}","href":"/api-reference/interactions/delete-an-interaction"}]},{"group":"Webhooks","pages":[{"openapi":"get /v1/webhooks","title":"List webhooks","href":"/api-reference/webhooks/list-webhooks"},{"openapi":"post /v1/webhooks","title":"Create a webhook","href":"/api-reference/webhooks/create-a-webhook"},{"openapi":"get /v1/webhooks/{webhookId}","title":"Get a webhook","href":"/api-reference/webhooks/get-a-webhook"},{"openapi":"patch /v1/webhooks/{webhookId}","title":"Update a webhook","href":"/api-reference/webhooks/update-a-webhook"},{"openapi":"delete /v1/webhooks/{webhookId}","title":"Delete a webhook","href":"/api-reference/webhooks/delete-a-webhook"}]},{"group":"Campaigns","pages":[{"title":"(Beta) List campaigns","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"List campaigns","openapi":"/schemas/2025-06-09.json get /v1/campaigns","href":"/api-reference/campaigns/list-campaigns"},{"title":"(Beta) Create a campaign","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"Create a campaign","openapi":"/schemas/2025-06-09.json post /v1/campaigns","href":"/api-reference/campaigns/create-a-campaign"},{"title":"(Beta) Get a campaign","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"Get a campaign","openapi":"/schemas/2025-06-09.json get /v1/campaigns/{campaignId}","href":"/api-reference/campaigns/get-a-campaign"},{"title":"(Beta) Update a campaign","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"Update a campaign","openapi":"/schemas/2025-06-09.json patch /v1/campaigns/{campaignId}","href":"/api-reference/campaigns/update-a-campaign"},{"title":"(Beta) Delete a campaign","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"Delete a campaign","openapi":"/schemas/2025-06-09.json delete /v1/campaigns/{campaignId}","href":"/api-reference/campaigns/delete-a-campaign"},{"title":"(Beta) List the messages of a campaign","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"List the messages of a campaign","openapi":"/schemas/2025-06-09.json get /v1/campaigns/{campaignId}/messages","href":"/api-reference/campaigns/list-the-messages-of-a-campaign"},{"title":"(Beta) Get a message of a campaign","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"Get a message of a campaign","openapi":"/schemas/2025-06-09.json get /v1/campaigns/{campaignId}/messages/{messageId}","href":"/api-reference/campaigns/get-a-message-of-a-campaign"},{"title":"(Beta) List the variables of a campaign","description":"Retrieve a paginated list of the `{{variables}}` a campaign's subjects and bodies can use: the fields of its people or companies, the text and numeric custom fields of its group, `{{unsubscribeLink}}` and `{{signature}}`. Write each `token` as given. A variable without a value for a recipient is removed from their message. `{{signature}}` inserts the sender's signature on a new step or message, as listed by `GET /v1/message-senders`: end a body with `\u003cp>{{signature}}\u003c/p>` to sign it, rather than writing the signature yourself.\u003cbr/>\u003cWarning>This endpoint is currently in open beta. The API surface may change as we iterate based on feedback.\u003c/Warning>","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"List the variables of a campaign","openapi":"/schemas/2025-06-09.json get /v1/campaigns/{campaignId}/variables","href":"/api-reference/campaigns/list-the-variables-of-a-campaign"},{"title":"(Beta) List message senders","deprecated":null,"version":null,"tag":"Beta","sidebarTitle":"List message senders","openapi":"/schemas/2025-06-09.json get /v1/message-senders","href":"/api-reference/campaigns/list-message-senders"}]}]}]}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]},{"tab":"Roadmap","pages":[{"title":"Roadmap","href":"/roadmap"}]}]},"title":"(Beta) List message senders - Folk Developer Portal","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}