The contact’s activity timeline as the app’s activity drawer shows it, newest first: campaign emails sent and replies received, LinkedIn invitations and messages, dialer calls with their transcript, recording, disposition and the notes the rep saved, activity logged by a connected CRM, and campaign steps still scheduled to go out (scheduledAt set, sentAt null). Every entry carries the same keys whatever the channel, so channel tells you which of them are filled: email rows carry subject, body, from and to; LinkedIn rows carry the message text in body and the profile in linkedinUrl; call rows carry phoneNumber, direction, callTranscript, callRecordingUrl, callDisposition, and the call notes — not a message — in body. Page with limit (1-100, default 100) and cursor: copy nextCursor from the previous page and stop when it is null. limit bounds the page of history; the first page can carry a few entries on top of it (campaign steps still scheduled, and LinkedIn activity, neither of which pages on its own), so read activities.length rather than assuming limit. Free to call.
Errors:
404CONTACT_NOT_FOUND — No contact with that id exists.
422VALIDATION_FAILED — The path, query or body failed validation; param names the offending field and message says why.
429RATE_LIMITED — More than 120 requests per minute or 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares; retry after Retry-After.
500UNEXPECTED_ERROR — The timeline could not be assembled; quote request_id to support.
Requires one of the following token scopes: contacts.
Maximum number of activities per page, 1-100 (default 100). It bounds the page of history; the first page can carry a few entries on top of it (campaign steps still scheduled, and LinkedIn activity, neither of which pages on its own), so read activities.length rather than assuming limit.
One page of the timeline, newest first, with any campaign steps still scheduled pinned at the top. The first page can hold a few entries more than limit.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Fuse API","colors":{"primary":"#22857C","light":"#34C7BA","dark":"#22857C"},"logo":{"light":"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/logo/light.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=c9afa73057eb802e14743fbb297c60d5","dark":"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/logo/dark.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=1fc8cdcdfa374184a0d0be9a3559e3ae"},"favicon":{"light":"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/favicon/light.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=ac736774fcb3b9a1a851b2993948e5ec","dark":"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/favicon/dark.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=32e317b320fd34552ab3990cd8a717a4"},"api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","python","javascript"],"prefill":true}},"background":{"color":{"light":"#FFFFFF","dark":"#161615"}},"navbar":{"links":[{"href":"mailto:support@fuseai.com","label":"Support"}],"primary":{"type":"button","label":"Open Fuse","href":"https://app.tryfuse.ai"}},"footer":{"socials":{"website":"https://fuseai.com","linkedin":"https://www.linkedin.com/company/fuseaicom"}},"contextual":{"options":["copy","view","claude","cursor"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"fuseai","hasAudioNarration":false,"actualSubdomain":"fuseai","customDomains":["docs.fuseai.com"],"gitSource":{"type":"github","owner":"kompassai-com","repo":"api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae37b777a4e4821c08feade","collectionId":"5bacfad1-97dd-4f59-945f-2a160fb2f0c7","liveDeploymentHistoryId":"6ae37b777a4e4821c08feade","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae37b777a4e4821c08feade","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API Reference","count":157},{"language":"default","tag":"Documentation","count":50},{"language":"default","tag":"Agents","count":27},{"language":"default","tag":"Knowledge hubs","count":18},{"language":"default","tag":"Lists","count":17},{"language":"default","tag":"Campaigns","count":15},{"language":"default","tag":"Guides","count":14},{"language":"default","tag":"Workflows","count":10},{"language":"default","tag":"Data","count":9},{"language":"default","tag":"Account","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"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":"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":"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":"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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#topbar-cta-button .bg-primary-dark{background-color:rgb(0 0 0)}.dark #topbar-cta-button .bg-primary-dark{background-color:rgb(255 255 255)}.dark #topbar-cta-button .text-white,.dark #topbar-cta-button .text-white\\/90{color:rgb(0 0 0)}"}],"page":{"pagePath":"api-reference/contacts/a-contacts-activity-timeline","slug":"/api-reference/contacts/a-contacts-activity-timeline","pageMetadata":{"title":"A contact's activity timeline","description":"The contact's activity timeline as the app's activity drawer shows it, newest first: campaign emails sent and replies received, LinkedIn invitations and messages, dialer calls with their transcript, recording, disposition and the notes the rep saved, activity logged by a connected CRM, and campaign steps still scheduled to go out (`scheduledAt` set, `sentAt` null). Every entry carries the same keys whatever the channel, so `channel` tells you which of them are filled: email rows carry `subject`, `body`, `from` and `to`; LinkedIn rows carry the message text in `body` and the profile in `linkedinUrl`; call rows carry `phoneNumber`, `direction`, `callTranscript`, `callRecordingUrl`, `callDisposition`, and the call notes — not a message — in `body`. Page with `limit` (1-100, default 100) and `cursor`: copy `nextCursor` from the previous page and stop when it is null. `limit` bounds the page of history; the first page can carry a few entries on top of it (campaign steps still scheduled, and LinkedIn activity, neither of which pages on its own), so read `activities.length` rather than assuming `limit`. Free to call.\n\nErrors:\n- `404` `CONTACT_NOT_FOUND` — No contact with that id exists.\n- `422` `VALIDATION_FAILED` — The path, query or body failed validation; `param` names the offending field and `message` says why.\n- `429` `RATE_LIMITED` — More than 120 requests per minute or 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares; retry after Retry-After.\n- `500` `UNEXPECTED_ERROR` — The timeline could not be assembled; quote request_id to support.\n\nRequires one of the following token scopes: contacts.","deprecated":null,"version":null,"openapi":"/openapi.json get /business/contacts/{contactId}/activities","href":"/api-reference/contacts/a-contacts-activity-timeline","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 li: \"li\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"The contact’s activity timeline as the app’s activity drawer shows it, newest first: campaign emails sent and replies received, LinkedIn invitations and messages, dialer calls with their transcript, recording, disposition and the notes the rep saved, activity logged by a connected CRM, and campaign steps still scheduled to go out (\", _jsx(_components.code, {\n children: \"scheduledAt\"\n }), \" set, \", _jsx(_components.code, {\n children: \"sentAt\"\n }), \" null). Every entry carries the same keys whatever the channel, so \", _jsx(_components.code, {\n children: \"channel\"\n }), \" tells you which of them are filled: email rows carry \", _jsx(_components.code, {\n children: \"subject\"\n }), \", \", _jsx(_components.code, {\n children: \"body\"\n }), \", \", _jsx(_components.code, {\n children: \"from\"\n }), \" and \", _jsx(_components.code, {\n children: \"to\"\n }), \"; LinkedIn rows carry the message text in \", _jsx(_components.code, {\n children: \"body\"\n }), \" and the profile in \", _jsx(_components.code, {\n children: \"linkedinUrl\"\n }), \"; call rows carry \", _jsx(_components.code, {\n children: \"phoneNumber\"\n }), \", \", _jsx(_components.code, {\n children: \"direction\"\n }), \", \", _jsx(_components.code, {\n children: \"callTranscript\"\n }), \", \", _jsx(_components.code, {\n children: \"callRecordingUrl\"\n }), \", \", _jsx(_components.code, {\n children: \"callDisposition\"\n }), \", and the call notes — not a message — in \", _jsx(_components.code, {\n children: \"body\"\n }), \". Page with \", _jsx(_components.code, {\n children: \"limit\"\n }), \" (1-100, default 100) and \", _jsx(_components.code, {\n children: \"cursor\"\n }), \": copy \", _jsx(_components.code, {\n children: \"nextCursor\"\n }), \" from the previous page and stop when it is null. \", _jsx(_components.code, {\n children: \"limit\"\n }), \" bounds the page of history; the first page can carry a few entries on top of it (campaign steps still scheduled, and LinkedIn activity, neither of which pages on its own), so read \", _jsx(_components.code, {\n children: \"activities.length\"\n }), \" rather than assuming \", _jsx(_components.code, {\n children: \"limit\"\n }), \". Free to call.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Errors:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"404\"\n }), \" \", _jsx(_components.code, {\n children: \"CONTACT_NOT_FOUND\"\n }), \" — No contact with that id exists.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"422\"\n }), \" \", _jsx(_components.code, {\n children: \"VALIDATION_FAILED\"\n }), \" — The path, query or body failed validation; \", _jsx(_components.code, {\n children: \"param\"\n }), \" names the offending field and \", _jsx(_components.code, {\n children: \"message\"\n }), \" says why.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"429\"\n }), \" \", _jsx(_components.code, {\n children: \"RATE_LIMITED\"\n }), \" — More than 120 requests per minute or 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares; retry after Retry-After.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"500\"\n }), \" \", _jsx(_components.code, {\n children: \"UNEXPECTED_ERROR\"\n }), \" — The timeline could not be assembled; quote request_id to support.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Requires one of the following token scopes: contacts.\"\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":"A contact's activity timeline","description":"The contact's activity timeline as the app's activity drawer shows it, newest first: campaign emails sent and replies received, LinkedIn invitations and messages, dialer calls with their transcript, recording, disposition and the notes the rep saved, activity logged by a connected CRM, and campaign steps still scheduled to go out (`scheduledAt` set, `sentAt` null). Every entry carries the same keys whatever the channel, so `channel` tells you which of them are filled: email rows carry `subject`, `body`, `from` and `to`; LinkedIn rows carry the message text in `body` and the profile in `linkedinUrl`; call rows carry `phoneNumber`, `direction`, `callTranscript`, `callRecordingUrl`, `callDisposition`, and the call notes — not a message — in `body`. Page with `limit` (1-100, default 100) and `cursor`: copy `nextCursor` from the previous page and stop when it is null. `limit` bounds the page of history; the first page can carry a few entries on top of it (campaign steps still scheduled, and LinkedIn activity, neither of which pages on its own), so read `activities.length` rather than assuming `limit`. Free to call.\n\nErrors:\n- `404` `CONTACT_NOT_FOUND` — No contact with that id exists.\n- `422` `VALIDATION_FAILED` — The path, query or body failed validation; `param` names the offending field and `message` says why.\n- `429` `RATE_LIMITED` — More than 120 requests per minute or 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares; retry after Retry-After.\n- `500` `UNEXPECTED_ERROR` — The timeline could not be assembled; quote request_id to support.\n\nRequires one of the following token scopes: contacts.","deprecated":null,"version":null,"openapi":"/openapi.json get /business/contacts/{contactId}/activities","href":"/api-reference/contacts/a-contacts-activity-timeline","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"listContactActivities","summary":"A contact's activity timeline","tags":["Contacts"],"security":["3649760d-b7b4-4ad8-a9bb-44bb6d0b8650"],"parameters":["954de4ce-5ef7-42f6-8c79-805be4a02ba3","cfd771af-d596-4cbb-afc3-37baf0f7327f","dfc28f4a-6db8-4d9c-9054-64b66251a603"],"responses":{"200":"b7fe8757-02e8-473c-82ed-3a90fed11d3a","400":"1bb2c686-1f12-41ae-97bf-736007f79c94","401":"950164a4-ea67-4e0f-ac39-f6a78b074cc2","402":"73488211-56b8-45f8-8b3f-837e3efbc1fb","403":"369bf878-e1ae-4f91-b8d4-67d9f01ca75d","404":"54f87459-52b6-4910-9a51-1a751de606e2","409":"b9ce264b-5a24-42bd-9dca-ccc9b5351fa7","422":"04cc7fe8-d14b-4f27-89b9-e69599d08bc9","429":"588aead4-4da6-44ef-b4b4-d2571d96bc63","500":"9b443097-3753-47cd-9ed3-44add6214b53"},"description":"The contact's activity timeline as the app's activity drawer shows it, newest first: campaign emails sent and replies received, LinkedIn invitations and messages, dialer calls with their transcript, recording, disposition and the notes the rep saved, activity logged by a connected CRM, and campaign steps still scheduled to go out (`scheduledAt` set, `sentAt` null). Every entry carries the same keys whatever the channel, so `channel` tells you which of them are filled: email rows carry `subject`, `body`, `from` and `to`; LinkedIn rows carry the message text in `body` and the profile in `linkedinUrl`; call rows carry `phoneNumber`, `direction`, `callTranscript`, `callRecordingUrl`, `callDisposition`, and the call notes — not a message — in `body`. Page with `limit` (1-100, default 100) and `cursor`: copy `nextCursor` from the previous page and stop when it is null. `limit` bounds the page of history; the first page can carry a few entries on top of it (campaign steps still scheduled, and LinkedIn activity, neither of which pages on its own), so read `activities.length` rather than assuming `limit`. Free to call.\n\nErrors:\n- `404` `CONTACT_NOT_FOUND` — No contact with that id exists.\n- `422` `VALIDATION_FAILED` — The path, query or body failed validation; `param` names the offending field and `message` says why.\n- `429` `RATE_LIMITED` — More than 120 requests per minute or 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares; retry after Retry-After.\n- `500` `UNEXPECTED_ERROR` — The timeline could not be assembled; quote request_id to support.\n\nRequires one of the following token scopes: contacts.","method":"get","type":"path","servers":["4ca8b996-e74f-447c-8937-bc591ab08d00"],"path":"/business/contacts/{contactId}/activities","baseUrlOptions":["https://api.tryfuse.ai/api/v1"],"title":"A contact's activity timeline","codeSamples":[],"requestExampleLanguages":["bash","python","javascript"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[]},"dependencies":{"parameters":{"954de4ce-5ef7-42f6-8c79-805be4a02ba3":{"name":"contactId","in":"path","required":true,"description":"Id of the contact: the row id from GET /business/lists/{listId}/rows, or the contactId returned by POST /business/contacts/resolve.","schema":{"type":"string","description":"Id of the contact: the row id from GET /business/lists/{listId}/rows, or the contactId returned by POST /business/contacts/resolve.","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"cfd771af-d596-4cbb-afc3-37baf0f7327f":{"name":"limit","in":"query","required":false,"description":"Maximum number of activities per page, 1-100 (default 100). It bounds the page of history; the first page can carry a few entries on top of it (campaign steps still scheduled, and LinkedIn activity, neither of which pages on its own), so read `activities.length` rather than assuming `limit`.","schema":{"type":"integer","minimum":1,"maximum":100,"default":100,"description":"Maximum number of activities per page, 1-100 (default 100). It bounds the page of history; the first page can carry a few entries on top of it (campaign steps still scheduled, and LinkedIn activity, neither of which pages on its own), so read `activities.length` rather than assuming `limit`.","isRequired":false,"uniqueKey":"","typeLabel":"integer"}},"dfc28f4a-6db8-4d9c-9054-64b66251a603":{"name":"cursor","in":"query","required":false,"description":"Opaque cursor copied from the previous page's `nextCursor` (max 500 characters). Omit it for the first page.","schema":{"type":"string","minLength":1,"maxLength":500,"description":"Opaque cursor copied from the previous page's `nextCursor` (max 500 characters). Omit it for the first page.","isRequired":false,"uniqueKey":"","typeLabel":"string"}}},"responses":{"b7fe8757-02e8-473c-82ed-3a90fed11d3a":{"description":"Success","headers":{"RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests permitted in the current window."},"RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Requests remaining in the current window."},"RateLimit-Reset":{"schema":{"type":"integer"},"description":"Seconds until the current window resets."}},"content":{"application/json":{"schema":{"type":"object","required":["contactId","activities","nextCursor"],"properties":{"contactId":{"type":"string","description":"Id of the contact.","isRequired":true,"uniqueKey":"contactId","typeLabel":"string"},"activities":{"type":"array","description":"One page of the timeline, newest first, with any campaign steps still scheduled pinned at the top. The first page can hold a few entries more than `limit`.","items":{"type":"object","description":"One timeline entry. Every key is present on every entry; which of them are filled depends on `channel`.","required":["id","channel","status","direction","campaignId","subject","body","sentAt","receivedAt","scheduledAt","from","to","linkedinUrl","phoneNumber","callTranscript","callRecordingUrl","callDisposition"],"properties":{"id":{"oneOf":[{"type":"string","description":"Id of the activity (the provider message id on LinkedIn rows).","isRequired":true,"uniqueKey":"activities.items.[INDEX].id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Id of the activity (the provider message id on LinkedIn rows).","isRequired":true,"uniqueKey":"activities.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].id","typeLabel":"string | null"},"channel":{"oneOf":[{"type":"string","description":"Where the activity happened: `email`, `linkedin_message`, `linkedin_connection`, `inmail`, `linkedin_visit`, `linkedin_like`, `non_campaign_call` (a call that was placed, campaign or one-off), `dialer` (a campaign call step still scheduled), `todo` (a manual campaign step), and `crm_activity` for a note, meeting or task logged in a connected CRM. A CRM's own emails and calls arrive as `email` and `non_campaign_call` like any other.","isRequired":true,"uniqueKey":"activities.items.[INDEX].channel.oneOf.0","typeLabel":"string"},{"type":"null","description":"Where the activity happened: `email`, `linkedin_message`, `linkedin_connection`, `inmail`, `linkedin_visit`, `linkedin_like`, `non_campaign_call` (a call that was placed, campaign or one-off), `dialer` (a campaign call step still scheduled), `todo` (a manual campaign step), and `crm_activity` for a note, meeting or task logged in a connected CRM. A CRM's own emails and calls arrive as `email` and `non_campaign_call` like any other.","isRequired":true,"uniqueKey":"activities.items.[INDEX].channel.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].channel","typeLabel":"string | null"},"status":{"oneOf":[{"type":"string","description":"Delivery state, in the vocabulary of the store the row came from. Campaign steps: scheduled, approval_required, action_required, sent, replied, skipped, stopped, overwritten, preview, failed. Calls: answered, answered-subsequent, notAnswered, callEnded, answeredByMachine, message-played, busy, inbound-forwarding-not-accepted, failed, cancelled, pick-up-race-dropped. LinkedIn: sent, replied. Activity logged by a connected CRM: logged.","isRequired":true,"uniqueKey":"activities.items.[INDEX].status.oneOf.0","typeLabel":"string"},{"type":"null","description":"Delivery state, in the vocabulary of the store the row came from. Campaign steps: scheduled, approval_required, action_required, sent, replied, skipped, stopped, overwritten, preview, failed. Calls: answered, answered-subsequent, notAnswered, callEnded, answeredByMachine, message-played, busy, inbound-forwarding-not-accepted, failed, cancelled, pick-up-race-dropped. LinkedIn: sent, replied. Activity logged by a connected CRM: logged.","isRequired":true,"uniqueKey":"activities.items.[INDEX].status.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].status","typeLabel":"string | null"},"direction":{"oneOf":[{"type":"string","enum":["inbound","outbound",null],"description":"Direction when the channel records one (calls always do); null otherwise.","isRequired":true,"uniqueKey":"activities.items.[INDEX].direction.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["inbound","outbound",null],"description":"Direction when the channel records one (calls always do); null otherwise.","isRequired":true,"uniqueKey":"activities.items.[INDEX].direction.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].direction","typeLabel":"enum\u003cstring> | null"},"campaignId":{"oneOf":[{"type":"string","description":"Campaign the activity belongs to; null for activity outside a campaign.","isRequired":true,"uniqueKey":"activities.items.[INDEX].campaignId.oneOf.0","typeLabel":"string"},{"type":"null","description":"Campaign the activity belongs to; null for activity outside a campaign.","isRequired":true,"uniqueKey":"activities.items.[INDEX].campaignId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].campaignId","typeLabel":"string | null"},"subject":{"oneOf":[{"type":"string","description":"Email subject; null on every other channel.","isRequired":true,"uniqueKey":"activities.items.[INDEX].subject.oneOf.0","typeLabel":"string"},{"type":"null","description":"Email subject; null on every other channel.","isRequired":true,"uniqueKey":"activities.items.[INDEX].subject.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].subject","typeLabel":"string | null"},"body":{"oneOf":[{"type":"object","description":"The text the activity carries: the email body, the LinkedIn message text, or — on call rows — the notes the rep saved against the call. Null when the activity carries no text. Read `contentType` before rendering it: the same key carries HTML and plain text, and a long body can arrive shortened to a snippet.","required":["contentType","content"],"properties":{"contentType":{"type":"string","enum":["html","text"],"description":"How to read `content`.","isRequired":true,"uniqueKey":"activities.items.[INDEX].body.oneOf.0.contentType","typeLabel":"enum\u003cstring>"},"content":{"type":"string","description":"The body text, in the form `contentType` names; a long body can be shortened to a snippet.","isRequired":true,"uniqueKey":"activities.items.[INDEX].body.oneOf.0.content","typeLabel":"string"}},"isRequired":true,"uniqueKey":"activities.items.[INDEX].body.oneOf.0","typeLabel":"object"},{"type":"null","description":"The text the activity carries: the email body, the LinkedIn message text, or — on call rows — the notes the rep saved against the call. Null when the activity carries no text. Read `contentType` before rendering it: the same key carries HTML and plain text, and a long body can arrive shortened to a snippet.","required":["contentType","content"],"properties":{"contentType":{"type":"string","enum":["html","text"],"description":"How to read `content`."},"content":{"type":"string","description":"The body text, in the form `contentType` names; a long body can be shortened to a snippet."}},"isRequired":true,"uniqueKey":"activities.items.[INDEX].body.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].body","typeLabel":"object | null"},"sentAt":{"oneOf":[{"type":"string","format":"date-time","description":"When an outbound activity went out.","isRequired":true,"uniqueKey":"activities.items.[INDEX].sentAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When an outbound activity went out.","isRequired":true,"uniqueKey":"activities.items.[INDEX].sentAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].sentAt","typeLabel":"string\u003cdate-time> | null"},"receivedAt":{"oneOf":[{"type":"string","format":"date-time","description":"When an inbound activity arrived.","isRequired":true,"uniqueKey":"activities.items.[INDEX].receivedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When an inbound activity arrived.","isRequired":true,"uniqueKey":"activities.items.[INDEX].receivedAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].receivedAt","typeLabel":"string\u003cdate-time> | null"},"scheduledAt":{"oneOf":[{"type":"string","format":"date-time","description":"For a campaign step that has not gone out yet: when it will.","isRequired":true,"uniqueKey":"activities.items.[INDEX].scheduledAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"For a campaign step that has not gone out yet: when it will.","isRequired":true,"uniqueKey":"activities.items.[INDEX].scheduledAt.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].scheduledAt","typeLabel":"string\u003cdate-time> | null"},"from":{"oneOf":[{"type":"object","description":"Email rows: the sender; null when the channel records no address.","required":["name","address"],"properties":{"name":{"oneOf":[{"type":"string","description":"Display name when known.","isRequired":true,"uniqueKey":"activities.items.[INDEX].from.oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name when known.","isRequired":true,"uniqueKey":"activities.items.[INDEX].from.oneOf.0.name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].from.oneOf.0.name","typeLabel":"string | null"},"address":{"type":"string","description":"Email address.","isRequired":true,"uniqueKey":"activities.items.[INDEX].from.oneOf.0.address","typeLabel":"string"}},"isRequired":true,"uniqueKey":"activities.items.[INDEX].from.oneOf.0","typeLabel":"object"},{"type":"null","description":"Email rows: the sender; null when the channel records no address.","required":["name","address"],"properties":{"name":{"oneOf":[{"type":"string","description":"Display name when known."},{"type":"null","description":"Display name when known."}]},"address":{"type":"string","description":"Email address."}},"isRequired":true,"uniqueKey":"activities.items.[INDEX].from.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].from","typeLabel":"object | null"},"to":{"type":"array","description":"Email rows: the recipients; empty on channels that record no address.","items":{"type":"object","required":["name","address"],"properties":{"name":{"oneOf":[{"type":"string","description":"Display name when known.","isRequired":true,"uniqueKey":"activities.items.[INDEX].to.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name when known.","isRequired":true,"uniqueKey":"activities.items.[INDEX].to.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].to.items.[INDEX].name","typeLabel":"string | null"},"address":{"type":"string","description":"Email address.","isRequired":true,"uniqueKey":"activities.items.[INDEX].to.items.[INDEX].address","typeLabel":"string"}},"uniqueKey":"activities.items.[INDEX].to.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"activities.items.[INDEX].to","typeLabel":"object[]"},"linkedinUrl":{"oneOf":[{"type":"string","description":"LinkedIn rows: the profile the message or invitation was sent to.","isRequired":true,"uniqueKey":"activities.items.[INDEX].linkedinUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"LinkedIn rows: the profile the message or invitation was sent to.","isRequired":true,"uniqueKey":"activities.items.[INDEX].linkedinUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].linkedinUrl","typeLabel":"string | null"},"phoneNumber":{"oneOf":[{"type":"string","description":"Call rows: the number dialled.","isRequired":true,"uniqueKey":"activities.items.[INDEX].phoneNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Call rows: the number dialled.","isRequired":true,"uniqueKey":"activities.items.[INDEX].phoneNumber.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].phoneNumber","typeLabel":"string | null"},"callTranscript":{"oneOf":[{"type":"string","description":"Call rows: the transcript when one was produced.","isRequired":true,"uniqueKey":"activities.items.[INDEX].callTranscript.oneOf.0","typeLabel":"string"},{"type":"null","description":"Call rows: the transcript when one was produced.","isRequired":true,"uniqueKey":"activities.items.[INDEX].callTranscript.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].callTranscript","typeLabel":"string | null"},"callRecordingUrl":{"oneOf":[{"type":"string","description":"Call rows: a time-limited recording URL when a recording exists.","isRequired":true,"uniqueKey":"activities.items.[INDEX].callRecordingUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"Call rows: a time-limited recording URL when a recording exists.","isRequired":true,"uniqueKey":"activities.items.[INDEX].callRecordingUrl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].callRecordingUrl","typeLabel":"string | null"},"callDisposition":{"oneOf":[{"type":"string","enum":["connected-positive","connected-neutral","connected-negative","connected-disqualified","connected-follow-up","left-voicemail","no-answer","connected-busy","bad-wrong-number","not-specified",null],"description":"Call rows: the outcome the rep recorded. `not-specified` is the default a call carries until the rep sets one; null on every other channel.","isRequired":true,"uniqueKey":"activities.items.[INDEX].callDisposition.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["connected-positive","connected-neutral","connected-negative","connected-disqualified","connected-follow-up","left-voicemail","no-answer","connected-busy","bad-wrong-number","not-specified",null],"description":"Call rows: the outcome the rep recorded. `not-specified` is the default a call carries until the rep sets one; null on every other channel.","isRequired":true,"uniqueKey":"activities.items.[INDEX].callDisposition.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"activities.items.[INDEX].callDisposition","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"activities.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"activities","typeLabel":"object[]"},"nextCursor":{"oneOf":[{"type":"string","description":"Cursor for the next page; null on the last page.","isRequired":true,"uniqueKey":"nextCursor.oneOf.0","typeLabel":"string"},{"type":"null","description":"Cursor for the next page; null on the last page.","isRequired":true,"uniqueKey":"nextCursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"nextCursor","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"example":{"contactId":"68a1f2c89c41d20014b3e955","activities":[{"id":"68a2b1c09c41d20014b41a10","channel":"email","status":"replied","direction":null,"campaignId":"68a201559c41d20014b40111","subject":"Re: Quick question about Brightpay's Q3 hiring","body":{"contentType":"html","content":"\u003cp>Thanks Sam, happy to chat on Thursday.\u003c/p>"},"sentAt":null,"receivedAt":"2026-08-21T14:02:11.000Z","scheduledAt":null,"from":{"name":"Ada Nwosu","address":"ada@brightpay.com"},"to":[{"name":"Sam Rivera","address":"sam@acme.com"}],"linkedinUrl":null,"phoneNumber":null,"callTranscript":null,"callRecordingUrl":null,"callDisposition":null},{"id":"68a2a0114773c751a92de55d","channel":"non_campaign_call","status":"answered","direction":"outbound","campaignId":null,"subject":null,"body":{"contentType":"html","content":"- Asked for pricing on the 10-seat plan\u003cbr>- Sending the deck, following up Thursday"},"sentAt":"2026-08-20T16:47:18.434Z","receivedAt":null,"scheduledAt":null,"from":null,"to":[],"linkedinUrl":null,"phoneNumber":"+14155552671","callTranscript":"Ada: Hello? — Sam: Hi Ada, Sam from Acme, is now a bad time?","callRecordingUrl":"https://fuse-call-recordings.s3.us-east-1.amazonaws.com/68a1f2c8/68a2a0114773c751a92de55d.wav?X-Amz-Expires=3600\u0026X-Amz-Signature=8a3f0b7c9d2e4f1a6b5c8d7e9f0a1b2c","callDisposition":"connected-positive"},{"id":"OmgR3-p-X9mOYqVQgiQ4Hw","channel":"linkedin_message","status":"sent","direction":null,"campaignId":"68a201559c41d20014b40111","subject":null,"body":{"contentType":"text","content":"Hi Ada, loved your post on payroll automation. Open to a quick chat next week?"},"sentAt":"2026-08-19T09:15:00.000Z","receivedAt":null,"scheduledAt":null,"from":null,"to":[],"linkedinUrl":"linkedin.com/in/ada-nwosu","phoneNumber":null,"callTranscript":null,"callRecordingUrl":null,"callDisposition":null}],"nextCursor":"3"},"examples":{"Example":{"title":"Example","value":{"contactId":"68a1f2c89c41d20014b3e955","activities":[{"id":"68a2b1c09c41d20014b41a10","channel":"email","status":"replied","direction":null,"campaignId":"68a201559c41d20014b40111","subject":"Re: Quick question about Brightpay's Q3 hiring","body":{"contentType":"html","content":"\u003cp>Thanks Sam, happy to chat on Thursday.\u003c/p>"},"sentAt":null,"receivedAt":"2026-08-21T14:02:11.000Z","scheduledAt":null,"from":{"name":"Ada Nwosu","address":"ada@brightpay.com"},"to":[{"name":"Sam Rivera","address":"sam@acme.com"}],"linkedinUrl":null,"phoneNumber":null,"callTranscript":null,"callRecordingUrl":null,"callDisposition":null},{"id":"68a2a0114773c751a92de55d","channel":"non_campaign_call","status":"answered","direction":"outbound","campaignId":null,"subject":null,"body":{"contentType":"html","content":"- Asked for pricing on the 10-seat plan\u003cbr>- Sending the deck, following up Thursday"},"sentAt":"2026-08-20T16:47:18.434Z","receivedAt":null,"scheduledAt":null,"from":null,"to":[],"linkedinUrl":null,"phoneNumber":"+14155552671","callTranscript":"Ada: Hello? — Sam: Hi Ada, Sam from Acme, is now a bad time?","callRecordingUrl":"https://fuse-call-recordings.s3.us-east-1.amazonaws.com/68a1f2c8/68a2a0114773c751a92de55d.wav?X-Amz-Expires=3600\u0026X-Amz-Signature=8a3f0b7c9d2e4f1a6b5c8d7e9f0a1b2c","callDisposition":"connected-positive"},{"id":"OmgR3-p-X9mOYqVQgiQ4Hw","channel":"linkedin_message","status":"sent","direction":null,"campaignId":"68a201559c41d20014b40111","subject":null,"body":{"contentType":"text","content":"Hi Ada, loved your post on payroll automation. Open to a quick chat next week?"},"sentAt":"2026-08-19T09:15:00.000Z","receivedAt":null,"scheduledAt":null,"from":null,"to":[],"linkedinUrl":"linkedin.com/in/ada-nwosu","phoneNumber":null,"callTranscript":null,"callRecordingUrl":null,"callDisposition":null}],"nextCursor":"3"}}},"exampleType":"examples"}},"exampleType":"examples"},"1bb2c686-1f12-41ae-97bf-736007f79c94":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"950164a4-ea67-4e0f-ac39-f6a78b074cc2":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"73488211-56b8-45f8-8b3f-837e3efbc1fb":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"369bf878-e1ae-4f91-b8d4-67d9f01ca75d":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"54f87459-52b6-4910-9a51-1a751de606e2":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"b9ce264b-5a24-42bd-9dca-ccc9b5351fa7":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"04cc7fe8-d14b-4f27-89b9-e69599d08bc9":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"588aead4-4da6-44ef-b4b4-d2571d96bc63":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"9b443097-3753-47cd-9ed3-44add6214b53":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"param":{"oneOf":[{"type":"string","uniqueKey":"error.param.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.param.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.param","typeLabel":"string | null"},"doc_url":{"oneOf":[{"type":"string","uniqueKey":"error.doc_url.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.doc_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.doc_url","typeLabel":"string | null"},"request_id":{"oneOf":[{"type":"string","uniqueKey":"error.request_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"error.request_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.request_id","typeLabel":"string | null"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"\u003cstring>","message":"\u003cstring>","param":"\u003cstring>","doc_url":"\u003cstring>","request_id":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"3649760d-b7b4-4ad8-a9bb-44bb6d0b8650":{"basicAuth":{"type":"http","scheme":"basic","description":"Your API token (`af_…`) as the Basic-auth username, with an empty password.","scopes":[],"schemeName":"basicAuth"}}},"servers":{"4ca8b996-e74f-447c-8937-bc591ab08d00":{"url":"https://api.tryfuse.ai/api/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"basic","description":"Your API token (`af_…`) as the Basic-auth username, with an empty password.","scopes":[],"schemeName":"basicAuth"},"schema":{"title":"Basic Auth","type":"object","description":"Your API token (`af_…`) as the Basic-auth username, with an empty password.","isRequired":true,"properties":{"username":{"type":"string","uniqueKey":"username","isRequired":true,"typeLabel":"string","deprecated":false},"password":{"type":"string","uniqueKey":"password","isRequired":true,"typeLabel":"string","deprecated":false}},"additionalProperties":false,"deprecated":false},"schemeName":"basicAuth","name":"Authorization"}],"title":"basicAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"fuseai","siteName":"Fuse API","title":"A contact's activity timeline - Fuse API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T16:59:47.879Z","originalFileLocation":"api-reference/contacts/a-contacts-activity-timeline.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 contact\u0026#x27;s activity timeline as the app\u0026#x27;s activity drawer shows it, newest first: campaign emails sent and replies received, LinkedIn invitations and messages, dialer calls with their transcript, recording, disposition and the notes the rep saved, activity logged by a connected CRM, and campaign steps still scheduled to go out (scheduledAt set, sentAt null). Every entry carries the same keys whatever the channel, so channel tells you which of them are filled: email rows carry subject, body, from and to; LinkedIn rows carry the message text in body and the profile in linkedinUrl; call rows carry phoneNumber, direction, callTranscript, callRecordingUrl, callDisposition, and the call notes — not a message — in body. Page with limit (1-100, default 100) and cursor: copy nextCursor from the previous page and stop when it is null. limit bounds the page of history; the first page can carry a few entries on top of it (campaign steps still scheduled, and LinkedIn activity, neither of which pages on its own), so read activities.length rather than assuming limit. Free to call. Errors: - 404 CONTACT_NOT_FOUND — No contact with that id exists. - 422 VALIDATION_FAILED — The path, query or body failed validation; param names the offending field and message says why. - 429 RATE_LIMITED — More than 120 requests per minute or 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares; retry after Retry-After. - 500 UNEXPECTED_ERROR — The timeline could not be assembled; quote request_id to support. Requires one of the following token scopes: contacts.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Fuse API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/fuseai/tzdaGJCdazH9bA6t/_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/fuseai/tzdaGJCdazH9bA6t/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/fuseai/tzdaGJCdazH9bA6t/_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/fuseai/tzdaGJCdazH9bA6t/_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/fuseai/tzdaGJCdazH9bA6t/_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/fuseai/tzdaGJCdazH9bA6t/_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/fuseai/tzdaGJCdazH9bA6t/_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/fuseai/tzdaGJCdazH9bA6t/_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/fuseai/tzdaGJCdazH9bA6t/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"A contact\u0026#x27;s activity timeline - Fuse API\">\u003cmeta data-mint-head property=\"og:description\" content=\"The contact\u0026#x27;s activity timeline as the app\u0026#x27;s activity drawer shows it, newest first: campaign emails sent and replies received, LinkedIn invitations and messages, dialer calls with their transcript, recording, disposition and the notes the rep saved, activity logged by a connected CRM, and campaign steps still scheduled to go out (scheduledAt set, sentAt null). Every entry carries the same keys whatever the channel, so channel tells you which of them are filled: email rows carry subject, body, from and to; LinkedIn rows carry the message text in body and the profile in linkedinUrl; call rows carry phoneNumber, direction, callTranscript, callRecordingUrl, callDisposition, and the call notes — not a message — in body. Page with limit (1-100, default 100) and cursor: copy nextCursor from the previous page and stop when it is null. limit bounds the page of history; the first page can carry a few entries on top of it (campaign steps still scheduled, and LinkedIn activity, neither of which pages on its own), so read activities.length rather than assuming limit. Free to call. Errors: - 404 CONTACT_NOT_FOUND — No contact with that id exists. - 422 VALIDATION_FAILED — The path, query or body failed validation; param names the offending field and message says why. - 429 RATE_LIMITED — More than 120 requests per minute or 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares; retry after Retry-After. - 500 UNEXPECTED_ERROR — The timeline could not be assembled; quote request_id to support. Requires one of the following token scopes: contacts.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Fuse API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fuseai.com/api-reference/contacts/a-contacts-activity-timeline\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://fuseai.mintlify.app/_mintlify/api/og/v2?division=Contacts\u0026amp;title=A+contact%27s+activity+timeline\u0026amp;description=The+contact%27s+activity+timeline+as+the+app%27s+activity+drawer+shows+it%2C+newest+first%3A+campaign+emails+sent+and+replies+received%2C+LinkedIn+invitations+and+message\u0026amp;theme=6edc0ab12d2194e24d86a864\u0026amp;signature=19503dec0967a21eb7d62fe95c34c33980fb37328c1b984cf0c89d688ecc4f29\">\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=\"A contact\u0026#x27;s activity timeline - Fuse API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The contact\u0026#x27;s activity timeline as the app\u0026#x27;s activity drawer shows it, newest first: campaign emails sent and replies received, LinkedIn invitations and messages, dialer calls with their transcript, recording, disposition and the notes the rep saved, activity logged by a connected CRM, and campaign steps still scheduled to go out (scheduledAt set, sentAt null). Every entry carries the same keys whatever the channel, so channel tells you which of them are filled: email rows carry subject, body, from and to; LinkedIn rows carry the message text in body and the profile in linkedinUrl; call rows carry phoneNumber, direction, callTranscript, callRecordingUrl, callDisposition, and the call notes — not a message — in body. Page with limit (1-100, default 100) and cursor: copy nextCursor from the previous page and stop when it is null. limit bounds the page of history; the first page can carry a few entries on top of it (campaign steps still scheduled, and LinkedIn activity, neither of which pages on its own), so read activities.length rather than assuming limit. Free to call. Errors: - 404 CONTACT_NOT_FOUND — No contact with that id exists. - 422 VALIDATION_FAILED — The path, query or body failed validation; param names the offending field and message says why. - 429 RATE_LIMITED — More than 120 requests per minute or 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares; retry after Retry-After. - 500 UNEXPECTED_ERROR — The timeline could not be assembled; quote request_id to support. Requires one of the following token scopes: contacts.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://fuseai.mintlify.app/_mintlify/api/og/v2?division=Contacts\u0026amp;title=A+contact%27s+activity+timeline\u0026amp;description=The+contact%27s+activity+timeline+as+the+app%27s+activity+drawer+shows+it%2C+newest+first%3A+campaign+emails+sent+and+replies+received%2C+LinkedIn+invitations+and+message\u0026amp;theme=6edc0ab12d2194e24d86a864\u0026amp;signature=19503dec0967a21eb7d62fe95c34c33980fb37328c1b984cf0c89d688ecc4f29\">\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/fuseai/tzdaGJCdazH9bA6t/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Fuse API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#22857C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fuseai.com/api-reference/contacts/a-contacts-activity-timeline\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/contacts/a-contacts-activity-timeline.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.fuseai.com/#organization\",\"name\":\"Fuse API\",\"url\":\"https://docs.fuseai.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/fuseai/HxYNa2W1WI8CM0N4/logo/light.svg?fit=max\u0026auto=format\u0026n=HxYNa2W1WI8CM0N4\u0026q=85\u0026s=c9afa73057eb802e14743fbb297c60d5\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fuseai.com#website\",\"name\":\"Fuse API\",\"url\":\"https://docs.fuseai.com\",\"publisher\":{\"@id\":\"https://docs.fuseai.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fuseai.com/api-reference/contacts/a-contacts-activity-timeline#webpage\",\"url\":\"https://docs.fuseai.com/api-reference/contacts/a-contacts-activity-timeline\",\"name\":\"A contact's activity timeline\",\"description\":\"The contact's activity timeline as the app's activity drawer shows it, newest first: campaign emails sent and replies received, LinkedIn invitations and messages, dialer calls with their transcript, recording, disposition and the notes the rep saved, activity logged by a connected CRM, and campaign steps still scheduled to go out (scheduledAt set, sentAt null). Every entry carries the same keys whatever the channel, so channel tells you which of them are filled: email rows carry subject, body, from and to; LinkedIn rows carry the message text in body and the profile in linkedinUrl; call rows carry phoneNumber, direction, callTranscript, callRecordingUrl, callDisposition, and the call notes — not a message — in body. Page with limit (1-100, default 100) and cursor: copy nextCursor from the previous page and stop when it is null. limit bounds the page of history; the first page can carry a few entries on top of it (campaign steps still scheduled, and LinkedIn activity, neither of which pages on its own), so read activities.length rather than assuming limit. Free to call. Errors: - 404 CONTACT_NOT_FOUND — No contact with that id exists. - 422 VALIDATION_FAILED — The path, query or body failed validation; param names the offending field and message says why. - 429 RATE_LIMITED — More than 120 requests per minute or 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares; retry after Retry-After. - 500 UNEXPECTED_ERROR — The timeline could not be assembled; quote request_id to support. Requires one of the following token scopes: contacts.\",\"dateModified\":\"2026-10-29T16:59:47.879Z\",\"isPartOf\":{\"@id\":\"https://docs.fuseai.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fuseai.com/api-reference/contacts/a-contacts-activity-timeline#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fuseai.com/api-reference/contacts/a-contacts-activity-timeline#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Contacts\",\"item\":\"https://docs.fuseai.com/api-reference/contacts/resolve-the-callers-contact-by-linkedin-url\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A contact's activity timeline\",\"item\":\"https://docs.fuseai.com/api-reference/contacts/a-contacts-activity-timeline\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.fuseai.com/api-reference/contacts/a-contacts-activity-timeline#apireference\",\"headline\":\"A contact's activity timeline\",\"name\":\"A contact's activity timeline\",\"description\":\"The contact's activity timeline as the app's activity drawer shows it, newest first: campaign emails sent and replies received, LinkedIn invitations and messages, dialer calls with their transcript, recording, disposition and the notes the rep saved, activity logged by a connected CRM, and campaign steps still scheduled to go out (scheduledAt set, sentAt null). Every entry carries the same keys whatever the channel, so channel tells you which of them are filled: email rows carry subject, body, from and to; LinkedIn rows carry the message text in body and the profile in linkedinUrl; call rows carry phoneNumber, direction, callTranscript, callRecordingUrl, callDisposition, and the call notes — not a message — in body. Page with limit (1-100, default 100) and cursor: copy nextCursor from the previous page and stop when it is null. limit bounds the page of history; the first page can carry a few entries on top of it (campaign steps still scheduled, and LinkedIn activity, neither of which pages on its own), so read activities.length rather than assuming limit. Free to call. Errors: - 404 CONTACT_NOT_FOUND — No contact with that id exists. - 422 VALIDATION_FAILED — The path, query or body failed validation; param names the offending field and message says why. - 429 RATE_LIMITED — More than 120 requests per minute or 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares; retry after Retry-After. - 500 UNEXPECTED_ERROR — The timeline could not be assembled; quote request_id to support. Requires one of the following token scopes: contacts.\",\"url\":\"https://docs.fuseai.com/api-reference/contacts/a-contacts-activity-timeline\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fuseai.com/api-reference/contacts/a-contacts-activity-timeline#webpage\"},\"dateModified\":\"2026-10-29T16:59:47.879Z\",\"publisher\":{\"@id\":\"https://docs.fuseai.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fuseai.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Fuse API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Fuse API","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API Reference","groups":[{"group":"Lists","pages":[{"title":"List the token owner's prospect lists","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists","href":"/api-reference/lists/list-the-token-owners-prospect-lists"},{"title":"Create a prospect list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists","href":"/api-reference/lists/create-a-prospect-list"},{"title":"Get one list's metadata","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}","href":"/api-reference/lists/get-one-lists-metadata"},{"title":"Delete a list","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/lists/{listId}","href":"/api-reference/lists/delete-a-list"},{"title":"Rename a list or move it between folders","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/lists/{listId}","href":"/api-reference/lists/rename-a-list-or-move-it-between-folders"},{"title":"Copy rows from one list into another","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/save-to-list","href":"/api-reference/lists/copy-rows-from-one-list-into-another"},{"title":"Build a company list from a contact list's companies","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/derive-company-list","href":"/api-reference/lists/build-a-company-list-from-a-contact-lists-companies"},{"title":"Distinct values a company list carries for a field","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/filter-values","href":"/api-reference/lists/distinct-values-a-company-list-carries-for-a-field"},{"title":"List a list's contacts (with ids and column values)","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/rows","href":"/api-reference/lists/list-a-lists-contacts-with-ids-and-column-values"},{"title":"Add existing contacts to a list (by id)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/members","href":"/api-reference/lists/add-existing-contacts-to-a-list-by-id"},{"title":"Remove contacts from a list","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/lists/{listId}/members","href":"/api-reference/lists/remove-contacts-from-a-list"},{"title":"Upload new contact data into a list (RAW upload)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/contacts","href":"/api-reference/lists/upload-new-contact-data-into-a-list-raw-upload"},{"title":"Enrich a list's contacts in place","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/enrich","href":"/api-reference/lists/enrich-a-lists-contacts-in-place"},{"title":"Push a list's contacts into a connected CRM","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/crm-push","href":"/api-reference/lists/push-a-lists-contacts-into-a-connected-crm"},{"title":"Presigned upload for a large import file","deprecated":null,"version":null,"openapi":"/openapi.json post /business/imports/presign","href":"/api-reference/lists/presigned-upload-for-a-large-import-file"},{"title":"Start an import (parse + suggested mapping)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/imports","href":"/api-reference/lists/start-an-import-parse-+-suggested-mapping"},{"title":"Commit an import into a list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/imports/{importId}/commit","href":"/api-reference/lists/commit-an-import-into-a-list"}]},{"group":"Custom columns","pages":[{"title":"List a list's custom column definitions","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/columns","href":"/api-reference/custom-columns/list-a-lists-custom-column-definitions"},{"title":"Create a custom column on a list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/columns","href":"/api-reference/custom-columns/create-a-custom-column-on-a-list"},{"title":"Delete a custom column (its values go with it)","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/lists/{listId}/columns/{columnId}","href":"/api-reference/custom-columns/delete-a-custom-column-its-values-go-with-it"},{"title":"Write custom column values (keyed by contact id)","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/lists/{listId}/columns/{columnId}/values","href":"/api-reference/custom-columns/write-custom-column-values-keyed-by-contact-id"}]},{"group":"Smart columns","pages":[{"title":"Add an AI column that researches every row","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/smart-columns","href":"/api-reference/smart-columns/add-an-ai-column-that-researches-every-row"},{"title":"Poll a smart-column run","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/smart-columns/{jobId}/status","href":"/api-reference/smart-columns/poll-a-smart-column-run"},{"title":"A smart column's definition and run state","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/smart-columns/{columnId}","href":"/api-reference/smart-columns/a-smart-columns-definition-and-run-state"},{"title":"Rename a smart column, change its prompt or providers","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/lists/{listId}/smart-columns/{columnId}","href":"/api-reference/smart-columns/rename-a-smart-column-change-its-prompt-or-providers"},{"title":"Run a smart column again","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/smart-columns/{columnId}/rerun","href":"/api-reference/smart-columns/run-a-smart-column-again"},{"title":"Where a smart-column cell's value came from","deprecated":null,"version":null,"openapi":"/openapi.json get /business/lists/{listId}/rows/{contactId}/columns/{columnId}/provenance","href":"/api-reference/smart-columns/where-a-smart-column-cells-value-came-from"}]},{"group":"Exports","pages":[{"title":"Start an async CSV export of a list (returns a jobId)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/lists/{listId}/export","href":"/api-reference/exports/start-an-async-csv-export-of-a-list-returns-a-jobid"},{"title":"Poll an export job (presigned download URL when completed)","deprecated":null,"version":null,"openapi":"/openapi.json get /business/exports/{jobId}","href":"/api-reference/exports/poll-an-export-job-presigned-download-url-when-completed"}]},{"group":"Campaigns","pages":[{"title":"List the token owner's campaigns with headline analytics","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns","href":"/api-reference/campaigns/list-the-token-owners-campaigns-with-headline-analytics"},{"title":"Create a draft campaign","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns","href":"/api-reference/campaigns/create-a-draft-campaign"},{"title":"Get a campaign's status","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}","href":"/api-reference/campaigns/get-a-campaigns-status"},{"title":"Stop and delete a campaign","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/campaigns/{campaignId}","href":"/api-reference/campaigns/stop-and-delete-a-campaign"},{"title":"Update a campaign's settings","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/campaigns/{campaignId}","href":"/api-reference/campaigns/update-a-campaigns-settings"},{"title":"List a campaign's sequence steps","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/steps","href":"/api-reference/campaigns/list-a-campaigns-sequence-steps"},{"title":"Edit a sequence step","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/campaigns/{campaignId}/steps/{stepId}","href":"/api-reference/campaigns/edit-a-sequence-step"},{"title":"Approve (activate) a draft campaign","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/approve","href":"/api-reference/campaigns/approve-activate-a-draft-campaign"},{"title":"Stop an active campaign (approve re-activates it)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/stop","href":"/api-reference/campaigns/stop-an-active-campaign-approve-re-activates-it"},{"title":"Copy a campaign as a fresh draft","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/duplicate","href":"/api-reference/campaigns/copy-a-campaign-as-a-fresh-draft"},{"title":"The personalization variables this campaign's steps can use","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/variables","href":"/api-reference/campaigns/the-personalization-variables-this-campaigns-steps-can-use"},{"title":"A campaign's headline metrics since `since`","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/stats","href":"/api-reference/campaigns/a-campaigns-headline-metrics-since-`since`"},{"title":"The campaign's leads with their per-step state","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/leads","href":"/api-reference/campaigns/the-campaigns-leads-with-their-per-step-state"},{"title":"Export the campaign's leads to CSV","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/leads/export","href":"/api-reference/campaigns/export-the-campaigns-leads-to-csv"},{"title":"Per-arm results of a campaign's A/B splits","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/split-results","href":"/api-reference/campaigns/per-arm-results-of-a-campaigns-ab-splits"}]},{"group":"Campaign steps","pages":[{"title":"Add a sequence step","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/steps","href":"/api-reference/campaign-steps/add-a-sequence-step"},{"title":"Remove a sequence step","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/campaigns/{campaignId}/steps/{stepId}","href":"/api-reference/campaign-steps/remove-a-sequence-step"},{"title":"Copy one arm of an A/B split into the other","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/steps/{stepId}/copy-arm","href":"/api-reference/campaign-steps/copy-one-arm-of-an-ab-split-into-the-other"},{"title":"Render the step for a sample lead without saving or sending","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/steps/{stepId}/generate","href":"/api-reference/campaign-steps/render-the-step-for-a-sample-lead-without-saving-or-sending"},{"title":"Rebuild the AI topic plan across the campaign's steps","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaigns/{campaignId}/steps/regenerate-topics","href":"/api-reference/campaign-steps/rebuild-the-ai-topic-plan-across-the-campaigns-steps"}]},{"group":"Knowledge hubs","pages":[{"title":"List the token owner's knowledge hubs","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs","href":"/api-reference/knowledge-hubs/list-the-token-owners-knowledge-hubs"},{"title":"Create a knowledge hub from websites","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs","href":"/api-reference/knowledge-hubs/create-a-knowledge-hub-from-websites"},{"title":"Make a hub the default one","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/default","href":"/api-reference/knowledge-hubs/make-a-hub-the-default-one"},{"title":"Facts learned from the team's communications","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs/learned-facts","href":"/api-reference/knowledge-hubs/facts-learned-from-the-teams-communications"},{"title":"Discard a learned fact","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/knowledge-hubs/learned-facts/{factId}","href":"/api-reference/knowledge-hubs/discard-a-learned-fact"},{"title":"Correct a learned fact","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/knowledge-hubs/learned-facts/{factId}","href":"/api-reference/knowledge-hubs/correct-a-learned-fact"},{"title":"A hub's full detail","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs/{hubId}","href":"/api-reference/knowledge-hubs/a-hubs-full-detail"},{"title":"Delete a hub","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/knowledge-hubs/{hubId}","href":"/api-reference/knowledge-hubs/delete-a-hub"},{"title":"Update a hub's name, websites, or notes","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/knowledge-hubs/{hubId}","href":"/api-reference/knowledge-hubs/update-a-hubs-name-websites-or-notes"},{"title":"Re-crawl one of the hub's websites","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/{hubId}/refresh","href":"/api-reference/knowledge-hubs/re-crawl-one-of-the-hubs-websites"},{"title":"The hub's knowledge pages","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs/{hubId}/pages","href":"/api-reference/knowledge-hubs/the-hubs-knowledge-pages"},{"title":"Add a custom knowledge page","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/{hubId}/pages","href":"/api-reference/knowledge-hubs/add-a-custom-knowledge-page"},{"title":"Remove a knowledge page","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/knowledge-hubs/{hubId}/pages/{pageId}","href":"/api-reference/knowledge-hubs/remove-a-knowledge-page"},{"title":"Edit a page's title or content","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/knowledge-hubs/{hubId}/pages/{pageId}","href":"/api-reference/knowledge-hubs/edit-a-pages-title-or-content"},{"title":"Rebuild a page from the hub's sources","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/{hubId}/pages/{pageId}/regenerate","href":"/api-reference/knowledge-hubs/rebuild-a-page-from-the-hubs-sources"},{"title":"Attach a document to one of the hub's notes","deprecated":null,"version":null,"openapi":"/openapi.json post /business/knowledge-hubs/{hubId}/attachments","href":"/api-reference/knowledge-hubs/attach-a-document-to-one-of-the-hubs-notes"},{"title":"A download URL for a note's attachment","deprecated":null,"version":null,"openapi":"/openapi.json get /business/knowledge-hubs/{hubId}/attachments/{noteId}","href":"/api-reference/knowledge-hubs/a-download-url-for-a-notes-attachment"},{"title":"Remove a note's attachment","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/knowledge-hubs/{hubId}/attachments/{noteId}","href":"/api-reference/knowledge-hubs/remove-a-notes-attachment"}]},{"group":"Analytics","pages":[{"title":"Campaigns analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/campaigns","href":"/api-reference/analytics/campaigns-analytics-roll-up"},{"title":"Dialer analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/dialer","href":"/api-reference/analytics/dialer-analytics-roll-up"},{"title":"Enrichment analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/enrichment","href":"/api-reference/analytics/enrichment-analytics-roll-up"},{"title":"Website intent analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/website-intent","href":"/api-reference/analytics/website-intent-analytics-roll-up"},{"title":"Agents analytics roll-up","deprecated":null,"version":null,"openapi":"/openapi.json get /business/analytics/agents","href":"/api-reference/analytics/agents-analytics-roll-up"}]},{"group":"Website intent","pages":[{"title":"The deanonymized visitor feed","deprecated":null,"version":null,"openapi":"/openapi.json get /business/website-visitors","href":"/api-reference/website-intent/the-deanonymized-visitor-feed"},{"title":"Tracking config: domains, pages, script, credit limit","deprecated":null,"version":null,"openapi":"/openapi.json get /business/website-tracking","href":"/api-reference/website-intent/tracking-config:-domains-pages-script-credit-limit"},{"title":"Update tracked domains/pages or the monthly credit limit","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/website-tracking","href":"/api-reference/website-intent/update-tracked-domainspages-or-the-monthly-credit-limit"}]},{"group":"Account","pages":[{"title":"Connected sending accounts by channel","deprecated":null,"version":null,"openapi":"/openapi.json get /business/accounts","href":"/api-reference/account/connected-sending-accounts-by-channel"},{"title":"Teammates (id, name, email)","deprecated":null,"version":null,"openapi":"/openapi.json get /business/team/members","href":"/api-reference/account/teammates-id-name-email"},{"title":"The writing styles AI campaigns accept","deprecated":null,"version":null,"openapi":"/openapi.json get /business/writing-styles","href":"/api-reference/account/the-writing-styles-ai-campaigns-accept"},{"title":"Which CRMs the team has connected","deprecated":null,"version":null,"openapi":"/openapi.json get /business/integrations","href":"/api-reference/account/which-crms-the-team-has-connected"},{"title":"Poll any async job","deprecated":null,"version":null,"openapi":"/openapi.json get /business/jobs/{jobId}","href":"/api-reference/account/poll-any-async-job"},{"title":"The credit spend ledger","deprecated":null,"version":null,"openapi":"/openapi.json post /business/credits/usage","href":"/api-reference/account/the-credit-spend-ledger"},{"title":"Get the token owner's identity","deprecated":null,"version":null,"openapi":"/openapi.json get /business/me","href":"/api-reference/account/get-the-token-owners-identity"},{"title":"Get the token owner's credit balance","deprecated":null,"version":null,"openapi":"/openapi.json get /business/credits","href":"/api-reference/account/get-the-token-owners-credit-balance"}]},{"group":"Data","pages":[{"title":"Get your key's usage plan","deprecated":null,"version":null,"openapi":"/openapi.json get /business/data/pricing","href":"/api-reference/data/get-your-keys-usage-plan"},{"title":"Count people matching a search (free)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/people/count","href":"/api-reference/data/count-people-matching-a-search-free"},{"title":"Count companies matching a search (free)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/companies/count","href":"/api-reference/data/count-companies-matching-a-search-free"},{"title":"Find a company's domain, LinkedIn page and logo (free)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/companies/resolve","href":"/api-reference/data/find-a-companys-domain-linkedin-page-and-logo-free"},{"title":"Find a person's email","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/people/email","href":"/api-reference/data/find-a-persons-email"},{"title":"Find a person's phone","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/people/phone","href":"/api-reference/data/find-a-persons-phone"},{"title":"Verify an email address","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/emails/verify","href":"/api-reference/data/verify-an-email-address"},{"title":"Find emails and phones for up to 100 people","deprecated":null,"version":null,"openapi":"/openapi.json post /business/data/people/enrich-jobs","href":"/api-reference/data/find-emails-and-phones-for-up-to-100-people"},{"title":"Get a people enrichment job's progress and rows","deprecated":null,"version":null,"openapi":"/openapi.json get /business/data/people/enrich-jobs/{jobId}","href":"/api-reference/data/get-a-people-enrichment-jobs-progress-and-rows"}]},{"group":"Prospect search","pages":[{"title":"Get the accepted prospect-search filter values","deprecated":null,"version":null,"openapi":"/openapi.json get /business/prospects/filter-options","href":"/api-reference/prospect-search/get-the-accepted-prospect-search-filter-values"},{"title":"Suggest values for a free-text search field","deprecated":null,"version":null,"openapi":"/openapi.json get /business/prospects/autocomplete","href":"/api-reference/prospect-search/suggest-values-for-a-free-text-search-field"},{"title":"Run a people search","deprecated":null,"version":null,"openapi":"/openapi.json post /business/prospects/search","href":"/api-reference/prospect-search/run-a-people-search"},{"title":"Save people-search results into a list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/prospects/search/save-to-list","href":"/api-reference/prospect-search/save-people-search-results-into-a-list"}]},{"group":"Scheduled sends","pages":[{"title":"The campaign's send queue by status","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaigns/{campaignId}/scheduled-sends","href":"/api-reference/scheduled-sends/the-campaigns-send-queue-by-status"},{"title":"Edit a queued send's copy or time before it goes out","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/scheduled-sends/{sendId}","href":"/api-reference/scheduled-sends/edit-a-queued-sends-copy-or-time-before-it-goes-out"},{"title":"Skip one queued send","deprecated":null,"version":null,"openapi":"/openapi.json post /business/scheduled-sends/{sendId}/skip","href":"/api-reference/scheduled-sends/skip-one-queued-send"},{"title":"Approve queued sends awaiting review","deprecated":null,"version":null,"openapi":"/openapi.json post /business/scheduled-sends/approve","href":"/api-reference/scheduled-sends/approve-queued-sends-awaiting-review"},{"title":"Decline queued sends awaiting review","deprecated":null,"version":null,"openapi":"/openapi.json post /business/scheduled-sends/decline","href":"/api-reference/scheduled-sends/decline-queued-sends-awaiting-review"}]},{"group":"Campaign templates","pages":[{"title":"The workspace's saved campaign templates","deprecated":null,"version":null,"openapi":"/openapi.json get /business/campaign-templates","href":"/api-reference/campaign-templates/the-workspaces-saved-campaign-templates"},{"title":"Save a campaign's sequence as a reusable template","deprecated":null,"version":null,"openapi":"/openapi.json post /business/campaign-templates","href":"/api-reference/campaign-templates/save-a-campaigns-sequence-as-a-reusable-template"},{"title":"Delete a template","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/campaign-templates/{campaignTemplateId}","href":"/api-reference/campaign-templates/delete-a-template"}]},{"group":"Agents","pages":[{"title":"The agent kinds the wizard offers","deprecated":null,"version":null,"openapi":"/openapi.json get /business/agents/signal-types","href":"/api-reference/agents/the-agent-kinds-the-wizard-offers"},{"title":"The token owner's agents across every kind","deprecated":null,"version":null,"openapi":"/openapi.json get /business/agents","href":"/api-reference/agents/the-token-owners-agents-across-every-kind"},{"title":"Create a web monitor agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/web-monitor","href":"/api-reference/agents/create-a-web-monitor-agent"},{"title":"Create a person starting new job agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/person-starting-new-job","href":"/api-reference/agents/create-a-person-starting-new-job-agent"},{"title":"Create a linkedin posts agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/linkedin-posts","href":"/api-reference/agents/create-a-linkedin-posts-agent"},{"title":"Create a person discovery via filters agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/person-discovery-via-filters","href":"/api-reference/agents/create-a-person-discovery-via-filters-agent"},{"title":"Create a job postings agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/job-postings","href":"/api-reference/agents/create-a-job-postings-agent"},{"title":"Create a job posting in location agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/job-posting-in-location","href":"/api-reference/agents/create-a-job-posting-in-location-agent"},{"title":"Create a first person hired in company department agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/first-person-hired-in-company-department","href":"/api-reference/agents/create-a-first-person-hired-in-company-department-agent"},{"title":"Create a first person hired internationally agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/first-person-hired-internationally","href":"/api-reference/agents/create-a-first-person-hired-internationally-agent"},{"title":"Create a company headcount growth agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/company-headcount-growth","href":"/api-reference/agents/create-a-company-headcount-growth-agent"},{"title":"Create a company headcount growth over baseline agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/company-headcount-growth-over-baseline","href":"/api-reference/agents/create-a-company-headcount-growth-over-baseline-agent"},{"title":"Create a company department headcount agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/company-department-headcount","href":"/api-reference/agents/create-a-company-department-headcount-agent"},{"title":"Create a company employee job location in two countries agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/company-employee-job-location-in-two-countries","href":"/api-reference/agents/create-a-company-employee-job-location-in-two-countries-agent"},{"title":"Create a funding announcements agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/funding-announcements","href":"/api-reference/agents/create-a-funding-announcements-agent"},{"title":"Create a people watcher agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/people-watcher","href":"/api-reference/agents/create-a-people-watcher-agent"},{"title":"Create a companies watcher agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/companies-watcher","href":"/api-reference/agents/create-a-companies-watcher-agent"},{"title":"Create a job changes watcher agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/job-changes-watcher","href":"/api-reference/agents/create-a-job-changes-watcher-agent"},{"title":"Create a linkedin profile agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/linkedin-profile","href":"/api-reference/agents/create-a-linkedin-profile-agent"},{"title":"Create a linkedin post agent","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/linkedin-post","href":"/api-reference/agents/create-a-linkedin-post-agent"},{"title":"Canonical values for agent config filters","deprecated":null,"version":null,"openapi":"/openapi.json get /business/agents/autocomplete","href":"/api-reference/agents/canonical-values-for-agent-config-filters"},{"title":"An agent's config as the drawer shows it","deprecated":null,"version":null,"openapi":"/openapi.json get /business/agents/{agentId}","href":"/api-reference/agents/an-agents-config-as-the-drawer-shows-it"},{"title":"Delete an agent (409 while a run is processing)","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/agents/{agentId}","href":"/api-reference/agents/delete-an-agent-409-while-a-run-is-processing"},{"title":"Update a draft agent's config (partial)","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/agents/{agentId}","href":"/api-reference/agents/update-a-draft-agents-config-partial"},{"title":"Start a draft agent (spends credits)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/{agentId}/activate","href":"/api-reference/agents/start-a-draft-agent-spends-credits"},{"title":"Pause an agent (one-way, there is no resume)","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/{agentId}/stop","href":"/api-reference/agents/pause-an-agent-one-way-there-is-no-resume"},{"title":"Copy an agent as a fresh draft","deprecated":null,"version":null,"openapi":"/openapi.json post /business/agents/{agentId}/duplicate","href":"/api-reference/agents/copy-an-agent-as-a-fresh-draft"}]},{"group":"Research","pages":[{"title":"The research providers a run can use","deprecated":null,"version":null,"openapi":"/openapi.json get /business/research/providers","href":"/api-reference/research/the-research-providers-a-run-can-use"},{"title":"Research runs currently in flight","deprecated":null,"version":null,"openapi":"/openapi.json get /business/research/runs","href":"/api-reference/research/research-runs-currently-in-flight"},{"title":"Start a Deep Research run","deprecated":null,"version":null,"openapi":"/openapi.json post /business/research/runs","href":"/api-reference/research/start-a-deep-research-run"},{"title":"A research run's state, report, and result list","deprecated":null,"version":null,"openapi":"/openapi.json get /business/research/runs/{runId}","href":"/api-reference/research/a-research-runs-state-report-and-result-list"},{"title":"A research run's progress events","deprecated":null,"version":null,"openapi":"/openapi.json get /business/research/runs/{runId}/events","href":"/api-reference/research/a-research-runs-progress-events"},{"title":"Cancel an in-flight research run","deprecated":null,"version":null,"openapi":"/openapi.json post /business/research/runs/{runId}/cancel","href":"/api-reference/research/cancel-an-in-flight-research-run"}]},{"group":"Company search","pages":[{"title":"Get the accepted company-search filter values","deprecated":null,"version":null,"openapi":"/openapi.json get /business/companies/filter-options","href":"/api-reference/company-search/get-the-accepted-company-search-filter-values"},{"title":"Suggest values for company and location filters","deprecated":null,"version":null,"openapi":"/openapi.json get /business/companies/autocomplete","href":"/api-reference/company-search/suggest-values-for-company-and-location-filters"},{"title":"Run a company search","deprecated":null,"version":null,"openapi":"/openapi.json post /business/companies/search","href":"/api-reference/company-search/run-a-company-search"},{"title":"Save company-search results into a list","deprecated":null,"version":null,"openapi":"/openapi.json post /business/companies/search/save-to-list","href":"/api-reference/company-search/save-company-search-results-into-a-list"}]},{"group":"Saved searches","pages":[{"title":"List the token owner's saved searches","deprecated":null,"version":null,"openapi":"/openapi.json get /business/saved-searches","href":"/api-reference/saved-searches/list-the-token-owners-saved-searches"},{"title":"Create a saved search","deprecated":null,"version":null,"openapi":"/openapi.json post /business/saved-searches","href":"/api-reference/saved-searches/create-a-saved-search"},{"title":"Get one saved search","deprecated":null,"version":null,"openapi":"/openapi.json get /business/saved-searches/{savedSearchId}","href":"/api-reference/saved-searches/get-one-saved-search"},{"title":"Delete a saved search","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/saved-searches/{savedSearchId}","href":"/api-reference/saved-searches/delete-a-saved-search"},{"title":"Rename a saved search or replace its filters","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/saved-searches/{savedSearchId}","href":"/api-reference/saved-searches/rename-a-saved-search-or-replace-its-filters"},{"title":"Replay a saved search","deprecated":null,"version":null,"openapi":"/openapi.json post /business/saved-searches/{savedSearchId}/run","href":"/api-reference/saved-searches/replay-a-saved-search"}]},{"group":"Folders","pages":[{"title":"List the token owner's list folders of one kind","deprecated":null,"version":null,"openapi":"/openapi.json get /business/folders","href":"/api-reference/folders/list-the-token-owners-list-folders-of-one-kind"},{"title":"Create a list folder","deprecated":null,"version":null,"openapi":"/openapi.json post /business/folders","href":"/api-reference/folders/create-a-list-folder"},{"title":"Delete a folder (its lists move to the root)","deprecated":null,"version":null,"openapi":"/openapi.json delete /business/folders/{folderId}","href":"/api-reference/folders/delete-a-folder-its-lists-move-to-the-root"},{"title":"Rename a folder","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/folders/{folderId}","href":"/api-reference/folders/rename-a-folder"}]},{"group":"Contacts","pages":[{"title":"Resolve the caller's contact by LinkedIn URL","deprecated":null,"version":null,"openapi":"/openapi.json post /business/contacts/resolve","href":"/api-reference/contacts/resolve-the-callers-contact-by-linkedin-url"},{"title":"Set a contact's primary email and/or phone","description":"Sets which of the contact's known emails and phone numbers are its primary ones. Primaries are chosen by value: `primaryEmail` must be one of the addresses already on the contact and `primaryPhone` one of its phone numbers, written exactly as they appear on the list row (`emails[].email`, `phones[].phoneNumber`); a value the contact does not carry is rejected with 422 PRIMARY_VALUE_NOT_ON_CONTACT and nothing is changed. The call promotes an existing value and never adds a new one — enrich the contact to add addresses or numbers. Send either field or both; the response reports both primaries as they now stand. Free to call.\n\nErrors:\n- `404` `CONTACT_NOT_FOUND` — No contact with that id exists.\n- `422` `PRIMARY_VALUE_NOT_ON_CONTACT` — The value is not one the contact already carries; `param` names which of primaryEmail / primaryPhone was rejected and nothing was changed.\n- `422` `VALIDATION_FAILED` — The body failed validation, including a body with neither primaryEmail nor primaryPhone.\n- `429` `RATE_LIMITED` — More than 120 requests per minute or 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares; retry after Retry-After.\n- `500` `UNEXPECTED_ERROR` — The request could not be completed; quote request_id to support.\n\nRequires one of the following token scopes: contacts.","deprecated":null,"version":null,"openapi":"/openapi.json patch /business/contacts/{contactId}","href":"/api-reference/contacts/set-a-contacts-primary-email-andor-phone"},{"title":"A contact's activity timeline","deprecated":null,"version":null,"openapi":"/openapi.json get /business/contacts/{contactId}/activities","href":"/api-reference/contacts/a-contacts-activity-timeline"},{"title":"Start an async duplicate-contact scan (returns a jobId)","description":"Starts an async scan of the workspace's saved contacts (the whole team's pool, Fuse and custom) for duplicates: contacts that match EXACTLY on every field in `matchFields`. The selection must carry at least one unique identifier (`linkedinUrl`, `email`, `phone`) or at least 3 profile fields (`fullName`, `jobTitle`, `industry`, `location`, `companyName`, `companyDomain`) — anything weaker would group unrelated people and is rejected. Async: 202 returns a `jobId`; poll `GET /business/contacts/dedupe-jobs/{jobId}` until `status` is `completed`, then read `scanResult.groups`. Each group carries a `mergePreview` (what the surviving contact will look like) so the result can be reviewed before anything is merged; scanning changes nothing and spends no credits. The result stores at most 200 groups (`truncated` is true when more were found — merge and scan again), and a group larger than 50 contacts is skipped as a too-weak selection (`skippedOversizedGroups` counts them). Rate limit: 120 requests per minute, 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares.\n\nErrors:\n- `422` `VALIDATION_FAILED` — matchFields is missing, carries an unknown field, or fails the selection-strength rule.\n- `429` `RATE_LIMITED` — More than 120 requests per minute or 10,000 per day on the contacts bucket, which every /business/contacts endpoint shares; retry after Retry-After.\n- `500` `UNEXPECTED_ERROR` — The request could not be completed; quote request_id to support.\n\nRequires one of the following token scopes: contacts.","deprecated":null,"version":null,"openapi":"/openapi.json post /business/contacts/dedupe-scan","href":"/api-reference/contacts/start-an-async-duplicate-contact-scan-returns-a-jobid"},{"title":"Merge the duplicate groups a completed scan found","deprecated":null,"version":null,"openapi":"/openapi.json post /business/contacts/dedupe-merge","href":"/api-reference/contacts/merge-the-duplicate-groups-a-completed-scan-found"},{"title":"Poll a dedupe scan or merge job (groups / totals when completed)","deprecated":null,"version":null,"openapi":"/openapi.json get /business/contacts/dedupe-jobs/{jobId}","href":"/api-reference/contacts/poll-a-dedupe-scan-or-merge-job-groups-totals-when-completed"}]}]}]},"basePath":"","title":"A contact's activity timeline - Fuse API","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}