# Fuse API - [Introduction](https://docs.fuseai.com/index.md): Programmatic access to Fuse: prospect and company search, lists and imports, enrichment, smart columns, campaigns, signal agents, deep research, knowledge hubs, and analytics. - [Quickstart](https://docs.fuseai.com/quickstart.md): From API key to a populated, exported prospect list in five minutes. - [Authentication](https://docs.fuseai.com/authentication.md): Create an API key and authenticate every request with HTTP Basic auth. - [Errors](https://docs.fuseai.com/concepts/errors.md): The single error envelope, how to handle failures, and the complete code catalogue. - [Rate limits](https://docs.fuseai.com/concepts/rate-limits.md): How request quotas work, how to read the rate limit headers, and how to back off when you hit a 429 - [Pagination](https://docs.fuseai.com/concepts/pagination.md): How the Business API pages large collections: page numbers for stored data, scroll tokens for search. - [Finding accepted values](https://docs.fuseai.com/concepts/field-values.md): How to tell which values a filter or config field takes, and what happens when you send one it does not - [Long-running work](https://docs.fuseai.com/concepts/long-running-work.md): What a 202 means here, and which handle to poll for each kind of background job - [Credits & billing](https://docs.fuseai.com/concepts/credits.md): What debits credits, what never does, and how to avoid paying for the same search twice. - [Scopes](https://docs.fuseai.com/concepts/scopes.md): Limit what an API key can do by scoping it to specific API surfaces - [Build a list from search](https://docs.fuseai.com/guides/build-a-list-from-search.md): Turn a prospect search into a saved, enriched list: check filter values, preview cheaply, save once, and poll until the rows land. - [Upload your own contacts](https://docs.fuseai.com/guides/upload-your-contacts.md): Bring contacts from your CRM into a Fuse list, and manage list membership by id. - [Working with lists](https://docs.fuseai.com/guides/working-with-lists.md): Enrich, copy, derive, organise and push a list once it exists - [Custom columns](https://docs.fuseai.com/guides/custom-columns.md): Attach your own typed data — scores, owners, links, flags — to the contacts in a list - [Smart columns](https://docs.fuseai.com/guides/smart-columns.md): Ask a question about every row in a list and let Fuse research the answer - [Export a list](https://docs.fuseai.com/guides/export-a-list.md): Download a list as a CSV with an async export job: start it, poll it, fetch the file - [Campaigns](https://docs.fuseai.com/guides/campaigns.md): Create a campaign from a list, review and edit its sequence steps, and approve it to start sending. - [Review what a campaign will send](https://docs.fuseai.com/guides/approve-scheduled-sends.md): Read the queue, edit a message before it goes out, and approve or decline what is waiting on you - [Knowledge hubs](https://docs.fuseai.com/guides/knowledge-hubs.md): Ground AI campaign generation in your company's own content. - [Create an agent](https://docs.fuseai.com/guides/create-an-agent.md): Build a signal monitoring agent over the API — pick a kind, fill in its config, review it as a draft, then start it - [Analytics](https://docs.fuseai.com/guides/analytics.md): Read the same roll-ups the Fuse dashboards show — campaigns, dialer, enrichment, website intent and agents - [Connect a mailbox](https://docs.fuseai.com/guides/connect-a-mailbox.md): Connect Google, Outlook, or any SMTP/IMAP mailbox to Fuse, with server settings and app-password steps for the common providers. - [What syncs where](https://docs.fuseai.com/crm/overview.md): How Fuse writes contacts, companies, activity and engagement into Attio, HubSpot, Salesforce, Zoho and Pipedrive, and why each one looks different. - [Contacts and companies](https://docs.fuseai.com/crm/contacts-and-companies.md): Which people Fuse pushes to your CRM, what they become in each one, and how existing records are updated without overwriting your data. - [Emails, calls and LinkedIn](https://docs.fuseai.com/crm/activity-sync.md): What a sent email, LinkedIn message or dialer call becomes in each CRM, and why those records are never updated afterwards. - [Engagement on contacts](https://docs.fuseai.com/crm/engagement.md): The Fuse engagement fields written onto each Attio person, covering opened, clicked, replied and bounced, so you can filter your CRM by who is actually responding. - [Troubleshooting](https://docs.fuseai.com/crm/troubleshooting.md): The CRM sync questions we get asked most, covering missing emails in Attio, contacts that never arrive and engagement fields that do not appear, and what to do about each. - [Numbers at a glance](https://docs.fuseai.com/dialer/overview.md): The two kinds of phone number you can call from in Fuse, what each one can do, and how Fuse decides which of your numbers a call goes out on. - [Your phone numbers](https://docs.fuseai.com/dialer/phone-numbers.md): Renting numbers through Fuse or adding a number your business already owns, what each option can do, and what stays with your existing phone service. - [How Fuse picks a number](https://docs.fuseai.com/dialer/number-selection.md): Contact continuity, Randomized Area Code and Closest Local Area Code, the three things that decide which of your numbers a call goes out on. - [Business registration and number health](https://docs.fuseai.com/dialer/business-registration.md): What a verified business profile does for your rented numbers, what it cannot promise, and how Fuse protects your calling reputation by retiring unhealthy numbers. - [Data providers](https://docs.fuseai.com/research/providers.md): The 39 external providers Deep Research can pull people, companies, contact data, buying signals and web data from, and how to connect your own key to them. - [Agents](https://docs.fuseai.com/signals/agents.md): Every signal monitoring agent Fuse offers, covering job changes, hiring, funding, headcount and social activity, for people you already track and for finding new ones. - [Connect](https://docs.fuseai.com/mcp/connect.md): Connect Claude, Cursor, or any MCP client to Fuse and drive your account through natural language. - [Tools & limits](https://docs.fuseai.com/mcp/tools.md): What each Fuse MCP tool does, how to phrase requests, and the rate limits that apply. - [List the token owner's prospect lists](https://docs.fuseai.com/api-reference/lists/list-the-token-owners-prospect-lists.md): Pages through the workspace's prospect lists, newest-created first; system-generated lists (All Enriched Contacts and the like) are never included. `entityType` restricts to contact or company lists, `folderId` to one folder, and `search` matches list names case-insensitively. Each row carries its k… - [Create a prospect list](https://docs.fuseai.com/api-reference/lists/create-a-prospect-list.md): Creates an empty list owned by the token holder. `name` must be unique in the workspace (409 LIST_NAME_TAKEN otherwise); `entityType` picks a contact list (default) or a company list. The new list starts at the folder root — move it with `PATCH /business/lists/{listId}`. Fill it with `POST .../membe… - [Get one list's metadata](https://docs.fuseai.com/api-reference/lists/get-one-lists-metadata.md): One list's metadata: name, kind (`entityType`), `completionStatus` (`processing` while an import, copy, save-to-list or enrichment is still populating it, `complete` otherwise — poll this after any 202 that targets the list), the row count, and the enrichment `metrics` (rows enriched and rows carryi… - [Delete a list](https://docs.fuseai.com/api-reference/lists/delete-a-list.md): Deletes the list. The contacts themselves stay in the workspace and in every other list they belong to; custom columns and their cell values go with the list. A second delete of the same id answers 404 LIST_NOT_FOUND. - [Rename a list or move it between folders](https://docs.fuseai.com/api-reference/lists/rename-a-list-or-move-it-between-folders.md): Renames the list and/or moves it between folders. `name` must stay unique in the workspace (409 LIST_NAME_TAKEN). `folderId` moves the list into an existing folder of its own kind — an unknown id, a folder of another workspace, or one holding the other kind of list all answer 404 FOLDER_NOT_FOUND; `… - [Copy rows from one list into another](https://docs.fuseai.com/api-reference/lists/copy-rows-from-one-list-into-another.md): Copies up to `limit` rows from `sourceListId` (a contact list) into a contact list named by `listId` or `listName` (create-or-reuse by exact, case-insensitive name; a name shared by two lists is 409 LIST_NAME_AMBIGUOUS, a reserved system title is 422 LIST_NAME_RESERVED). A `listId` destination that… - [Build a company list from a contact list's companies](https://docs.fuseai.com/api-reference/lists/build-a-company-list-from-a-contact-lists-companies.md): Builds a new company list from the companies the contact list's rows belong to. Async: 202 returns the created list (in `processing` state) and `sourceContacts`, the number of contacts examined; poll `GET /business/lists/{listId}` on the new id until `completionStatus` is `complete`. A source list s… - [Distinct values a company list carries for a field](https://docs.fuseai.com/api-reference/lists/distinct-values-a-company-list-carries-for-a-field.md): The distinct values a company list carries for one company field — `name` (company names) or `domain` (web domains) — for building row filters or exclusion sets. Values are returned as a flat, de-duplicated array; a contact list answers an empty array. - [List a list's contacts (with ids and column values)](https://docs.fuseai.com/api-reference/lists/list-a-lists-contacts-with-ids-and-column-values.md): Pages through a list's rows. `entityType` says which shape `data` holds: a contact list's rows carry the contact id (the id `members`, `columns/{columnId}/values`, `enrich` and `crm-push` accept), the discovered emails and phones with their validation status, the primaries, ICP match, campaign engag… - [Add existing contacts to a list (by id)](https://docs.fuseai.com/api-reference/lists/add-existing-contacts-to-a-list-by-id.md): Adds existing contacts to the list by id (row ids from `GET /business/lists/{listId}/rows` on another list, or `POST /business/contacts/resolve`). Idempotent: contacts already in the list are skipped, so `addedCount` (net new members) can be lower than `submittedCount`. Up to 5,000 ids per call; no… - [Remove contacts from a list](https://docs.fuseai.com/api-reference/lists/remove-contacts-from-a-list.md): Removes contacts from the list by id. The contacts themselves stay in the workspace and in every other list. Idempotent (ids not in the list are ignored) and the response reports only how many ids were submitted, not how many memberships were removed. Up to 5,000 ids per call. - [Upload new contact data into a list (RAW upload)](https://docs.fuseai.com/api-reference/lists/upload-new-contact-data-into-a-list-raw-upload.md): Creates new contacts from the supplied data and adds them to the list, the same path a CSV upload takes (no enrichment runs and no credits are spent). Every row becomes a new contact — there is no de-duplication against contacts already in the workspace, so retrying a call duplicates rows. Emails ar… - [Enrich a list's contacts in place](https://docs.fuseai.com/api-reference/lists/enrich-a-lists-contacts-in-place.md): Runs an enrichment over the list's contacts in place. `mode` selects what runs: the waterfall modes (`email`, `phone`, `phone_and_email`) discover new values through the provider waterfall and take an optional row `filters` object or an explicit `contactIds` selection; `validate_emails` re-verifies… - [Push a list's contacts into a connected CRM](https://docs.fuseai.com/api-reference/lists/push-a-lists-contacts-into-a-connected-crm.md): Pushes the list's contacts into a connected CRM. `crm` names which one (`hubspot`, `salesforce`, `zoho`, `attio`, `pipedrive`; several can be connected at once); the connection checked is the team's designated sync user's, so an unconnected CRM answers 422 CRM_NOT_CONNECTED. An explicit `contactIds`… - [Presigned upload for a large import file](https://docs.fuseai.com/api-reference/lists/presigned-upload-for-a-large-import-file.md): Issues a presigned S3 PUT for a CSV/XLS/XLSX import file larger than the 10MB multipart line (up to 50MB). PUT the raw file bytes to `uploadUrl` with the same `Content-Type` you declared, within `expiresIn` seconds (600), then pass the returned `importId` to `POST /business/imports`. Nothing is pars… - [Start an import (parse + suggested mapping)](https://docs.fuseai.com/api-reference/lists/start-an-import-parse-+-suggested-mapping.md): Starts an import from a spreadsheet. Two intake shapes: a multipart request carrying the file (CSV/XLS/XLSX, ≤10MB — larger files go through `POST /business/imports/presign` first) or a JSON body naming a presigned upload's `importId`. Without a destination the call parses the file and answers 200 w… - [Commit an import into a list](https://docs.fuseai.com/api-reference/lists/commit-an-import-into-a-list.md): Commits a parsed import into a list: append to an existing one with `listId`, or name the destination with `listName` (an existing list with that exact, case-insensitive name is reused, otherwise it is created). `mapping` confirms the column mapping (source header -> standard field label, e.g. `{"fn… - [List a list's custom column definitions](https://docs.fuseai.com/api-reference/custom-columns/list-a-lists-custom-column-definitions.md): The list's column definitions — both plain custom columns created here and smart (AI) columns — as `{ id, name, type }`. Column ids key the `columnValues` map on `GET .../rows` and are what `PATCH .../columns/{columnId}/values` and `DELETE .../columns/{columnId}` take. - [Create a custom column on a list](https://docs.fuseai.com/api-reference/custom-columns/create-a-custom-column-on-a-list.md): Adds a plain custom column to the list. `type` fixes what cells may hold — `string` (default), `number`, `date`, `boolean`, or `url` (a `{label, value}` link). Names are unique per list, case-insensitively (409 COLUMN_NAME_TAKEN). Write cells with `PATCH .../columns/{columnId}/values`; for an AI-com… - [Delete a custom column (its values go with it)](https://docs.fuseai.com/api-reference/custom-columns/delete-a-custom-column-its-values-go-with-it.md): Removes a custom or smart column from the list together with every cell value it held. The column must exist on that list (404 COLUMN_NOT_FOUND otherwise); the deletion cannot be undone. - [Write custom column values (keyed by contact id)](https://docs.fuseai.com/api-reference/custom-columns/write-custom-column-values-keyed-by-contact-id.md): Writes cell values into one custom column, keyed by contact (row) id — the write path for externally generated data. A cell takes a string (also accepted for `number`, `boolean` and `date` columns and parsed against the column's type), a number, a boolean, or — for a `url` column only — `{ label, va… - [Add an AI column that researches every row](https://docs.fuseai.com/api-reference/smart-columns/add-an-ai-column-that-researches-every-row.md): Adds a smart column to the list and starts its first run. Every covered row is researched from `prompt` by the chosen `engine` and billed at that engine's per-row credit rate; the run is charged up front, so the call answers 402 INSUFFICIENT_CREDITS when your balance cannot cover it and nothing is c… - [Poll a smart-column run](https://docs.fuseai.com/api-reference/smart-columns/poll-a-smart-column-run.md): Progress of one smart-column run: the `jobId` returned by create, rerun, or a prompt edit. `status` moves from `pending` to `processing` and ends as `completed`, `partially_completed` (some rows failed), `failed` or `cancelled` (superseded by a newer run or a prompt edit). `processedRows`, `successf… - [A smart column's definition and run state](https://docs.fuseai.com/api-reference/smart-columns/a-smart-columns-definition-and-run-state.md): The column's stored definition and run state: its prompt, engine and any Deep Research provider restriction (`providerIds`, null when the column may use every provider), plus what a re-run would cost — `refreshableRowCount` rows (computed cells plus cells a cancelled run left pending or running) at… - [Rename a smart column, change its prompt or providers](https://docs.fuseai.com/api-reference/smart-columns/rename-a-smart-column-change-its-prompt-or-providers.md): Renames the column, changes its prompt, or changes a Deep Research column's provider restriction (`providerIds: null` clears it). A rename or a provider change is immediate and free, and new providers apply from the next run. A prompt change is not free — any run in progress is cancelled and every r… - [Run a smart column again](https://docs.fuseai.com/api-reference/smart-columns/run-a-smart-column-again.md): Runs the column again. `mode: all` recomputes every row the column covers (its stored `filters` still apply); `mode: new_only` computes only rows that have never been computed, which is how you fill the rows the first run's `runOn` left out or rows added to the list since. Either mode cancels a run… - [Where a smart-column cell's value came from](https://docs.fuseai.com/api-reference/smart-columns/where-a-smart-column-cells-value-came-from.md): How one smart-column cell got its value: the engine's `reasoning`, the `researchSteps` it took, the `sourceUrls` it read, an `errorMessage` when the row failed, and `fetchedAt`, when the cell was last computed. Provenance is written per cell by each run, so a cell no run has computed yet answers 404… - [Start an async CSV export of a list (returns a jobId)](https://docs.fuseai.com/api-reference/exports/start-an-async-csv-export-of-a-list-returns-a-jobid.md): Starts a CSV export of the whole list. Async: 202 returns a `jobId`; poll `GET /business/exports/{jobId}` (or `GET /business/jobs/{jobId}`) until `status` is `completed`, then download the file from the short-lived presigned `downloadUrl`. For a filtered export, copy the filtered rows into a list fi… - [Poll an export job (presigned download URL when completed)](https://docs.fuseai.com/api-reference/exports/poll-an-export-job-presigned-download-url-when-completed.md): Polls an export job started by `POST /business/lists/{listId}/export`. While it runs, `rowCount` and `downloadUrl` are null. When `status` is `completed`, `downloadUrl` is a short-lived presigned URL for the CSV (poll again for a fresh link once it expires) and `rowCount` is the number of rows writt… - [List the token owner's campaigns with headline analytics](https://docs.fuseai.com/api-reference/campaigns/list-the-token-owners-campaigns-with-headline-analytics.md): Lists the campaigns you own with their headline analytics, newest first. Campaigns delegated to you, and campaigns your team's visibility settings share with you, are NOT listed: every other endpoint in this family resolves the token owner's own campaigns only, so listing them would hand back ids th… - [Create a draft campaign](https://docs.fuseai.com/api-reference/campaigns/create-a-draft-campaign.md): Creates a draft campaign in status `initializing`; nothing is sent until you call POST /business/campaigns/{campaignId}/approve. `campaignType: manual` (the default) scaffolds one empty step per entry in `channels` immediately (sequenceNumber 0, 1, 2 ...), so you can list them with GET .../steps and… - [Get a campaign's status](https://docs.fuseai.com/api-reference/campaigns/get-a-campaigns-status.md): Returns one campaign's state. This is the poll an `ai-generated` campaign needs: creation returns immediately and the topic plan is written in the background, so watch `initializationStatus` reach `completed` before authoring steps or approving; `failed` puts the reason in `initializationError`. A `… - [Stop and delete a campaign](https://docs.fuseai.com/api-reference/campaigns/stop-and-delete-a-campaign.md): Stops the campaign and deletes it. This is a soft delete: sending halts immediately, open task mirrors are cleared, and the campaign disappears from GET /business/campaigns and from GET /business/campaigns/{campaignId}. Contacts keep their per-contact state, and sends already delivered are unaffecte… - [Update a campaign's settings](https://docs.fuseai.com/api-reference/campaigns/update-a-campaigns-settings.md): Updates the campaign's shared settings block - name, start date, timezone and sending days, source and exclusion lists, enrollment exclusions, tracking, delegates and the {CTA Link} URL - and returns the campaign as stored. Every field is optional but at least one must be present. Changing `listIds`… - [List a campaign's sequence steps](https://docs.fuseai.com/api-reference/campaigns/list-a-campaigns-sequence-steps.md): Lists the campaign's sequence steps in `sequenceNumber` order (0-based). A campaign created through this API starts with one empty step per requested channel, so this is how you discover the ids to write content into with PATCH /business/campaigns/{campaignId}/steps/{stepId}. `type` tells you what t… - [Edit a sequence step](https://docs.fuseai.com/api-reference/campaigns/edit-a-sequence-step.md): Writes one sequence step's content. Send `subject` and `body` together for a manual step (the pair replaces the step's whole template), `topic` for an `ai_generated` or `ai_reply` step - setting a topic also regenerates the step's title with AI - and `daysBetween` to change the wait before the step.… - [Approve (activate) a draft campaign](https://docs.fuseai.com/api-reference/campaigns/approve-activate-a-draft-campaign.md): Approves (activates) a draft campaign so the scheduler starts sending. Validation is synchronous - the campaign must have a source list, and every step must carry the content its type needs - and activation itself then runs in the background, which is why this answers 202. Re-approving a stopped cam… - [Stop an active campaign (approve re-activates it)](https://docs.fuseai.com/api-reference/campaigns/stop-an-active-campaign-approve-re-activates-it.md): Stops the campaign: sending halts immediately and its open task mirrors are cleared, while each contact keeps its own state so POST /business/campaigns/{campaignId}/approve resumes the same campaign rather than re-initializing it. Stopping a draft is allowed and simply parks it in `stopped`. Only th… - [Copy a campaign as a fresh draft](https://docs.fuseai.com/api-reference/campaigns/copy-a-campaign-as-a-fresh-draft.md): Copies the campaign into a new draft named "Copy of ". The copy carries the same sequence steps, schedule settings and source lists, and starts in `initializing` with no enrolled contacts, no analytics and no queued sends. Nothing is sent until you approve the copy. Only the token owner's own… - [The personalization variables this campaign's steps can use](https://docs.fuseai.com/api-reference/campaigns/the-personalization-variables-this-campaigns-steps-can-use.md): Lists the custom and smart column tokens the campaign's steps can personalise with, deduplicated across the campaign's source lists (the first list that defines a column name wins, which is how values resolve at send time). Paste a `token` verbatim into a step's subject or body and it is substituted… - [A campaign's headline metrics (with deltas vs `since`)](https://docs.fuseai.com/api-reference/campaigns/a-campaigns-headline-metrics-with-deltas-vs-`since`.md): Returns the campaign's headline email metrics. The `total*` counters accumulate from `since` (default: 12 months ago). The `*DeltaOverLastMonth` values are percentage changes that ignore `since` and always compare the current UTC calendar month with the previous one, so they read 0 on a campaign you… - [The campaign's leads with their per-step state](https://docs.fuseai.com/api-reference/campaigns/the-campaigns-leads-with-their-per-step-state.md): Lists the contacts enrolled in the campaign with their progress through the sequence. `id` is the campaign-membership row and `contactId` is the underlying contact, so you can cross-reference the contacts API. `status` is the state the app shows for the lead (it reads `stopped` or `completed` once t… - [Export the campaign's leads to CSV](https://docs.fuseai.com/api-reference/campaigns/export-the-campaigns-leads-to-csv.md): Exports every lead in the campaign as a CSV document returned inline in the JSON body under `csv` (first row is the header). There are no filters - use GET /business/campaigns/{campaignId}/leads when you want a page or a search. Very large campaigns are refused with 422 EXPORT_LIMIT_EXCEEDED rather… - [Add a sequence step](https://docs.fuseai.com/api-reference/campaign-steps/add-a-sequence-step.md): Adds one sequence step. `sequenceNumber` is the step's 0-based slot - the same numbering GET /business/campaigns/{campaignId}/steps reports - and must be free (409 STEP_POSITION_TAKEN); existing steps are not shifted on insert, and only DELETE renumbers. `daysBetween` is the wait after the previous… - [Remove a sequence step](https://docs.fuseai.com/api-reference/campaign-steps/remove-a-sequence-step.md): Removes one sequence step. The remaining steps are renumbered so `sequenceNumber` stays contiguous from 0, which is the only operation that shifts existing steps. Queued sends already created for the removed step are not retro-actively deleted. Only the token owner may delete steps. Rate limit: 30 r… - [Render the step for a sample lead without saving or sending](https://docs.fuseai.com/api-reference/campaign-steps/render-the-step-for-a-sample-lead-without-saving-or-sending.md): Renders this step for one sample contact from the campaign's source lists - {Variable} tokens filled and spintax resolved - and returns the result WITHOUT saving it and without sending anything. Use it to check a manual step's copy, or to see what an AI step will write. `contact` names the lead the… - [Rebuild the AI topic plan across the campaign's steps](https://docs.fuseai.com/api-reference/campaign-steps/rebuild-the-ai-topic-plan-across-the-campaigns-steps.md): Rebuilds the AI topic plan across the campaign's `ai_generated` steps in one pass, so the sequence reads as one narrative instead of a set of independently written steps. Manual steps are left alone, which is why `regeneratedStepCount` can be smaller than `totalStepCount`. It rewrites step topics an… - [List the token owner's knowledge hubs](https://docs.fuseai.com/api-reference/knowledge-hubs/list-the-token-owners-knowledge-hubs.md): Knowledge hubs ground AI campaign generation in your company's content. Pass a hub's `id` as `knowledgeHubId` when creating an AI campaign, or mark one hub as the default. Returns every hub you own (deleted hubs excluded), default hub first and then newest first; there is no pagination. `status` is… - [Create a knowledge hub from websites](https://docs.fuseai.com/api-reference/knowledge-hubs/create-a-knowledge-hub-from-websites.md): Creates the hub immediately with `status` `processing` and enqueues the build: every website is crawled (subpages too where `includeSubPages` is true), the content is synthesized into knowledge pages, and a company name — and, when `name` was omitted, the hub name — are generated. Poll `GET /busines… - [Make a hub the default one](https://docs.fuseai.com/api-reference/knowledge-hubs/make-a-hub-the-default-one.md): Marks one of your own hubs as the default one — the hub used when a campaign is created without a `knowledgeHubId` — and clears the flag on every other hub you own. A teammate's hub is readable through `GET /business/knowledge-hubs/{hubId}` but cannot be made your default and answers 403 `KNOWLEDGE_… - [Facts learned from the team's communications](https://docs.fuseai.com/api-reference/knowledge-hubs/facts-learned-from-the-teams-communications.md): Anonymized facts the platform extracted from your team's sent emails, LinkedIn messages, calls and meeting transcripts — the same set that hubs with learning enabled fold into their pages on the daily learning run. Team-scoped (every teammate's active facts, across all hubs), sorted by category then… - [Discard a learned fact](https://docs.fuseai.com/api-reference/knowledge-hubs/discard-a-learned-fact.md): Retires a learned fact so it stops feeding the team's hubs. Any member of the owning teammate's team may retire a fact. The removal is soft (the fact is marked superseded, keeping its audit trail) and cascades out of the hubs' pages on the next daily learning run. Retiring an already retired fact an… - [Correct a learned fact](https://docs.fuseai.com/api-reference/knowledge-hubs/correct-a-learned-fact.md): Corrects a learned fact's claim text and/or category. Any member of the owning teammate's team may edit. A new claim must stay anonymized — no person or customer names, no contract-level details — or the call answers 422 `LEARNED_FACT_NOT_ANONYMIZED`. The correction reaches the hubs' pages on the ne… - [A hub's full detail](https://docs.fuseai.com/api-reference/knowledge-hubs/a-hubs-full-detail.md): The hub's full detail: its websites, its notes (with the ids the attachment endpoints address), its build status and whether it is the default hub. Readable by you and your teammates. `websites` lists the URLs you added together with the subpages the crawler discovered from them — a subpage carries… - [Delete a hub](https://docs.fuseai.com/api-reference/knowledge-hubs/delete-a-hub.md): Deletes a knowledge hub. The removal is soft: the hub stops appearing in any endpoint and stops grounding campaigns, and its knowledge store is retained. The default hub refuses deletion (409 `KNOWLEDGE_HUB_DEFAULT_UNDELETABLE`) — make another hub the default first. A hub whose first build has not p… - [Update a hub's name, websites, or notes](https://docs.fuseai.com/api-reference/knowledge-hubs/update-a-hubs-name-websites-or-notes.md): Renames the hub and/or merges websites and notes into it, then rebuilds it in the background (202). Websites merge by URL — a URL the hub already has is re-crawled, a new one is added — and notes merge by `filename`, so sending a known filename edits that note in place and keeps its attachment. Noth… - [Re-crawl one of the hub's websites](https://docs.fuseai.com/api-reference/knowledge-hubs/re-crawl-one-of-the-hubs-websites.md): Re-crawls one of the hub's websites and regenerates the knowledge pages built from it (202). Pass a URL that is already one of the hub's websites — from `websites[].url` in the hub detail; the match ignores scheme and `www.`, and a URL the hub does not have answers 404 `KNOWLEDGE_HUB_WEBSITE_NOT_FOU… - [The hub's knowledge pages](https://docs.fuseai.com/api-reference/knowledge-hubs/the-hubs-knowledge-pages.md): The curated knowledge pages the hub was synthesized into — the documents campaign generation actually reads. Every page carries its full Markdown `content`, so a large hub answers a large body; there is no pagination. Sorted by category then title. `origin` is `generated` for a page the build wrote,… - [Add a custom knowledge page](https://docs.fuseai.com/api-reference/knowledge-hubs/add-a-custom-knowledge-page.md): Adds a page you author yourself to the hub and indexes it into the hub's knowledge store before answering — no polling. The page is stored with `origin` `user`, which means the hub's rebuilds never overwrite or remove it. `category` groups the page alongside the generated ones and defaults to `custo… - [Remove a knowledge page](https://docs.fuseai.com/api-reference/knowledge-hubs/remove-a-knowledge-page.md): Removes a page from the hub and from its knowledge store immediately, so campaign generation stops using it. A generated page may reappear when the hub is next updated or refreshed if its sources still exist; a page you authored is gone for good. Only the hub's owner can delete pages. - [Edit a page's title or content](https://docs.fuseai.com/api-reference/knowledge-hubs/edit-a-pages-title-or-content.md): Edits a page's title and/or Markdown content and re-indexes it into the hub's knowledge store before answering. Editing a generated page flips its `origin` to `edited`; it keeps your text until its sources are re-crawled, at which point an update or refresh of the hub regenerates it. Pages you autho… - [Rebuild a page from the hub's sources](https://docs.fuseai.com/api-reference/knowledge-hubs/rebuild-a-page-from-the-hubs-sources.md): Rebuilds a generated page from the hub's cached sources — the crawled website text and the notes it was written from — discarding any manual edits, and re-indexes it. The work finishes before the response: the `content` you get back is already the regenerated page and its `origin` is reset to `gener… - [Attach a document to one of the hub's notes](https://docs.fuseai.com/api-reference/knowledge-hubs/attach-a-document-to-one-of-the-hubs-notes.md): Attaches a document to one of the hub's notes; note ids come from `notes[].id` in the hub detail. Send the file as padded base64 in `fileBase64`, up to 10,485,760 characters (about 7.5 MB of file data); allowed types are PDF, plain text, CSV, Word (.doc and .docx) and RTF. The file is stored for dow… - [A download URL for a note's attachment](https://docs.fuseai.com/api-reference/knowledge-hubs/a-download-url-for-a-notes-attachment.md): Returns a presigned download URL for the document attached to a note, together with the stored file name, MIME type and size. The URL is valid for one hour; request a fresh one when it expires. Readable by you and your teammates. A note that has no document answers 404 `ATTACHMENT_NOT_FOUND`, and a… - [Remove a note's attachment](https://docs.fuseai.com/api-reference/knowledge-hubs/remove-a-notes-attachment.md): Deletes the document attached to a note. Be aware that this removes the WHOLE note from the hub — the note's `text` as well as the file — so if you only meant to drop the document, re-add the note afterwards with `PATCH /business/knowledge-hubs/{hubId}` (same `filename`, same `text`). A note that ha… - [Campaigns analytics roll-up](https://docs.fuseai.com/api-reference/analytics/campaigns-analytics-roll-up.md): The campaigns insights tab in one response for the whole account (every campaign the token owner can see): email send volume split AI vs manual per bucket, LinkedIn connection metrics with month-over-month deltas, the LinkedIn time series (performanceOverTime, engagementActivity and aiVsManual share… - [Dialer analytics roll-up](https://docs.fuseai.com/api-reference/analytics/dialer-analytics-roll-up.md): The dialer insights tab in one response: campaign calls (calls placed by campaigns the token owner can see) and power-dialer calls (non-campaign calls by the owner's team), each with a summary (KPI cards and an outcome breakdown by contact) and a zero-filled call time series. Contacts are counted on… - [Enrichment analytics roll-up](https://docs.fuseai.com/api-reference/analytics/enrichment-analytics-roll-up.md): Data-enrichment insights for every user whose contacts the token owner can see: distinct contacts whose email was enriched, whose phone was enriched, that were saved, and prospects searched (derived from Prospect Search credit spend), each as a total for the window plus a zero-filled series. Buckets… - [Website intent analytics roll-up](https://docs.fuseai.com/api-reference/analytics/website-intent-analytics-roll-up.md): Website intent insights for the token owner's team over the window: headline metrics (visits, distinct companies, distinct people and the high-confidence share), the zero-filled visitors-over-time series (daily MM/DD buckets for 7d, ISO-week Wxx buckets for 30d and 90d) and the top 10 visiting compa… - [Agents analytics roll-up](https://docs.fuseai.com/api-reference/analytics/agents-analytics-roll-up.md): Signal-agent (watcher) performance for the token owner's team, proxied from the agents service: totals (agents, active agents, prospects found split into people and companies), a breakdown by agent kind and list type, a breakdown by agent status (active, paused, initializing, expired, ...) and the p… - [The deanonymized visitor feed](https://docs.fuseai.com/api-reference/website-intent/the-deanonymized-visitor-feed.md): The deanonymized visitor feed for the token owner's team (the Website Intent screen): `type=companies` returns one row per visiting company, `type=people` one row per identified person. Both feeds return the same row shape — company details, the identified person when there is one, the visit count,… - [Tracking config: domains, pages, script, credit limit](https://docs.fuseai.com/api-reference/website-intent/tracking-config:-domains-pages-script-credit-limit.md): The Settings > Website state in one response: the tracked domains and page paths, the HTML script tag to install in the site's head (null when the plan includes no website intent) and the monthly deanonymization credit budget — `credits.limit` is the monthly cap (null when uncapped) and `credits.use… - [Update tracked domains/pages or the monthly credit limit](https://docs.fuseai.com/api-reference/website-intent/update-tracked-domainspages-or-the-monthly-credit-limit.md): Update the tracked domains and page paths and/or the monthly deanonymization credit cap. Send at least one field. `domains` REPLACES the stored list (an empty array stops tracking) and `trackedPages` must be sent together with `domains`, because both ride one internal write that always sets the doma… - [Connected sending accounts by channel](https://docs.fuseai.com/api-reference/account/connected-sending-accounts-by-channel.md): The connected sending accounts for one channel. `channel=email` lists the mailboxes the token owner owns or has shared with them: `id` is the email address (use it as a campaign sender), `provider` is gmail, outlook or smtp, and needsReauthAt/needsReauthReason are set when the provider invalidated t… - [Teammates (id, name, email)](https://docs.fuseai.com/api-reference/account/teammates-id-name-email.md): The active members of the token owner's team (the owner included), up to 100, with the user id, email and display name. Use `id` in `delegates` on campaigns and agents (they also accept plain emails). Available to any valid key (no scope needed). Rate limit: 120 requests per minute, 10000 per day. - [The writing styles AI campaigns accept](https://docs.fuseai.com/api-reference/account/the-writing-styles-ai-campaigns-accept.md): The token owner's writing styles, default first then most recently updated; a default style is created on first access. Use `id` as `writingStyleId` when creating an AI campaign. Available to any valid key (no scope needed). Rate limit: 120 requests per minute, 10000 per day. - [Which CRMs the team has connected](https://docs.fuseai.com/api-reference/account/which-crms-the-team-has-connected.md): Which CRM the token owner's team has connected: `crm` is hubspot, salesforce, attio, zoho or pipedrive (the first one found in that order across the team's active members) or null when none is connected, and `connected` lists the connected CRM identifiers. Check it before POST /business/lists/{listI… - [Poll any async job](https://docs.fuseai.com/api-reference/account/poll-any-async-job.md): Poll a CRM async job by the 24-hex id returned with a 202 (list exports via POST /business/lists/{listId}/export, GET /business/exports/{jobId} is an alias). `status` moves pending > processing > completed or failed; poll every few seconds until it is terminal. On completed, `rowCount` and a short-l… - [The credit spend ledger](https://docs.fuseai.com/api-reference/account/the-credit-spend-ledger.md): The credit spend ledger for a `since` / `to` window (`to` omitted = up to now) and an optional `memberIds` teammate filter — the same contract as the internal spend endpoint, all echoed back (`to` as null and `memberIds` as [] when omitted): `usage` is the current billing period's headline (used, av… - [Get the token owner's identity](https://docs.fuseai.com/api-reference/account/get-the-token-owners-identity.md): The identity of the user who owns the API token: user id, email and display name. Handy as a connectivity check because it needs no scope and is exempt from scope enforcement. Rate limit: 120 requests per minute, 10000 per day. - [Get the token owner's credit balance](https://docs.fuseai.com/api-reference/account/get-the-token-owners-credit-balance.md): The credits currently available to the token owner. Team members draw on the owner's pool, so a member sees the smaller of their remaining personal cap and the owner's balance. Billable calls answer 402 INSUFFICIENT_CREDITS when this reaches zero. Available to any valid key (no scope needed). Rate l… - [Get the accepted prospect-search filter values](https://docs.fuseai.com/api-reference/prospect-search/get-the-accepted-prospect-search-filter-values.md): The whole people-search filter contract, keyed by search field name. `fields..valueShape` says how that field's value must be shaped on the wire — `include_exclude` takes `[{ status, value }]` entries, `include_exclude_or_string` takes entries or a bare string / array of strings (bare strings… - [Suggest values for a free-text search field](https://docs.fuseai.com/api-reference/prospect-search/suggest-values-for-a-free-text-search-field.md): Type-ahead vocabulary for the free-text people filters — `company`, `website`, `location`, `region`, `title`, `school`, `skill` — the same suggestions the product's search UI offers. Send the returned `name` verbatim as the filter value; the values are lower-cased exactly as the provider stores them… - [Run a people search](https://docs.fuseai.com/api-reference/prospect-search/run-a-people-search.md): Run a people search. The filter source is exactly one of: literal `filters`, a stored PEOPLE saved search (`savedSearchId` or `savedSearchName`), or a natural-language `query` (the product's smart search converts the prose into filters; criteria it could not map come back as `unresolvedCriteria`). S… - [Save people-search results into a list](https://docs.fuseai.com/api-reference/prospect-search/save-people-search-results-into-a-list.md): Run the search server-side and save up to `limit` matches into a contact list. The filter source is exactly one of `filters`, a saved search (`savedSearchId` / `savedSearchName`), or a natural-language `query` — the same contract as POST /prospects/search. The destination is exactly one of `listId`… - [The campaign's send queue by status](https://docs.fuseai.com/api-reference/scheduled-sends/the-campaigns-send-queue-by-status.md): Lists one bucket of the campaign's send queue. `status=approval_required` returns AI-drafted messages waiting for your decision through POST /business/scheduled-sends/approve or /decline; `scheduled` is the upcoming queue, each row due at `scheduledAt` (UTC); `sent`, `skipped`, `stopped` (declined -… - [Edit a queued send's copy or time before it goes out](https://docs.fuseai.com/api-reference/scheduled-sends/edit-a-queued-sends-copy-or-time-before-it-goes-out.md): Edits a queued send before it goes out. Send any of `subject`, `body` and `scheduledAt`; omitted fields keep the queued row's current values. IMPORTANT: the edit is not an in-place update - the row you addressed is marked `overwritten` and a NEW queued row carries the content forward, so the respons… - [Skip one queued send](https://docs.fuseai.com/api-reference/scheduled-sends/skip-one-queued-send.md): Skips one queued send: the row is marked `skipped` and the contact's sequence ADVANCES to its next step, with the following step's wait measured from this row's scheduled time. That is what separates skip from decline, which stops the contact's sequence outright. Only a row still waiting to go out c… - [Approve queued sends awaiting review](https://docs.fuseai.com/api-reference/scheduled-sends/approve-queued-sends-awaiting-review.md): Approves queued sends that are waiting for review: each row in `approval_required` moves to `scheduled` and goes out at its scheduled time. Only sends belonging to campaigns you own can be approved. The answer reports every id you passed: `approved` are the ones that moved, `ignored` are your sends… - [Decline queued sends awaiting review](https://docs.fuseai.com/api-reference/scheduled-sends/decline-queued-sends-awaiting-review.md): Declines queued sends. A declined row moves to `stopped`, which is TERMINAL for that contact: unlike skip, the sequence does not advance, so no further step is scheduled for the contact in this campaign. Decline reaches both AI drafts awaiting review (`approval_required`) and ordinary queued rows (`… - [The workspace's saved campaign templates](https://docs.fuseai.com/api-reference/campaign-templates/the-workspaces-saved-campaign-templates.md): Lists the saved campaign templates you can see - your own plus those shared by your team's visibility settings - newest first, with the schedule settings and the full step sequence each one snapshots. Pass a template's `id` as `templateId` when creating a campaign to copy its steps and channels. Thi… - [Save a campaign's sequence as a reusable template](https://docs.fuseai.com/api-reference/campaign-templates/save-a-campaigns-sequence-as-a-reusable-template.md): Saves an existing campaign's sequence as a reusable template: every step (channel, wait days, topic, subject and body) plus the schedule settings - sending days, sending hours, timezone and source lists. The template is a snapshot; later edits to the campaign do not change it, and editing the templa… - [Delete a template](https://docs.fuseai.com/api-reference/campaign-templates/delete-a-template.md): Deletes a saved campaign template. Campaigns already created from it are unaffected - a campaign copies the template's steps at creation and keeps no link to it. Rate limit: this endpoint has a tighter cap of 20 requests/minute and 500/day, applied inside the shared campaigns bucket of 30 requests/m… - [The agent kinds the wizard offers](https://docs.fuseai.com/api-reference/agents/the-agent-kinds-the-wizard-offers.md): The 18 agent kinds this API can create, grouped by `category`: `signal` (13 market monitors watching job changes, LinkedIn posts, job postings, headcount, funding or the open web), `watcher` (3 kinds that watch the people or companies of one of your EXISTING lists) and `scrape` (2 one-shot LinkedIn… - [The token owner's agents across every kind](https://docs.fuseai.com/api-reference/agents/the-token-owners-agents-across-every-kind.md): Your agents of every kind, newest created first, one page at a time. `type` is the public slug (the same one you POST to at /business/agents/{type}); `status` is `initializing` for a saved draft, then `processing` / `active` / `paused` / `expired` / `failed`; older agents can also read `completed` o… - [Create a web monitor agent](https://docs.fuseai.com/api-reference/agents/create-a-web-monitor-agent.md): Creates a Website monitor agent (`web-monitor`). Runs a natural-language web search every `searchPeriod` (default daily) over up to `numResults` pages and delivers matching people or companies (`entityType`); each delivered result costs 50 credits and `maxCreditSpend` bounds a run. With `start: fals… - [Create a person starting new job agent](https://docs.fuseai.com/api-reference/agents/create-a-person-starting-new-job-agent.md): Creates a Person starting a new job agent (`person-starting-new-job`). Watches one industry for people who just changed jobs and delivers them (optionally with reactor data) in batches of `notificationCount`. With `start: false` (the default) a DRAFT is saved — status `initializing`, nothing billed:… - [Create a linkedin posts agent](https://docs.fuseai.com/api-reference/agents/create-a-linkedin-posts-agent.md): Creates a LinkedIn posts by topic agent (`linkedin-posts`). Delivers the authors (and optionally reactors) of LinkedIn posts matching `keywords`, narrowed by author/company filters. With `start: false` (the default) a DRAFT is saved — status `initializing`, nothing billed: read it back with GET /bus… - [Create a person discovery via filters agent](https://docs.fuseai.com/api-reference/agents/create-a-person-discovery-via-filters-agent.md): Creates a Person discovery via filters agent (`person-discovery-via-filters`). Delivers people matching the filter set; at least one filter must be non-empty. With `start: false` (the default) a DRAFT is saved — status `initializing`, nothing billed: read it back with GET /business/agents/{agentId},… - [Create a job postings agent](https://docs.fuseai.com/api-reference/agents/create-a-job-postings-agent.md): Creates a Job postings by company agent (`job-postings`). Delivers companies posting jobs matching `titles`/`descriptions` in one region; at least one of the two is required. With `start: false` (the default) a DRAFT is saved — status `initializing`, nothing billed: read it back with GET /business/a… - [Create a job posting in location agent](https://docs.fuseai.com/api-reference/agents/create-a-job-posting-in-location-agent.md): Creates a Job postings in a location agent (`job-posting-in-location`). Delivers companies posting jobs in one region, narrowed by industry/size/country. With `start: false` (the default) a DRAFT is saved — status `initializing`, nothing billed: read it back with GET /business/agents/{agentId}, adju… - [Create a first person hired in company department agent](https://docs.fuseai.com/api-reference/agents/create-a-first-person-hired-in-company-department-agent.md): Creates a First hire in a department agent (`first-person-hired-in-company-department`). Delivers companies that made their first hire in `companyDepartment`. With `start: false` (the default) a DRAFT is saved — status `initializing`, nothing billed: read it back with GET /business/agents/{agentId},… - [Create a first person hired internationally agent](https://docs.fuseai.com/api-reference/agents/create-a-first-person-hired-internationally-agent.md): Creates a First international hire agent (`first-person-hired-internationally`). Delivers companies that made their first hire outside their home country. With `start: false` (the default) a DRAFT is saved — status `initializing`, nothing billed: read it back with GET /business/agents/{agentId}, adj… - [Create a company headcount growth agent](https://docs.fuseai.com/api-reference/agents/create-a-company-headcount-growth-agent.md): Creates a Company headcount growth agent (`company-headcount-growth`). Delivers companies whose headcount grew within `companyHeadcountGrowth` percent. With `start: false` (the default) a DRAFT is saved — status `initializing`, nothing billed: read it back with GET /business/agents/{agentId}, adjust… - [Create a company headcount growth over baseline agent](https://docs.fuseai.com/api-reference/agents/create-a-company-headcount-growth-over-baseline-agent.md): Creates a Headcount growth over baseline agent (`company-headcount-growth-over-baseline`). Delivers companies that grew `companyHeadcountGrowthFromBaseline` percent over `baselineHeadcount` within `timeframe`. With `start: false` (the default) a DRAFT is saved — status `initializing`, nothing billed… - [Create a company department headcount agent](https://docs.fuseai.com/api-reference/agents/create-a-company-department-headcount-agent.md): Creates a Department headcount agent (`company-department-headcount`). Delivers companies whose `departmentHeadcount.department` sits within the given size range. With `start: false` (the default) a DRAFT is saved — status `initializing`, nothing billed: read it back with GET /business/agents/{agent… - [Create a company employee job location in two countries agent](https://docs.fuseai.com/api-reference/agents/create-a-company-employee-job-location-in-two-countries-agent.md): Creates a Employees across two countries agent (`company-employee-job-location-in-two-countries`). Delivers companies with employees in two countries. With `start: false` (the default) a DRAFT is saved — status `initializing`, nothing billed: read it back with GET /business/agents/{agentId}, adjust… - [Create a funding announcements agent](https://docs.fuseai.com/api-reference/agents/create-a-funding-announcements-agent.md): Creates a Funding announcements agent (`funding-announcements`). Delivers companies announcing funding of the given `fundingRoundTypes`; at least one of companyHeadcount/industries/companyCountries is required. With `start: false` (the default) a DRAFT is saved — status `initializing`, nothing bille… - [Create a people watcher agent](https://docs.fuseai.com/api-reference/agents/create-a-people-watcher-agent.md): Creates a People watcher (from a list) agent (`people-watcher`). Watches the PEOPLE of an existing list (exactly one of `listId`/`listIds`) for the chosen `eventType`, re-checking every `frequency` days; each watched contact is billed at activation and on every cycle. A missing or foreign source lis… - [Create a companies watcher agent](https://docs.fuseai.com/api-reference/agents/create-a-companies-watcher-agent.md): Creates a Companies watcher (from a list) agent (`companies-watcher`). Watches the COMPANIES of an existing list (exactly one of `listId`/`listIds`) for the chosen `eventType`; job-posting watchers require at least one `keywords` entry and accept `jobPostingLocationTypes` (remote/on_site/hybrid). Wi… - [Create a job changes watcher agent](https://docs.fuseai.com/api-reference/agents/create-a-job-changes-watcher-agent.md): Creates a Job-changes watcher (from a list) agent (`job-changes-watcher`). Watches the PEOPLE of an existing list for title/company changes against the provider's monthly dataset releases (exactly one of `listId`/`listIds`). With `start: false` (the default) a DRAFT is saved — status `initializing`,… - [Create a linkedin profile agent](https://docs.fuseai.com/api-reference/agents/create-a-linkedin-profile-agent.md): Creates a LinkedIn profile scrape agent (`linkedin-profile`). Scrapes the engagers (`fieldsToScrape`: likes/comments) of up to `maxPosts` recent posts from 1-50 profiles (exactly one of `profileUrl`/`profileUrls`), optionally on a recurring schedule. A started scrape answers with the agent's own `id… - [Create a linkedin post agent](https://docs.fuseai.com/api-reference/agents/create-a-linkedin-post-agent.md): Creates a LinkedIn post scrape agent (`linkedin-post`). Scrapes the engagers (`fieldsToScrape`: likes/comments) of 1-50 posts (exactly one of `postUrl`/`postUrls`), optionally every 7 days. A started scrape answers with the agent's own `id`, like every other kind; its internal scrape job id never le… - [Canonical values for agent config filters](https://docs.fuseai.com/api-reference/agents/canonical-values-for-agent-config-filters.md): Resolves free text to the exact strings an agent config accepts, so a create body never fails on a near-miss spelling. `region` feeds `regions` and `authorLocation`; `industry` feeds `industries`; `title` feeds `currentTitle`, `pastTitle` and `authorTitle`; `school` is available for completeness. Th… - [An agent's config as the drawer shows it](https://docs.fuseai.com/api-reference/agents/an-agents-config-as-the-drawer-shows-it.md): One agent with its config, in any status. `config` is the agent in CREATE shape: exactly the body you would POST to /business/agents/{type} (minus `start`) to build it again, and exactly what PATCH accepts. A draft returns the config you saved, verbatim (`isReconstructed: false`). An agent that was… - [Delete an agent (409 while a run is processing)](https://docs.fuseai.com/api-reference/agents/delete-an-agent-409-while-a-run-is-processing.md): Deletes the agent and tears down the provider subscriptions behind it. The results list it built and the rows already delivered are KEPT — delete the list separately if you want them gone. Drafts delete immediately. An agent whose run is in progress (`status: processing`) answers 409 AGENT_PROCESSIN… - [Update a draft agent's config (partial)](https://docs.fuseai.com/api-reference/agents/update-a-draft-agents-config-partial.md): Partial update of a DRAFT agent's config. Send one or more of the agent type's own config fields — the same fields as its POST /business/agents/{type} body, without `start`. Keys are merged over the saved config: omitted fields keep their value, an array replaces the stored array, and unknown keys a… - [Start a draft agent (spends credits)](https://docs.fuseai.com/api-reference/agents/start-a-draft-agent-spends-credits.md): Starts a DRAFT agent and SPENDS CREDITS. It creates the agent's results list, checks and deducts the balance, sets up the provider subscriptions and kicks off the first run; the agent moves through `processing` to `active` (a scrape stays `processing` until the scrape finishes). Only drafts can be a… - [Pause an agent (one-way, there is no resume)](https://docs.fuseai.com/api-reference/agents/pause-an-agent-one-way-there-is-no-resume.md): Pauses a running agent: its provider subscriptions (for a scrape, its recurring schedule) stop, `status` becomes `paused`, and no further results are delivered or billed. Already-delivered rows stay in the results list. This is one-way through the API: `activate` only accepts drafts, so a paused age… - [Copy an agent as a fresh draft](https://docs.fuseai.com/api-reference/agents/copy-an-agent-as-a-fresh-draft.md): Copies an agent of any status into a NEW draft named " (Copy)" (`status: initializing`, nothing billed). A draft source copies losslessly. A source that was started before configs were snapshotted is rebuilt from its live record, and every field that could not be recovered is listed in… - [The research providers a run can use](https://docs.fuseai.com/api-reference/research/the-research-providers-a-run-can-use.md): The Deep Research provider catalog for the token owner: every provider's id (slug), label, category, description, icon and docs link, its key mode (platform: it runs on Fuse's key; byok-required: the user must save their own key), whether this user has saved one (hasUserKey), where the key that woul… - [Research runs currently in flight](https://docs.fuseai.com/api-reference/research/research-runs-currently-in-flight.md): The token owner's research runs still in flight (status queued, planning, plan_review, running, generating_csv or uploading), newest first, capped at 50. Finished runs are not listed — read them individually with GET /business/research/runs/{runId}. `prompt` is the text the run was started with and… - [Start a Deep Research run](https://docs.fuseai.com/api-reference/research/start-a-deep-research-run.md): Starts an autonomous Deep Research run for the prompt and returns immediately with 202. Billing is per provider action inside the run, gated by the balance and capped by `effort` (low 1000, medium 2000 (default), high 5000 credits); the run always produces a markdown report (`reportMarkdown` on GET… - [A research run's state, report, and result list](https://docs.fuseai.com/api-reference/research/a-research-runs-state-report-and-result-list.md): A research run's full state. Poll it until `status` is completed, failed or cancelled (in-flight statuses: queued, planning, plan_review, running, generating_csv, uploading). `prompt` is the text the run was started with; `spend` shows the credits reserved, settled and the cap `effort` set; `reportM… - [A research run's progress events](https://docs.fuseai.com/api-reference/research/a-research-runs-progress-events.md): The run's progress log in ascending `seq` order (the durable source of truth for what the agent did). Poll with `sinceSeq` set to the last `seq` you have seen: only newer events come back. A full page sets `nextSinceSeq` to its last seq (pass it as the next `sinceSeq`); otherwise it is null and you… - [Cancel an in-flight research run](https://docs.fuseai.com/api-reference/research/cancel-an-in-flight-research-run.md): Requests cancellation of an in-flight run and returns its new status (cancelled). Credits already settled for provider actions are not refunded; reserved credits are released. A run that has already finished (completed, failed or cancelled) cannot be cancelled and answers 409. Rate limit: 30 request… - [Get the accepted company-search filter values](https://docs.fuseai.com/api-reference/company-search/get-the-accepted-company-search-filter-values.md): The accepted values for every enum-backed company filter, each list trimmed to exactly what a filter takes. Use `fiberIndustries` for `industriesV2`, `linkedinIndustries` for `linkedinIndustries`, `crunchbaseIndustries` for `crunchbaseCategories`, `crunchbaseCategoryGroups` for `crunchbaseCategoryGr… - [Suggest values for company and location filters](https://docs.fuseai.com/api-reference/company-search/suggest-values-for-company-and-location-filters.md): Resolves free-text input to canonical company-filter values; two characters minimum. `field=company` returns company names with their `domain` when known — send `name` to `nameLike`, or `domain` to `domains`; add `orgType=investor` to search investors instead, whose `domain` is the value the `invest… - [Run a company search](https://docs.fuseai.com/api-reference/company-search/run-a-company-search.md): The company twin of the people search. The filter source is exactly one of: literal `filters`, a stored COMPANY saved search (`savedSearchId` / `savedSearchName`), or a natural-language `query` (converted into filters server-side; criteria it could not map come back as `unresolvedCriteria`). A peopl… - [Save company-search results into a list](https://docs.fuseai.com/api-reference/company-search/save-company-search-results-into-a-list.md): Run the search server-side and save up to `limit` matches into a company list. Same filter-source contract as POST /companies/search — exactly one of `filters`, `savedSearchId`, `savedSearchName` or `query`. The destination is exactly one of `listId` or `listName`; `listName` is create-or-reuse by e… - [List the token owner's saved searches](https://docs.fuseai.com/api-reference/saved-searches/list-the-token-owners-saved-searches.md): Every saved search the token owner has, people and company alike, newest-updated first; `?type=people|company` narrows to one kind. The listing is complete — there is no paging. - [Create a saved search](https://docs.fuseai.com/api-reference/saved-searches/create-a-saved-search.md): Store a search under a name. `type` picks the kind — `people` (the default) or `company` — and decides which language `filters` must speak: people filters are the keys POST /prospects/search takes, company filters the keys POST /companies/search takes. Either way the search opens identically in the… - [Get one saved search](https://docs.fuseai.com/api-reference/saved-searches/get-one-saved-search.md): One saved search of either kind, with its filters in the language the matching search endpoint accepts — POST /prospects/search for `searchType: people`, POST /companies/search for `searchType: company`. `ignoredFilterKeys` names stored keys with no equivalent search field, which were dropped from `… - [Delete a saved search](https://docs.fuseai.com/api-reference/saved-searches/delete-a-saved-search.md): Permanently delete one saved search of either kind. Nothing else is touched: lists, campaigns and contacts saved from the search are unaffected. Deleting is not idempotent — repeating the call answers 404 SAVED_SEARCH_NOT_FOUND, as does a search that is not yours. - [Rename a saved search or replace its filters](https://docs.fuseai.com/api-reference/saved-searches/rename-a-saved-search-or-replace-its-filters.md): Rename a saved search, replace its filters, or both — at least one of `title` and `filters` is required. A search's type is immutable, so `filters` must speak the stored search's own language: the keys POST /prospects/search takes for a `people` search, the keys POST /companies/search takes for a `c… - [Replay a saved search](https://docs.fuseai.com/api-reference/saved-searches/replay-a-saved-search.md): Replay a stored PEOPLE saved search. Equivalent to POST /prospects/search with `savedSearchId`; both echo the resolved filters, and this one always includes `ignoredFilterKeys` because the source is always a stored search. - [List the token owner's list folders of one kind](https://docs.fuseai.com/api-reference/folders/list-the-token-owners-list-folders-of-one-kind.md): The token owner's folders of one kind: `contactList` and `companyList` folders organise lists (the `folderId` on `GET /business/lists` rows and `PATCH /business/lists/{listId}`), `campaign` folders organise campaigns, and `agent` folders organise agents. Not paginated — every folder of the kind is r… - [Create a list folder](https://docs.fuseai.com/api-reference/folders/create-a-list-folder.md): Creates a folder of the given kind (`contactList` by default). List-folder names are unique per kind (409 FOLDER_NAME_TAKEN); campaign and agent folders are created in their own services and answer their codes. Put lists into the folder with `PATCH /business/lists/{listId}` (`folderId`). - [Delete a folder (its lists move to the root)](https://docs.fuseai.com/api-reference/folders/delete-a-folder-its-lists-move-to-the-root.md): Deletes a folder; the lists (or campaigns/agents) it held are not deleted and move back to the root. List folders resolve by id alone; pass `?type=campaign` or `?type=agent` for those folder kinds. - [Rename a folder](https://docs.fuseai.com/api-reference/folders/rename-a-folder.md): Renames a folder. List folders (`contactList`/`companyList`) resolve by id alone; pass `?type=campaign` or `?type=agent` to rename a campaign or agent folder, which live in their own services. The new name must be unused among folders of the same kind (409 FOLDER_NAME_TAKEN). The response is the ren… - [Resolve the caller's contact by LinkedIn URL](https://docs.fuseai.com/api-reference/contacts/resolve-the-callers-contact-by-linkedin-url.md): Looks up the contact record for a LinkedIn profile URL and returns its `contactId`, the id every other contacts endpoint and every list row uses. The URL is normalised before matching, so `https://www.linkedin.com/in/ada-nwosu/` and `linkedin.com/in/ada-nwosu` resolve the same contact; a value that… - [Set a contact's primary email and/or phone](https://docs.fuseai.com/api-reference/contacts/set-a-contacts-primary-email-andor-phone.md): 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[].… - [A contact's activity timeline](https://docs.fuseai.com/api-reference/contacts/a-contacts-activity-timeline.md): 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… ## OpenAPI Specs - [openapi](/openapi.json)