{"openapi":"3.1.0","info":{"title":"Sales Engine API","version":"1.0.0","description":"Every action the dashboard can take, as an HTTP API. Authenticate with a developer key as `Authorization: Bearer se_...` or with the browser session. Scopes: read (Read anything in the workspace.) write (Create and edit lists, research, sequences, campaigns, memory, signals and learning; queue jobs.) send (Anything that sends email or changes what sends: launch, pause, resume, test sends, replies, draft approval, mailbox pause.) admin (Provider keys, developer keys, mailboxes, domains, settings, fixed costs.)"},"servers":[{"url":"https://0.0.0.0:10000/api/v1"}],"security":[{"developerKey":[]}],"components":{"securitySchemes":{"developerKey":{"type":"http","scheme":"bearer","bearerFormat":"se_ key"}}},"tags":[{"name":"Account"},{"name":"Settings"},{"name":"Dashboard"},{"name":"Provider keys"},{"name":"Developer keys"},{"name":"ICP"},{"name":"Memory"},{"name":"Lead lists"},{"name":"Pages"},{"name":"Leads"},{"name":"Companies"},{"name":"Uploads"},{"name":"Research"},{"name":"Sequences"},{"name":"Campaigns"},{"name":"Mailboxes"},{"name":"Deliverability"},{"name":"Inbox"},{"name":"Signals"},{"name":"Learning"},{"name":"Frameworks"},{"name":"Usage and cost"},{"name":"Jobs"},{"name":"Projects"},{"name":"Clients"}],"paths":{"/me":{"get":{"operationId":"me","summary":"The signed-in user, their workspaces and the workspace in use.","tags":["Account"],"x-scope":"read","x-session-only":true,"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"me.update","summary":"Update the signed-in user's name and phone.","tags":["Account"],"x-scope":"write","x-session-only":true,"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"first_name":{"description":"First name.","type":"string"},"last_name":{"description":"Last name.","type":"string"},"phone":{"description":"Phone number.","type":"string"}},"additionalProperties":true}}}}}},"/me/avatar":{"post":{"operationId":"me.avatar","summary":"Upload the profile picture (multipart, field file: PNG, JPEG or WebP under 5 MB).","tags":["Account"],"x-scope":"write","x-session-only":true,"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"operationId":"me.avatarDelete","summary":"Remove the profile picture.","tags":["Account"],"x-scope":"write","x-session-only":true,"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/me/google":{"get":{"operationId":"me.google","summary":"The Google connection behind the signed-in user: account, scopes, calendar access.","tags":["Account"],"x-scope":"read","x-session-only":true,"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"delete":{"operationId":"me.googleDisconnect","summary":"Forget the Google connection and its tokens.","tags":["Account"],"x-scope":"write","x-session-only":true,"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/me/google/drive":{"get":{"operationId":"me.googleDrive","summary":"Files in the caller's own Google Drive, newest first, for attaching to a deal.","tags":["Account"],"x-scope":"read","parameters":[{"name":"q","in":"query","required":false,"schema":{"description":"Name contains.","type":"string"}},{"name":"page","in":"query","required":false,"schema":{"description":"The next page token.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/me/google/drive/{file}/thumbnail":{"get":{"operationId":"me.googleDriveThumbnail","summary":"A Drive file's preview image.","tags":["Account"],"x-scope":"read","parameters":[{"name":"file","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/me/google/calendar":{"get":{"operationId":"me.googleCalendar","summary":"The next events on the connected Google calendar, read only.","tags":["Account"],"x-scope":"read","x-session-only":true,"parameters":[{"name":"days","in":"query","required":false,"schema":{"description":"Window in days, 1 to 30, default 7.","type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/notifications":{"get":{"operationId":"notifications.list","summary":"The bell: notifications for this person, newest first, with the unread count; each carries href, the page it leads to.","tags":["Account"],"x-scope":"read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"description":"How many, 1 to 50, default 20.","type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/notifications/read":{"post":{"operationId":"notifications.read","summary":"Mark notifications read: ids, or all: true.","tags":["Account"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"description":"Notification ids.","type":"array","items":{}},"all":{"description":"Mark every one read.","type":"boolean"}},"additionalProperties":true}}}}}},"/notifications/delete":{"post":{"operationId":"notifications.delete","summary":"Delete notifications by id.","tags":["Account"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"description":"Notification ids.","type":"array","items":{}}},"additionalProperties":true}}}}}},"/me/table-widths":{"get":{"operationId":"me.tableWidths","summary":"The column widths this person dragged, per table: { tables: { tableKey: { column label: pixels } } }.","tags":["Account"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"put":{"operationId":"me.tableWidthsSet","summary":"Save the column widths of one table for this person, or forget them with widths null.","tags":["Account"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"table":{"description":"Table key, as the app builds it: the page path with ids as :id, then the column labels.","type":"string"},"widths":{"description":"Map of column label to pixels, 40 to 1600; null resets the table.","type":"object","additionalProperties":true}},"required":["table","widths"],"additionalProperties":true}}}}}},"/me/onboarding":{"get":{"operationId":"me.onboarding","summary":"This person's first-login checklist in the workspace: items done, skipped, finished.","tags":["Account"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"put":{"operationId":"me.onboardingSet","summary":"Tick checklist items, skip the checklist or finish it.","tags":["Account"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"done":{"description":"Item keys ticked.","type":"array","items":{}},"skipped":{"description":"true to skip the checklist.","type":"boolean"},"finished":{"description":"true when every item is done.","type":"boolean"}},"additionalProperties":true}}}}}},"/workspaces":{"get":{"operationId":"workspaces.list","summary":"Workspaces the user belongs to.","tags":["Account"],"x-scope":"read","x-session-only":true,"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"workspaces.create","summary":"Create a workspace.","tags":["Account"],"x-scope":"admin","x-session-only":true,"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Workspace name.","type":"string"}},"required":["name"],"additionalProperties":true}}}}}},"/workspaces/switch":{"post":{"operationId":"workspaces.switch","summary":"Switch the browser session to another workspace.","tags":["Account"],"x-scope":"read","x-session-only":true,"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"workspace_id":{"description":"Workspace to switch to.","type":"string"}},"required":["workspace_id"],"additionalProperties":true}}}}}},"/settings":{"get":{"operationId":"settings.get","summary":"Workspace settings: sending defaults, model route, autonomy switches, budgets.","tags":["Settings"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"settings.update","summary":"Update workspace settings.","tags":["Settings"],"x-scope":"admin","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Workspace name.","type":"string"},"theme":{"description":"dark or light: the workspace theme, the same for everyone in it.","type":"string"},"timezone":{"description":"IANA timezone.","type":"string"},"model_settings":{"description":"Model route and slugs.","type":"object","additionalProperties":true},"sending_defaults":{"description":"Daily limits, windows, gaps.","type":"object","additionalProperties":true},"autonomy":{"description":"Autonomy switches.","type":"object","additionalProperties":true},"budgets":{"description":"Monthly budget in USD.","type":"object","additionalProperties":true}},"additionalProperties":true}}}}}},"/settings/models":{"get":{"operationId":"settings.models","summary":"The models the workspace can pick for its fast, quality and copy slots: newest text models from each provider on OpenRouter, with the price per million tokens in and out, and the recommended three. Read live from OpenRouter, cached six hours.","tags":["Settings"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/settings/models/plan":{"get":{"operationId":"settings.modelPlan","summary":"The model plan for a run: every AI step in the scope, its average tokens per call on this workspace, the live price of every model, the workspace's current model per step, and the Cheapest, Balanced and Best presets. Multiply a step's tokens by a model's price for the cost per call; the forms show the total before a run starts.","tags":["Settings"],"x-scope":"read","parameters":[{"name":"scope","in":"query","required":false,"schema":{"description":"enrichment (company profile, web research, lead intelligence), copy (personalised email, template) or signals.","type":"string","enum":["enrichment","copy","signals"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/settings/logo":{"post":{"operationId":"settings.logo","summary":"Upload the workspace logo (multipart, field file: PNG, JPEG or WebP under 2 MB). Shown in the sidebar and on invitations.","tags":["Settings"],"x-scope":"admin","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"operationId":"settings.logoRemove","summary":"Back to the product mark.","tags":["Settings"],"x-scope":"admin","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/settings/members":{"get":{"operationId":"settings.members","summary":"Workspace members: role, when they joined.","tags":["Settings"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/settings/members/{userId}":{"patch":{"operationId":"settings.memberRole","summary":"Change a person's role (admin, manager, team or freelancer) and their own section switches. Only the owner changes an admin, a manager changes freelancers and team members; nobody changes their own access.","tags":["Settings"],"x-scope":"write","parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"description":"admin, manager, team or freelancer.","type":"string"},"sections":{"description":"Section switches for this person, { leads: true, campaigns: false }; a section left out follows the role.","type":"object","additionalProperties":true}},"additionalProperties":true}}}}},"delete":{"operationId":"settings.memberRemove","summary":"Remove a member. The owner cannot be removed.","tags":["Settings"],"x-scope":"admin","parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/settings/invites":{"get":{"operationId":"settings.invites","summary":"Open invitations with their links.","tags":["Settings"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"settings.invite","summary":"Invite an email address with a role; the invitation goes out by email when mail is set up and the link is returned either way.","tags":["Settings"],"x-scope":"admin","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"description":"Address to invite.","type":"string"},"role":{"description":"admin or member (default member).","type":"string","enum":["admin","member"]}},"required":["email"],"additionalProperties":true}}}}}},"/settings/invites/{id}/resend":{"post":{"operationId":"settings.inviteResend","summary":"Send the invitation again and extend it 14 days.","tags":["Settings"],"x-scope":"admin","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/settings/invites/{id}":{"delete":{"operationId":"settings.inviteRevoke","summary":"Withdraw an open invitation.","tags":["Settings"],"x-scope":"admin","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/onboarding":{"get":{"operationId":"onboarding.get","summary":"Onboarding progress and what is still missing.","tags":["Settings"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"onboarding.advance","summary":"Save an onboarding step.","tags":["Settings"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"step":{"description":"Step reached, 1 to 3.","type":"integer"},"complete":{"description":"Mark onboarding complete.","type":"boolean"}},"additionalProperties":true}}}}}},"/dashboard":{"get":{"operationId":"dashboard","summary":"Dashboard tiles, the by-day chart, the funnel, recent campaigns, positive replies and what needs a human.","tags":["Dashboard"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/search":{"get":{"operationId":"search","summary":"Global search over leads, companies, campaigns, lists, sequences and replies.","tags":["Dashboard"],"x-scope":"read","parameters":[{"name":"q","in":"query","required":true,"schema":{"description":"Search text.","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Rows per group, default 8.","type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/api-keys":{"get":{"operationId":"providerKeys.list","summary":"Provider keys on file (hints only), each with its name, place in its provider's pool and verification status.","tags":["Provider keys"],"x-scope":"admin","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"providerKeys.upsert","summary":"Add a key to a provider's pool (tried after the keys already there), or replace one key's secret with id. Sealed at rest and verified.","tags":["Provider keys"],"x-scope":"admin","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"description":"apollo, apify, reoon, perplexity, mistral, firecrawl, anthropic, openrouter, moltsets, typesafe, leadocean, calcom or fathom.","type":"string"},"key":{"description":"The secret.","type":"string"},"name":{"description":"A name to tell the keys apart, such as the account it belongs to. Defaults to Key N.","type":"string"},"id":{"description":"A key id: replaces that key's secret instead of adding one.","type":"string"}},"required":["provider","key"],"additionalProperties":true}}}}}},"/api-keys/{key}":{"patch":{"operationId":"providerKeys.update","summary":"Rename a key, move it in its pool or replace its secret. {key} is a key id, or a provider for its first key.","tags":["Provider keys"],"x-scope":"admin","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"The new name.","type":"string"},"position":{"description":"Its place in the pool, 0 first.","type":"integer"},"key":{"description":"A new secret, verified on save.","type":"string"}},"additionalProperties":true}}}}},"post":{"operationId":"providerKeys.reverify","summary":"Re-verify one key. {key} is a key id, or a provider for its first key.","tags":["Provider keys"],"x-scope":"admin","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"operationId":"providerKeys.delete","summary":"Remove one key from its pool. {key} is a key id, or a provider for its first key.","tags":["Provider keys"],"x-scope":"admin","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/api-keys/order":{"post":{"operationId":"providerKeys.reorder","summary":"Set the order of one provider's pool: the first key is used first, the next takes over when it runs out of credit.","tags":["Provider keys"],"x-scope":"admin","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"description":"The provider.","type":"string"},"ids":{"description":"Every key id of that provider, in the order to try them.","type":"array","items":{}}},"required":["provider","ids"],"additionalProperties":true}}}}}},"/developer-keys":{"get":{"operationId":"developerKeys.list","summary":"Developer keys for this workspace with scopes, last use and recent call counts.","tags":["Developer keys"],"x-scope":"admin","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"developerKeys.create","summary":"Create a developer key. The secret is returned once and never again.","tags":["Developer keys"],"x-scope":"admin","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"What the key is for.","type":"string"},"scopes":{"description":"Any of read, write, send, admin.","type":"array","items":{}}},"required":["name","scopes"],"additionalProperties":true}}}}}},"/developer-keys/{id}":{"delete":{"operationId":"developerKeys.revoke","summary":"Revoke a developer key.","tags":["Developer keys"],"x-scope":"admin","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/developer-keys/{id}/usage":{"get":{"operationId":"developerKeys.usage","summary":"Calls made with a developer key, newest first, with the total.","tags":["Developer keys"],"x-scope":"admin","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Rows, default 100, at most 500.","type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"description":"Rows to skip, for the next page.","type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/openapi.json":{"get":{"operationId":"openapi","summary":"This API as an OpenAPI 3.1 document.","tags":["Account"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/icp":{"get":{"operationId":"icp.list","summary":"ICP profiles (every version) and the website draft.","tags":["ICP"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"icp.create","summary":"Create an ICP profile.","tags":["ICP"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Profile name.","type":"string"},"target_titles":{"description":"Titles to target.","type":"array","items":{}},"seniorities":{"description":"Apollo seniorities.","type":"array","items":{}},"industries":{"description":"Industries.","type":"array","items":{}},"employee_ranges":{"description":"Company sizes.","type":"array","items":{}},"locations":{"description":"Locations.","type":"array","items":{}},"make_default":{"description":"Make it the default.","type":"boolean"}},"required":["name"],"additionalProperties":true}}}}}},"/icp/{id}":{"patch":{"operationId":"icp.update","summary":"Update an ICP profile.","tags":["ICP"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"operationId":"icp.delete","summary":"Delete an ICP profile.","tags":["ICP"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/icp/{id}/default":{"post":{"operationId":"icp.setDefault","summary":"Make an ICP profile the default.","tags":["ICP"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/offers":{"get":{"operationId":"offers.list","summary":"Offers the writer can pitch.","tags":["Memory"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"offers.create","summary":"Add an offer.","tags":["Memory"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Offer name.","type":"string"},"description":{"description":"What it is.","type":"string"},"price_text":{"description":"Price as shown.","type":"string"}},"required":["name"],"additionalProperties":true}}}}}},"/offers/{id}":{"get":{"operationId":"offers.get","summary":"One offer.","tags":["Memory"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"offers.update","summary":"Update an offer: any of name, description, pains_solved, is_default.","tags":["Memory"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Offer name.","type":"string"},"description":{"description":"What it is.","type":"string"},"pains_solved":{"description":"Pains it solves.","type":"array","items":{}},"is_default":{"description":"Make it the default offer.","type":"boolean"}},"additionalProperties":true}}}}},"delete":{"operationId":"offers.delete","summary":"Delete an offer.","tags":["Memory"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/proof":{"get":{"operationId":"proof.list","summary":"Proof points (case studies, results) the writer can cite.","tags":["Memory"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"proof.create","summary":"Add a proof point.","tags":["Memory"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"Short title.","type":"string"},"body":{"description":"The proof in one paragraph.","type":"string"},"vertical":{"description":"Industry it applies to.","type":"string"},"metric":{"description":"Headline number.","type":"string"}},"required":["title","body"],"additionalProperties":true}}}}}},"/proof/{id}":{"get":{"operationId":"proof.get","summary":"One proof point.","tags":["Memory"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"proof.update","summary":"Update a proof point: any of title, outcome_line, body, vertical_tags.","tags":["Memory"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"Short title, with the client name.","type":"string"},"outcome_line":{"description":"The result in one line.","type":"string"},"body":{"description":"Client, problem, what was built, results.","type":"string"},"vertical_tags":{"description":"Industries it fits.","type":"array","items":{}}},"additionalProperties":true}}}}},"delete":{"operationId":"proof.delete","summary":"Delete a proof point.","tags":["Memory"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/exclusions":{"get":{"operationId":"exclusions.list","summary":"Excluded domains and emails (clients, competitors, do-not-contact).","tags":["Memory"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"exclusions.add","summary":"Add exclusions: one object, or an array of them, each with a kind and a value.","tags":["Memory"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"description":"domain, email, company_name or linkedin.","type":"string","enum":["domain","email","company_name","linkedin"]},"value":{"description":"The domain, address, company name or LinkedIn profile.","type":"string"},"reason":{"description":"Why.","type":"string"}},"required":["kind","value"],"additionalProperties":true}}}}}},"/exclusions/{id}":{"delete":{"operationId":"exclusions.delete","summary":"Remove an exclusion.","tags":["Memory"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/memory":{"get":{"operationId":"memory.status","summary":"System memory status: scanned pages, chunks, facts, the last scan and the estimate for a new one.","tags":["Memory"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"memory.scan","summary":"Queue a memory scan of the workspace website.","tags":["Memory"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"description":"OpenRouter model for the scan's one pass; defaults to the fast model in Settings.","type":"string"},"website":{"description":"Site to scan; defaults to the workspace website.","type":"string"}},"additionalProperties":true}}}}}},"/memory/documents":{"get":{"operationId":"memory.documents.list","summary":"Documents in memory.","tags":["Memory"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"memory.documents.add","summary":"Add a text document to memory.","tags":["Memory"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"Title.","type":"string"},"text":{"description":"Body text.","type":"string"}},"required":["title","text"],"additionalProperties":true}}}}}},"/memory/documents/{id}":{"get":{"operationId":"memory.documents.get","summary":"One document with its full text: an upload or an edited page as saved, a scanned page rebuilt from its chunks.","tags":["Memory"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"memory.documents.update","summary":"Edit a document's title or text. New text is saved at once and re-embedded about 15 seconds later; an edited website page survives rescans.","tags":["Memory"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"Title.","type":"string"},"text":{"description":"The full text, Markdown or plain.","type":"string"}},"additionalProperties":true}}}}},"delete":{"operationId":"memory.documents.delete","summary":"Remove a document.","tags":["Memory"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/memory/facts":{"get":{"operationId":"memory.facts.list","summary":"Facts the writer relies on.","tags":["Memory"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"put":{"operationId":"memory.facts.upsert","summary":"Add or update a fact.","tags":["Memory"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"description":"Fact key.","type":"string"},"value":{"description":"Fact value.","type":"string"}},"required":["key","value"],"additionalProperties":true}}}}}},"/memory/facts/{id}":{"delete":{"operationId":"memory.facts.delete","summary":"Delete a fact.","tags":["Memory"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/lead-lists":{"get":{"operationId":"leadLists.list","summary":"Lead lists with counts and status, and how many of each list's leads are already in a campaign (leads_in_campaigns, campaigns).","tags":["Lead lists"],"x-scope":"read","parameters":[{"name":"exclude_campaign","in":"query","required":false,"schema":{"description":"Leave this campaign out of leads_in_campaigns, as the campaign wizard does for the campaign being made.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"leadLists.create","summary":"Source a new lead list from Apollo or MoltSets with the ICP defaults, verification and enrichment. Leads already in the CRM are skipped and the search pages on until requested_count new leads are in or the matches run out. Returns the list and its build job.","tags":["Lead lists"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"List name.","type":"string"},"requested_count":{"description":"How many leads to source, 1 to 1000.","type":"integer"},"params":{"description":"Search: {mode: form | natural_language, description, filters: {titles, seniorities, industries, employee_ranges, person_locations, org_locations, domains, keywords}, use_icp_defaults, icp_profile_id, options: {verify, verify_mode, profile_tier, posts, research, phone}}. phone asks Apollo for a mobile number per lead (an extra credit each, arrives asynchronously).","type":"object","additionalProperties":true},"draft":{"description":"Save the list as a draft without searching; open it in Lead search to preview and start it.","type":"boolean"}},"required":["name","params"],"additionalProperties":true}}}}}},"/lead-lists/preview":{"post":{"operationId":"leadLists.preview","summary":"Preview how many people match a search and what it would cost, before sourcing.","tags":["Lead lists"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"description":"form or natural_language.","type":"string","enum":["form","natural_language"]},"description":{"description":"Who you are looking for, in natural_language mode.","type":"string"},"filters":{"description":"{titles, seniorities, industries, employee_ranges, person_locations, org_locations, domains, keywords}.","type":"object","additionalProperties":true},"use_icp_defaults":{"description":"Fill empty filters from the default ICP.","type":"boolean"},"icp_profile_id":{"description":"ICP profile to draw defaults from.","type":"string"},"options":{"description":"{verify, verify_mode, profile_tier, posts, research, phone}.","type":"object","additionalProperties":true},"provider":{"description":"apollo, moltsets or leadocean.","type":"string","enum":["apollo","moltsets","leadocean"]},"requested_count":{"description":"How many leads the list would ask for; result.availability says the matches and whether they cover 70 percent of it (enough). No CRM check: the build skips duplicates.","type":"integer"}},"additionalProperties":true}}}}}},"/lead-lists/cost-rates":{"get":{"operationId":"leadLists.costRates","summary":"What one lead costs this workspace at each enrichment step (Apollo reveal, phone, verification, research, LinkedIn, posts, analysis), averaged from its own usage over 120 days, list price before a step was ever logged.","tags":["Lead lists"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/lead-lists/{id}":{"get":{"operationId":"leadLists.get","summary":"A lead list with its build progress and cost.","tags":["Lead lists"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"leadLists.rename","summary":"Rename a list or toggle auto-run.","tags":["Lead lists"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"New name.","type":"string"},"auto_run":{"description":"Re-run on a schedule.","type":"boolean"}},"additionalProperties":true}}}}},"delete":{"operationId":"leadLists.delete","summary":"Delete a list. The leads stay unless delete_leads is true; a lead that also sits in another list always stays; companies are never touched.","tags":["Lead lists"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"delete_leads":{"description":"Also delete the leads that belong only to this list.","type":"boolean"}},"additionalProperties":true}}}}}},"/lead-lists/{id}/leads":{"get":{"operationId":"leadLists.leads","summary":"Leads in a list.","tags":["Lead lists"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"description":"Search text.","type":"string"}},{"name":"stage","in":"query","required":false,"schema":{"description":"Pipeline stage.","type":"string"}},{"name":"email_status","in":"query","required":false,"schema":{"description":"valid, catch_all, invalid, unknown.","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Rows.","type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"description":"Offset.","type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"leadLists.addLeads","summary":"Add existing leads to a list.","tags":["Lead lists"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lead_ids":{"description":"Lead ids.","type":"array","items":{}}},"required":["lead_ids"],"additionalProperties":true}}}}},"delete":{"operationId":"leadLists.removeLead","summary":"Remove a lead from a list.","tags":["Lead lists"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lead_id":{"description":"Lead id.","type":"string"}},"required":["lead_id"],"additionalProperties":true}}}}}},"/lead-lists/{id}/enrich":{"post":{"operationId":"leadLists.enrich","summary":"Enrich the leads already on the list without searching again: by default every lead never enriched or stopped on an error. Anything bought for a lead in the last 30 days is reused. Pick the model per step with models (keys company_profile, research, lead_intelligence; research takes off).","tags":["Lead lists"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"models":{"description":"Model per AI step, OpenRouter slugs.","type":"object","additionalProperties":true},"stages":{"description":"Which leads: sourced, error, needs_review, ready (default sourced and error).","type":"array","items":{}}},"additionalProperties":true}}}}}},"/lead-lists/{id}/preview":{"post":{"operationId":"leadLists.previewDraft","summary":"Count a draft list's matches with its own saved filters and source, nothing spent. Returns the lead_list.preview job; its result has total_entries and availability.","tags":["Lead lists"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/lead-lists/{id}/start":{"post":{"operationId":"leadLists.start","summary":"Approve a draft list and build it. With no body it starts exactly as saved; with a body the name, count and search are replaced first. Spends credits.","tags":["Lead lists"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"List name (with params).","type":"string"},"requested_count":{"description":"How many leads to source, 1 to 1000.","type":"integer"},"params":{"description":"The search, the same shape as leadLists.create.","type":"object","additionalProperties":true}},"additionalProperties":true}}}}}},"/lead-lists/{id}/rerun":{"post":{"operationId":"leadLists.rerun","summary":"Source the list again with the same search.","tags":["Lead lists"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"reprocess":{"description":"Re-enrich leads already in the list.","type":"boolean"}},"additionalProperties":true}}}}}},"/lead-lists/{id}/research":{"post":{"operationId":"leadLists.research","summary":"Run company research over every company in the list.","tags":["Lead lists"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"depth":{"description":"Executive depth.","type":"string","enum":["c_suite","svp_plus","vp_plus","director_plus"]}},"additionalProperties":true}}}}}},"/lead-lists/{id}/export":{"get":{"operationId":"leadLists.export","summary":"Download a list as CSV.","tags":["Lead lists"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"CSV file","content":{"text/csv":{"schema":{"type":"string"}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/lead-lists/{id}/costs":{"get":{"operationId":"leadLists.costs","summary":"Where the list's money went: every provider call logged against it, by provider and by what the call did, with per-lead figures.","tags":["Lead lists"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/pages":{"get":{"operationId":"pages.list","summary":"Notes pages kept on a record, in order.","tags":["Pages"],"x-scope":"read","parameters":[{"name":"entity_type","in":"query","required":true,"schema":{"description":"lead, company, sequence, campaign, research, lead_list, domain, framework, project, work_item, deal or sop (the workspace id).","type":"string"}},{"name":"entity_id","in":"query","required":true,"schema":{"description":"The record.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"pages.create","summary":"Add a page to a record.","tags":["Pages"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entity_type":{"description":"lead, company, sequence, campaign, research, lead_list, domain, framework, project, work_item or deal.","type":"string"},"entity_id":{"description":"The record.","type":"string"},"title":{"description":"Page title.","type":"string"},"body_b64":{"description":"The same text base64 encoded (UTF-8), for text that reads like HTML.","type":"string"},"body_md":{"description":"Page text.","type":"string"}},"required":["entity_type","entity_id"],"additionalProperties":true}}}}}},"/pages/import-google-doc":{"post":{"operationId":"pages.importGoogleDoc","summary":"Import a Google Doc's text as a notes page on a deal or a project, through the person's Google connection (Docs read scope) or the Doc's public export when it is shared with anyone who has the link.","tags":["Pages"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"description":"The Google Doc link.","type":"string"},"entity_type":{"description":"deal or project.","type":"string","enum":["deal","project"]},"entity_id":{"description":"The record.","type":"string"},"title":{"description":"Page title; the Doc's title by default.","type":"string"}},"required":["url","entity_type","entity_id"],"additionalProperties":true}}}}}},"/pages/{id}":{"patch":{"operationId":"pages.update","summary":"Edit a page: title, text, position.","tags":["Pages"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"Page title.","type":"string"},"body_b64":{"description":"The same text base64 encoded (UTF-8), for text that reads like HTML.","type":"string"},"body_md":{"description":"Page text.","type":"string"},"position":{"description":"Order in the rail.","type":"integer"},"client_visible":{"description":"Show it on the client portal.","type":"boolean"}},"additionalProperties":true}}}}},"delete":{"operationId":"pages.delete","summary":"Remove a page.","tags":["Pages"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/leads":{"get":{"operationId":"leads.list","summary":"Leads across the workspace with filters.","tags":["Leads"],"x-scope":"read","parameters":[{"name":"q","in":"query","required":false,"schema":{"description":"Search text.","type":"string"}},{"name":"list_id","in":"query","required":false,"schema":{"description":"Only this list.","type":"string"}},{"name":"stage","in":"query","required":false,"schema":{"description":"Stage.","type":"string"}},{"name":"email_status","in":"query","required":false,"schema":{"description":"Email status.","type":"string"}},{"name":"source","in":"query","required":false,"schema":{"description":"search, upload, research, signal or reply.","type":"string"}},{"name":"phone","in":"query","required":false,"schema":{"description":"has or none: leads with or without a phone number.","type":"string","enum":["has","none"]}},{"name":"limit","in":"query","required":false,"schema":{"description":"Rows.","type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"description":"Offset.","type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/leads/summary":{"get":{"operationId":"leads.summary","summary":"Lead counts by stage, email status and source.","tags":["Leads"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/leads/tiles":{"get":{"operationId":"leads.tiles","summary":"The three Leads numbers (leads, valid leads, leads in a campaign) for the rows the same filters as GET /leads show.","tags":["Leads"],"x-scope":"read","parameters":[{"name":"q","in":"query","required":false,"schema":{"description":"Search text.","type":"string"}},{"name":"list_id","in":"query","required":false,"schema":{"description":"Only this list.","type":"string"}},{"name":"stage","in":"query","required":false,"schema":{"description":"Stage.","type":"string"}},{"name":"email_status","in":"query","required":false,"schema":{"description":"Email status.","type":"string"}},{"name":"source","in":"query","required":false,"schema":{"description":"Source.","type":"string"}},{"name":"phone","in":"query","required":false,"schema":{"description":"has or none.","type":"string","enum":["has","none"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/leads/export":{"get":{"operationId":"leads.export","summary":"Download leads as CSV.","tags":["Leads"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"CSV file","content":{"text/csv":{"schema":{"type":"string"}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/leads/{id}/export":{"get":{"operationId":"leads.dossier","summary":"Download everything on one lead as a document: every section of the record, the company behind it and its org map. Markdown by default, JSON with format=json.","tags":["Leads"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"format","in":"query","required":false,"schema":{"description":"md (default) or json.","type":"string"}}],"responses":{"200":{"description":"A document download, Markdown or JSON","content":{"text/markdown":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"string"}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/leads/duplicates":{"get":{"operationId":"leads.duplicates","summary":"Suspected duplicate leads.","tags":["Leads"],"x-scope":"read","parameters":[{"name":"status","in":"query","required":false,"schema":{"description":"open or resolved.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/leads/duplicates/{id}":{"post":{"operationId":"leads.resolveDuplicate","summary":"Merge or dismiss a duplicate pair.","tags":["Leads"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"description":"merge or dismiss.","type":"string","enum":["merge","dismiss"]}},"required":["action"],"additionalProperties":true}}}}}},"/leads/{id}":{"get":{"operationId":"leads.get","summary":"A lead with enrichment, intelligence, lists, campaigns and replies.","tags":["Leads"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"leads.update","summary":"Edit a lead.","tags":["Leads"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"operationId":"leads.delete","summary":"Delete a lead.","tags":["Leads"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/leads/{id}/email/drafts":{"post":{"operationId":"leads.emailDrafts","summary":"Write one draft email per approach style for this lead (a job; the drafts are its result).","tags":["Leads"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"notes":{"description":"Your notes for this email; they outrank everything else.","type":"string"}},"additionalProperties":true}}}}}},"/leads/{id}/email/send":{"post":{"operationId":"leads.emailSend","summary":"Send a one-off email to this lead, with optional follow-ups, now or at a time.","tags":["Leads"],"x-scope":"send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mailbox_id":{"description":"Mailbox to send from.","type":"string"},"subject":{"description":"Subject.","type":"string"},"format":{"description":"plain or html.","type":"string"},"body":{"description":"Plain text body.","type":"string"},"body_html":{"description":"HTML body when format is html.","type":"string"},"follow_ups":{"description":"Up to 3: [{day_offset, body}]; they stop on a reply.","type":"array","items":{}},"mode":{"description":"now or scheduled.","type":"string"},"scheduled_at":{"description":"ISO time when mode is scheduled.","type":"string"},"style":{"description":"The draft style picked.","type":"string"},"track_opens":{"description":"Add an open pixel. Off by default.","type":"boolean"},"track_clicks":{"description":"Rewrite links to count clicks. Off by default.","type":"boolean"}},"required":["mailbox_id","subject"],"additionalProperties":true}}}}}},"/leads/{id}/refresh":{"post":{"operationId":"leads.refresh","summary":"Re-enrich a lead, or fix one step of it.","tags":["Leads"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"profile_tier":{"description":"none, cheap or full.","type":"string"},"verify":{"description":"Verify the email again.","type":"boolean"},"only":{"description":"Run only these steps and keep the rest: verify, linkedin, posts, research, phone, intelligence.","type":"array","items":{}},"failed":{"description":"Run only the steps the lead's enrichment note says failed; a lead with nothing failed is skipped.","type":"boolean"},"email_source":{"description":"apollo (default, MoltSets then LeadOcean as the fallback), moltsets (MoltSets looks the email up; Apollo only for a phone) or leadocean (one LeadOcean record carries the email and the mobile number; Apollo is not asked).","type":"string","enum":["apollo","moltsets","leadocean"]},"models":{"description":"Model per AI step: { company_profile, research, lead_intelligence }.","type":"object","additionalProperties":true},"phone":{"description":"Ask for the phone number.","type":"boolean"},"posts":{"description":"Read recent posts.","type":"boolean"},"research":{"description":"Research the company.","type":"boolean"}},"additionalProperties":true}}}}}},"/companies":{"get":{"operationId":"companies.list","summary":"Companies with filters.","tags":["Companies"],"x-scope":"read","parameters":[{"name":"q","in":"query","required":false,"schema":{"description":"Search text.","type":"string"}},{"name":"industry","in":"query","required":false,"schema":{"description":"Industry.","type":"string"}},{"name":"country","in":"query","required":false,"schema":{"description":"Country.","type":"string"}},{"name":"list_id","in":"query","required":false,"schema":{"description":"Only companies with a lead in this list.","type":"string"}},{"name":"enrichment","in":"query","required":false,"schema":{"description":"enriched or not_enriched.","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Rows.","type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"description":"Offset.","type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/companies/summary":{"get":{"operationId":"companies.summary","summary":"Tile numbers for the companies the filters show (total, top industry, industries, countries, average ICP score), plus every industry and country to filter by.","tags":["Companies"],"x-scope":"read","parameters":[{"name":"q","in":"query","required":false,"schema":{"description":"Search text.","type":"string"}},{"name":"industry","in":"query","required":false,"schema":{"description":"One industry.","type":"string"}},{"name":"country","in":"query","required":false,"schema":{"description":"One country.","type":"string"}},{"name":"enrichment","in":"query","required":false,"schema":{"description":"enriched or not_enriched.","type":"string","enum":["enriched","not_enriched"]}},{"name":"list_id","in":"query","required":false,"schema":{"description":"Only companies behind this lead list.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/companies/export":{"get":{"operationId":"companies.export","summary":"Download companies as CSV.","tags":["Companies"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"CSV file","content":{"text/csv":{"schema":{"type":"string"}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/companies/{id}/export":{"get":{"operationId":"companies.dossier","summary":"Download everything on one company as a document: every section of the record, its people and its org map. Markdown by default, JSON with format=json.","tags":["Companies"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"format","in":"query","required":false,"schema":{"description":"md (default) or json.","type":"string"}}],"responses":{"200":{"description":"A document download, Markdown or JSON","content":{"text/markdown":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"string"}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/companies/duplicates":{"get":{"operationId":"companies.duplicates","summary":"Suspected duplicate companies.","tags":["Companies"],"x-scope":"read","parameters":[{"name":"status","in":"query","required":false,"schema":{"description":"open or resolved.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/companies/duplicates/{id}":{"post":{"operationId":"companies.resolveDuplicate","summary":"Merge or dismiss a duplicate pair.","tags":["Companies"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"description":"merge or dismiss.","type":"string","enum":["merge","dismiss"]}},"required":["action"],"additionalProperties":true}}}}}},"/companies/{id}":{"get":{"operationId":"companies.get","summary":"A company with its profile, people and research.","tags":["Companies"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"companies.update","summary":"Edit a company.","tags":["Companies"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"operationId":"companies.delete","summary":"Delete a company.","tags":["Companies"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/companies/{id}/refresh":{"post":{"operationId":"companies.refresh","summary":"Re-enrich a company.","tags":["Companies"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/uploads":{"post":{"operationId":"uploads.stage","summary":"Upload a CSV or XLSX of leads or companies (multipart: file, kind). Returns the staged rows and an auto-mapping.","tags":["Uploads"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"},"kind":{"type":"string","enum":["leads","companies"]}},"required":["file"]}}}}}},"/uploads/{id}":{"get":{"operationId":"uploads.get","summary":"A staged upload with its mapping and preview.","tags":["Uploads"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/uploads/{id}/preview":{"post":{"operationId":"uploads.preview","summary":"Preview an upload with a column mapping.","tags":["Uploads"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mapping":{"description":"Column to field mapping.","type":"object","additionalProperties":true}},"required":["mapping"],"additionalProperties":true}}}}}},"/uploads/{id}/commit":{"post":{"operationId":"uploads.commit","summary":"Create a lead list from a staged upload.","tags":["Uploads"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"List name.","type":"string"},"mapping":{"description":"Column to field mapping.","type":"object","additionalProperties":true},"options":{"description":"{enrich, verify, profile_tier, posts, research, find_people, per_company}.","type":"object","additionalProperties":true}},"required":["name","mapping"],"additionalProperties":true}}}}}},"/research":{"get":{"operationId":"research.list","summary":"Research runs.","tags":["Research"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"research.create","summary":"Research a company or a person: resolve, map the executive org, infer reporting lines, rank entry points, write the intelligence report.","tags":["Research"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"description":"Company name, domain or person name.","type":"string"},"kind":{"description":"auto, company_name, domain or person_name.","type":"string","enum":["auto","company_name","domain","person_name"]},"person_hint":{"description":"Company hint when researching a person.","type":"string"},"depth":{"description":"auto, vp_plus, svp_plus or director_plus.","type":"string","enum":["auto","vp_plus","svp_plus","director_plus"]},"max_people":{"description":"Cap on executives, 3 to 120.","type":"integer"},"actor_tier":{"description":"LinkedIn profile depth: cheap, full or none.","type":"string","enum":["cheap","full","none"]},"provider":{"description":"apollo (default), moltsets or leadocean.","type":"string","enum":["apollo","moltsets","leadocean"]}},"required":["input"],"additionalProperties":true}}}}}},"/research/estimate":{"get":{"operationId":"research.estimate","summary":"Estimated cost of a research run.","tags":["Research"],"x-scope":"read","parameters":[{"name":"depth","in":"query","required":false,"schema":{"description":"auto, vp_plus, svp_plus or director_plus.","type":"string"}},{"name":"max_people","in":"query","required":false,"schema":{"description":"Cap.","type":"integer"}},{"name":"actor_tier","in":"query","required":false,"schema":{"description":"cheap, full or none.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/research/preview":{"post":{"operationId":"research.preview","summary":"Preview a map before building it: find the company on the chosen source and count the people at each level of the depth. Counts only, nobody is enriched. Returns a job; read its result for the company, the levels and the total.","tags":["Research"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"description":"Company name, domain or person name.","type":"string"},"kind":{"description":"auto, company_name, domain or person_name.","type":"string","enum":["auto","company_name","domain","person_name"]},"person_hint":{"description":"Company hint when the input is a person.","type":"string"},"depth":{"description":"auto, vp_plus, svp_plus or director_plus.","type":"string","enum":["auto","vp_plus","svp_plus","director_plus"]},"provider":{"description":"apollo (default), moltsets or leadocean.","type":"string","enum":["apollo","moltsets","leadocean"]}},"required":["input"],"additionalProperties":true}}}}}},"/research/{id}":{"get":{"operationId":"research.get","summary":"A research run with its org map, entry points and report.","tags":["Research"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"delete":{"operationId":"research.delete","summary":"Delete a research run.","tags":["Research"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"patch":{"operationId":"research.update","summary":"Edit the map: the searched-for name and the written report (summary, entry strategy, org structure, leadership changes, events, risks, sources, missing departments).","tags":["Research"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"input_text":{"description":"What was searched for.","type":"string"},"report":{"description":"Report fields to merge.","type":"object","additionalProperties":true}},"additionalProperties":true}}}}}},"/research/{id}/choose":{"post":{"operationId":"research.choose","summary":"Pick the right company when the name was ambiguous.","tags":["Research"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"candidate":{"description":"The chosen candidate.","type":"object","additionalProperties":true}},"required":["candidate"],"additionalProperties":true}}}}}},"/research/{id}/list":{"post":{"operationId":"research.createList","summary":"Create a lead list from selected executives.","tags":["Research"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"List name.","type":"string"},"person_ids":{"description":"Executives to include.","type":"array","items":{}}},"required":["name","person_ids"],"additionalProperties":true}}}}}},"/research/{id}/people/{personId}":{"patch":{"operationId":"research.updatePerson","summary":"Correct a person on the org map.","tags":["Research"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"personId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/research/{id}/rerun":{"post":{"operationId":"research.rerun","summary":"Run the map again: with map_only the people found stay and only the mapping runs (one model call); without it the map is rebuilt from scratch (Apollo and LinkedIn spend).","tags":["Research"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"map_only":{"description":"Keep the people and rerun only the mapping.","type":"boolean"}},"additionalProperties":true}}}}}},"/sequences":{"get":{"operationId":"sequences.list","summary":"Saved sequences (shape, cadence, generation settings).","tags":["Sequences"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"sequences.create","summary":"Save a reusable sequence shape. The user chooses every step and gap; nothing is derived.","tags":["Sequences"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Sequence name.","type":"string"},"description":{"description":"What it is for.","type":"string"},"goal":{"description":"What a reply should lead to.","type":"string"},"cadence_text":{"description":"Cadence in plain English.","type":"string"},"workflow":{"description":"The sequence as a workflow: { nodes, edges }. Nodes are start, email (purpose, notes, html, thread reply or new, variants, reply_intent), wait (days), if (rules: [{ id, label?, all: [{ check: opened or clicked, is: true or false }] }], checked in order, an edge per rule id plus else for Otherwise; an older if with check alone has Yes and No edges), reply (categories: interested, meeting_request, information_request, not_interested, out_of_office, contact_later, wrong_person, uncategorizable; one edge per category), action (set_stage or notify) and end. Edges leave by sourceHandle next, yes, no, reply or a reply category; an unsubscribe always stops the lead and is never a branch; a way out left unconnected ends the lead's path. Any step but start and end may carry label (its own name, up to 60 characters); a reply node may carry vertical: true (drawn as a tall box). A runnable workflow sets the steps and days; a half-drawn one is saved as drawn and its problems come back as workflow_issues.","type":"object","additionalProperties":true},"draft":{"description":"Create: true saves a half-built workflow as a draft. Update: false finishes a draft (its workflow must run). A draft cannot go into a campaign.","type":"boolean"},"total_steps":{"description":"Number of emails in the sequence, 1 to 10.","type":"integer"},"day_offsets":{"description":"Day of each step counted from launch, one integer per step, the first is 0.","type":"array","items":{}},"ab_enabled":{"description":"Write A/B variants.","type":"boolean"},"variants_count":{"description":"Variants per step, 1 to 3.","type":"integer"},"generation_mode":{"description":"personalized writes every lead its own copy; template writes one email per step with a {{hook}} slot.","type":"string","enum":["personalized","template"]},"use_html":{"description":"Send HTML instead of plain text.","type":"boolean"},"cta_policy":{"description":"reply_only or link_allowed.","type":"string","enum":["reply_only","link_allowed"]},"word_ceiling":{"description":"Target words per email, 40 to 400 (120 by default); the writer goes shorter or longer when the copy needs it, and only a body half again over is flagged.","type":"integer"},"thread_followups":{"description":"Follow-ups reply in the same thread.","type":"boolean"},"steps":{"description":"Per-step purpose and notes: [{step_number, purpose, notes}]; purpose is opener, new_angle, question, proof, dissatisfaction, breakup or custom.","type":"array","items":{}}},"required":["name","total_steps","day_offsets"],"additionalProperties":true}}}}}},"/sequences/{id}":{"get":{"operationId":"sequences.get","summary":"A sequence with its steps.","tags":["Sequences"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"sequences.update","summary":"Edit a sequence: its name, its workflow, or its shape.","tags":["Sequences"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Sequence name.","type":"string"},"workflow":{"description":"The sequence as a workflow: { nodes, edges }. Nodes are start, email (purpose, notes, html, thread reply or new, variants, reply_intent), wait (days), if (rules: [{ id, label?, all: [{ check: opened or clicked, is: true or false }] }], checked in order, an edge per rule id plus else for Otherwise; an older if with check alone has Yes and No edges), reply (categories: interested, meeting_request, information_request, not_interested, out_of_office, contact_later, wrong_person, uncategorizable; one edge per category), action (set_stage or notify) and end. Edges leave by sourceHandle next, yes, no, reply or a reply category; an unsubscribe always stops the lead and is never a branch; a way out left unconnected ends the lead's path. Any step but start and end may carry label (its own name, up to 60 characters); a reply node may carry vertical: true (drawn as a tall box). A runnable workflow sets the steps and days; a half-drawn one is saved as drawn and its problems come back as workflow_issues.","type":"object","additionalProperties":true},"draft":{"description":"Create: true saves a half-built workflow as a draft. Update: false finishes a draft (its workflow must run). A draft cannot go into a campaign.","type":"boolean"}},"additionalProperties":true}}}}},"delete":{"operationId":"sequences.archive","summary":"Archive a sequence.","tags":["Sequences"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/sequences/{id}/duplicate":{"post":{"operationId":"sequences.duplicate","summary":"Duplicate a sequence.","tags":["Sequences"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/campaigns":{"get":{"operationId":"campaigns.list","summary":"Campaigns with status, counts and spend.","tags":["Campaigns"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"campaigns.create","summary":"Create a draft campaign, optionally from lead lists or as a duplicate.","tags":["Campaigns"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Campaign name.","type":"string"},"lead_list_ids":{"description":"Lists to import.","type":"array","items":{}},"duplicate_of":{"description":"Campaign to copy.","type":"string"}},"additionalProperties":true}}}}}},"/campaigns/{id}":{"get":{"operationId":"campaigns.get","summary":"A campaign: wizard state, shape, lists, counts, mailboxes, sub-campaigns.","tags":["Campaigns"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"campaigns.update","summary":"Wizard patch: name, ICP and notes, goal, cadence, tracking, limits, launch mode, mailboxes.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Name.","type":"string"},"icp_profile_id":{"description":"ICP profile.","type":"string"},"theme":{"description":"What the copy sells and cites: {offer_ids, proof_point_ids, document_ids, framework_ids}; framework_ids limits the writer to those frameworks for this campaign (routing still picks between them).","type":"object","additionalProperties":true},"icp_notes":{"description":"Notes for the writer.","type":"string"},"goal":{"description":"Goal.","type":"string"},"cadence_text":{"description":"Cadence.","type":"string"},"build_notes":{"description":"A note on the structure for the writer: what worked last time, what is a template and what is written per person.","type":"string"},"daily_limit":{"description":"Sends per day.","type":"integer"},"send_delay_mins":{"description":"Gap between sends.","type":"integer"},"track_opens":{"description":"Open pixel.","type":"boolean"},"track_clicks":{"description":"Click tracking.","type":"boolean"},"ignore_other_campaigns":{"description":"Leave out leads live in another campaign (default true). Turning it off brings them back in.","type":"boolean"},"launch_mode":{"description":"now or scheduled.","type":"string"},"scheduled_at":{"description":"ISO time when scheduled.","type":"string"},"mailbox_ids":{"description":"Mailboxes to send from.","type":"array","items":{}},"signature":{"description":"Signature appended after the copy on every step, plain text or HTML; null clears it. Pasted base64 images are hosted on save.","type":"string"},"signature_format":{"description":"plain, html or template.","type":"string"},"signature_fields":{"description":"Template fields: sign_off, title, photo_url, linkedin_url, site_label, site_url; the name and email come from the sending inbox. Empty drops the line.","type":"object","additionalProperties":true},"audience_filters":{"description":"Leads step filters, kept on the campaign: { icp: \"\"|80|70|60|50|below50, tier, email: \"\"|valid|catch_all|invalid|none, in: \"\"|in|out }.","type":"object","additionalProperties":true},"schedule_timezone":{"description":"IANA time zone the scheduled start is picked in, such as America/New_York.","type":"string"},"schedule_days":{"description":"Send days, 1 Monday to 7 Sunday; null uses each mailbox's days.","type":"array","items":{}},"window_start_min":{"description":"Sending window start, minutes from midnight in schedule_timezone (540 = 09:00).","type":"integer"},"window_end_min":{"description":"Sending window end, minutes from midnight (1080 = 18:00).","type":"integer"},"max_new_leads_per_day":{"description":"Most new leads (first emails) a day for this campaign.","type":"integer"},"wizard_step_reached":{"description":"1 to 8.","type":"integer"}},"additionalProperties":true}}}}},"delete":{"operationId":"campaigns.delete","summary":"Delete a draft campaign.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/campaigns/{id}/lists":{"post":{"operationId":"campaigns.importLists","summary":"Import lead lists into a campaign.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lead_list_ids":{"description":"Lists.","type":"array","items":{}}},"required":["lead_list_ids"],"additionalProperties":true}}}}},"delete":{"operationId":"campaigns.removeLists","summary":"Take lead lists off a campaign. Leads that came in through those lists and sit in no other attached list leave with them; leads added by hand, by CSV or from research stay, and an enrolled lead on a launched campaign stays.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lead_list_ids":{"description":"Lists to remove.","type":"array","items":{}}},"required":["lead_list_ids"],"additionalProperties":true}}}}}},"/campaigns/{id}/leads":{"get":{"operationId":"campaigns.leads","summary":"Leads in a campaign with approval and copy status.","tags":["Campaigns"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"description":"approved, rejected, pending.","type":"string"}},{"name":"q","in":"query","required":false,"schema":{"description":"Search text.","type":"string"}},{"name":"copy","in":"query","required":false,"schema":{"description":"ready, flagged, missing.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"campaigns.approveLeads","summary":"Approve, reject or reset leads, by ids, all, or a rule; or add leads by id.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"description":"approve, reject, include, exclude or reset. Omit to add leads.","type":"string","enum":["approve","reject","include","exclude","reset"]},"lead_ids":{"description":"Lead ids.","type":"array","items":{}},"all":{"description":"Apply to every lead.","type":"boolean"},"rule":{"description":"{min_icp_score, tiers, email_statuses}.","type":"object","additionalProperties":true},"added_from":{"description":"manual, csv or research when adding.","type":"string"}},"additionalProperties":true}}}}},"delete":{"operationId":"campaigns.removeLead","summary":"Remove a lead from a campaign.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lead_id":{"description":"Lead id.","type":"string"}},"required":["lead_id"],"additionalProperties":true}}}}}},"/campaigns/{id}/audience":{"post":{"operationId":"campaigns.audience","summary":"Next on the Leads step: save the filters and approve everyone ticked in that they match; the rest are left out.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"filters":{"description":"Same shape as audience_filters on campaigns.update; omitted uses the saved filters.","type":"object","additionalProperties":true}},"additionalProperties":true}}}}}},"/campaigns/{id}/leads/{leadId}":{"patch":{"operationId":"campaigns.leadOutcome","summary":"Set where a lead ended up in this campaign and what closing them was worth; typed by a person, never by the AI.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"leadId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"stage":{"description":"meeting, converted, closed, lost, or null to go back to what the sends say.","type":"string"},"revenue_usd":{"description":"Closed revenue in dollars (a number), or null.","type":"string"}},"additionalProperties":true}}}}}},"/campaigns/{id}/signature/defaults":{"get":{"operationId":"campaigns.signatureDefaults","summary":"What the signature template opens with: the saved fields, else the current signature, the profile photo and the workspace website.","tags":["Campaigns"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/campaigns/suggest-name":{"post":{"operationId":"campaigns.suggestName","summary":"A short campaign name from the lead lists picked, written by the fast model; falls back to the list name and month.","tags":["Campaigns"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"lead_list_ids":{"description":"Lead lists the campaign will use.","type":"array","items":{}}},"additionalProperties":true}}}}}},"/campaigns/{id}/workflow":{"get":{"operationId":"campaigns.getWorkflow","summary":"The campaign's own workflow: its copy of the sequence graph, or its straight-line steps drawn as one. Returns workflow, issues and locked.","tags":["Campaigns"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"put":{"operationId":"campaigns.setWorkflow","summary":"Replace the campaign's workflow before launch. Same graph as sequences.create (start, email, wait, if, action, end; edges by next, yes, no, reply; positions optional). Rewrites the steps and days; the sequence it came from is untouched.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"workflow":{"description":"{ nodes, edges }","type":"object","additionalProperties":true}},"required":["workflow"],"additionalProperties":true}}}}}},"/campaigns/{id}/sequence":{"post":{"operationId":"campaigns.setSequence","summary":"Apply a saved sequence (sequence_id) or write a fresh shape (shape, save_as). Locked after launch.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"sequence_id":{"description":"Saved sequence to apply.","type":"string"},"shape":{"description":"A fresh shape, same fields as sequences.create.","type":"object","additionalProperties":true},"save_as":{"description":"Save the fresh shape under this name.","type":"string"}},"additionalProperties":true}}}}}},"/campaigns/{id}/steps/{step}":{"patch":{"operationId":"campaigns.updateStep","summary":"Edit a step: purpose, notes, the day it sends, plain or rich body per variant (subject_a, body_a, body_html_a, content_mode). Shape fields lock after launch.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"step","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/campaigns/{id}/format":{"post":{"operationId":"campaigns.setFormat","summary":"Switch the whole campaign to plain text or rich HTML: every step and every lead's written copy converts, and the campaign sends in that format.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"description":"plain or rich.","type":"string"}},"required":["mode"],"additionalProperties":true}}}}}},"/campaigns/{id}/steps/{step}/rewrite":{"post":{"operationId":"campaigns.rewriteStep","summary":"Improve one step with AI: a job rewrites the subject and body in a variant on your instruction, then re-checks the guardrails.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"step","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"variant":{"description":"a, b or c, default a.","type":"string"},"instruction":{"description":"What to change: shorter, lead with the proof, drop the second paragraph.","type":"string"}},"additionalProperties":true}}}}}},"/campaigns/images":{"post":{"operationId":"campaigns.imageUpload","summary":"Upload an image for an email body (multipart, field file: PNG, JPEG, WebP or GIF under 5 MB); returns its public URL.","tags":["Campaigns"],"x-scope":"write","x-session-only":true,"parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/campaigns/{id}/generate":{"post":{"operationId":"campaigns.generate","summary":"Write the copy: one build job, then one job per approved lead in personalized mode.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"lead_ids":{"description":"Only these leads.","type":"array","items":{}},"regenerate":{"description":"Rewrite copy that already exists.","type":"boolean"},"models":{"description":"Model per copy step for this campaign, OpenRouter slugs: lead_copy (one call per lead), campaign_template (the template and step rewrites). Kept on the campaign.","type":"object","additionalProperties":true}},"additionalProperties":true}}}}}},"/campaigns/{id}/preview":{"get":{"operationId":"campaigns.preview","summary":"Rendered emails for a lead, every step and variant.","tags":["Campaigns"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lead_id","in":"query","required":false,"schema":{"description":"Lead to render.","type":"string"}},{"name":"step","in":"query","required":false,"schema":{"description":"Step number, default 1.","type":"integer"}},{"name":"variant","in":"query","required":false,"schema":{"description":"a, b or c: read a template step in this variation instead of the one the lead was dealt.","type":"string"}},{"name":"mailbox_id","in":"query","required":false,"schema":{"description":"The sending mailbox the signature and sender variables come from; the first campaign mailbox when omitted.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/campaigns/{id}/leads/{leadId}/copy":{"get":{"operationId":"campaigns.leadCopy","summary":"Copy rows for one lead.","tags":["Campaigns"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"leadId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"campaigns.updateLeadCopy","summary":"Edit one lead's copy for a step.","tags":["Campaigns"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"leadId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"step_number":{"description":"Step.","type":"integer"},"variant":{"description":"a, b or c.","type":"string"},"subject":{"description":"Subject.","type":"string"},"body":{"description":"Body.","type":"string"}},"required":["step_number"],"additionalProperties":true}}}}}},"/campaigns/{id}/test-send":{"post":{"operationId":"campaigns.testSend","summary":"Send one rendered email to an address you own.","tags":["Campaigns"],"x-scope":"send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lead_id":{"description":"Lead to render.","type":"string"},"step_number":{"description":"Step.","type":"integer"},"variant":{"description":"a, b or c for a template step; the lead's own otherwise.","type":"string"},"to":{"description":"Recipient; defaults to the signed-in user. Your own address, a member's or a workspace mailbox.","type":"string"},"mailbox_id":{"description":"Mailbox to send from.","type":"string"}},"required":["lead_id","step_number"],"additionalProperties":true}}}}}},"/campaigns/{id}/checklist":{"get":{"operationId":"campaigns.checklist","summary":"Launch checklist: what is ready and what blocks launch.","tags":["Campaigns"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/campaigns/{id}/launch":{"post":{"operationId":"campaigns.launch","summary":"Launch: enrolls approved leads, locks the shape, the runner sends inside the mailbox windows.","tags":["Campaigns"],"x-scope":"send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"description":"now or scheduled.","type":"string","enum":["now","scheduled"]},"scheduled_at":{"description":"ISO time when scheduled.","type":"string"},"scheduled_local":{"description":"Wall-clock start, YYYY-MM-DDTHH:mm, read in timezone.","type":"string"},"timezone":{"description":"IANA time zone for scheduled_local, kept on the campaign.","type":"string"}},"additionalProperties":true}}}}}},"/campaigns/{id}/status":{"post":{"operationId":"campaigns.setStatus","summary":"Pause, resume or cancel a live campaign.","tags":["Campaigns"],"x-scope":"send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"description":"pause, resume or cancel.","type":"string","enum":["pause","resume","cancel"]}},"required":["action"],"additionalProperties":true}}}}}},"/campaigns/{id}/activity":{"get":{"operationId":"campaigns.activity","summary":"Campaign timeline: sends, opens, clicks, replies, bounces, actions.","tags":["Campaigns"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/campaigns/{id}/warnings":{"get":{"operationId":"campaigns.warnings","summary":"Every guardrail note on the campaign's copy, one row per lead and email.","tags":["Campaigns"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/campaigns/{id}/sends":{"get":{"operationId":"campaigns.sends","summary":"Every email the campaign sent, newest first.","tags":["Campaigns"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Rows, default 200.","type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/campaigns/{id}/analytics":{"get":{"operationId":"campaigns.analytics","summary":"Campaign analytics: totals and rates, a by-day series, per-step results, bounces and unsubscribes.","tags":["Campaigns"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"all, 7d, 30d or 90d.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/reactivation":{"get":{"operationId":"reactivation.candidates","summary":"Leads quiet for a while who are worth another touch.","tags":["Campaigns"],"x-scope":"read","parameters":[{"name":"days","in":"query","required":false,"schema":{"description":"Quiet for at least this many days, 14 to 730, default 90.","type":"integer"}},{"name":"min_icp_score","in":"query","required":false,"schema":{"description":"Floor.","type":"integer"}},{"name":"tier","in":"query","required":false,"schema":{"description":"Tier to keep, repeatable.","type":"string"}},{"name":"include_never_touched","in":"query","required":false,"schema":{"description":"Include leads never emailed.","type":"boolean"}},{"name":"exclude_not_interested","in":"query","required":false,"schema":{"description":"Leave out leads who said not interested or unsubscribed, default true.","type":"boolean"}},{"name":"q","in":"query","required":false,"schema":{"description":"Search text.","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Rows, 1 to 1000, default 300.","type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"reactivation.launch","summary":"Create a reactivation campaign from chosen candidates.","tags":["Campaigns"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Campaign name.","type":"string"},"lead_ids":{"description":"Candidates.","type":"array","items":{}},"sequence_id":{"description":"Saved sequence to apply.","type":"string"},"icp_notes":{"description":"Notes for the writer.","type":"string"}},"required":["name","lead_ids"],"additionalProperties":true}}}}}},"/reactivation/build":{"post":{"operationId":"reactivation.build","summary":"Build a reactivation campaign from filters: quiet for n months, job titles, countries, instructions. Finds the leads and creates the campaign in one call.","tags":["Campaigns"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Campaign name.","type":"string"},"months":{"description":"Last contacted at least this many months ago, 1 to 24, default 3.","type":"integer"},"titles":{"description":"Job title fragments to match, any of them; empty means all.","type":"array","items":{}},"countries":{"description":"Countries to match; empty means all.","type":"array","items":{}},"instructions":{"description":"Additional instructions for the writer.","type":"string"},"sequence_id":{"description":"Saved sequence to apply.","type":"string"},"include_never_touched":{"description":"Include leads never emailed.","type":"boolean"},"limit":{"description":"Most leads to include, default 300.","type":"integer"}},"required":["name"],"additionalProperties":true}}}}}},"/mailboxes":{"get":{"operationId":"mailboxes.list","summary":"Mailboxes with health, warm-up, sends today, the last seven days of warm-up placement, and capacity.","tags":["Mailboxes"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"mailboxes.create","summary":"Connect a mailbox (SMTP and IMAP, sealed at rest).","tags":["Mailboxes"],"x-scope":"admin","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"description":"Address.","type":"string"},"display_name":{"description":"From name.","type":"string"},"smtp_host":{"description":"SMTP host.","type":"string"},"smtp_port":{"description":"SMTP port.","type":"integer"},"imap_host":{"description":"IMAP host.","type":"string"},"imap_port":{"description":"IMAP port.","type":"integer"},"username":{"description":"Login.","type":"string"},"password":{"description":"App password.","type":"string"},"daily_limit":{"description":"Sends per day.","type":"integer"}},"required":["email","smtp_host","imap_host","username","password"],"additionalProperties":true}}}}}},"/mailboxes/{id}":{"patch":{"operationId":"mailboxes.update","summary":"Edit a mailbox: name, limits, window, gap, days, timezone, password, warm-up (enabled, target per day, ramp days, reply rate, rescue from spam).","tags":["Mailboxes"],"x-scope":"admin","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"operationId":"mailboxes.delete","summary":"Remove a mailbox.","tags":["Mailboxes"],"x-scope":"admin","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/mailboxes/{id}/test":{"post":{"operationId":"mailboxes.test","summary":"Test the SMTP and IMAP connection.","tags":["Mailboxes"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/mailboxes/{id}/send-test":{"post":{"operationId":"mailboxes.sendTest","summary":"Send a test email from a mailbox.","tags":["Mailboxes"],"x-scope":"send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"to":{"description":"Recipient.","type":"string"}},"additionalProperties":true}}}}}},"/mailboxes/{id}/pause":{"post":{"operationId":"mailboxes.pause","summary":"Pause or resume a mailbox by hand.","tags":["Mailboxes"],"x-scope":"send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paused":{"description":"true to pause, false to resume.","type":"boolean"},"reason":{"description":"Why.","type":"string"}},"required":["paused"],"additionalProperties":true}}}}}},"/domains":{"get":{"operationId":"domains.list","summary":"Sending domains with DNS status.","tags":["Mailboxes"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"domains.create","summary":"Add a sending domain.","tags":["Mailboxes"],"x-scope":"admin","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"description":"Domain.","type":"string"}},"required":["domain"],"additionalProperties":true}}}}}},"/domains/{id}":{"get":{"operationId":"domains.get","summary":"One domain: status, checklist, DNS records, mailboxes and safe sends a day.","tags":["Mailboxes"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"domains.update","summary":"Edit a domain. status paused stops its mailboxes sending campaign email; warmup and replies keep running.","tags":["Mailboxes"],"x-scope":"admin","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"operationId":"domains.delete","summary":"Remove a domain from the app. Refused while a mailbox on it is connected; never touches a mailbox.","tags":["Mailboxes"],"x-scope":"admin","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/domains/planner":{"get":{"operationId":"domains.planner","summary":"How many domains and mailboxes a daily volume needs.","tags":["Mailboxes"],"x-scope":"read","parameters":[{"name":"daily","in":"query","required":false,"schema":{"description":"Target sends per day.","type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/deliverability":{"get":{"operationId":"deliverability.overview","summary":"Fleet health, score trend, per-mailbox breakdown, actions and the needs-a-human queue.","tags":["Deliverability"],"x-scope":"read","parameters":[{"name":"days","in":"query","required":false,"schema":{"description":"Window, default 30.","type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"deliverability.scan","summary":"Run the deliverability scan now.","tags":["Deliverability"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mailbox_id":{"description":"Only this mailbox.","type":"string"},"domain":{"description":"Only this domain and its mailboxes.","type":"string"}},"additionalProperties":true}}}}}},"/deliverability/actions/{actionId}":{"post":{"operationId":"deliverability.acknowledge","summary":"Acknowledge a needs-a-human action.","tags":["Deliverability"],"x-scope":"write","parameters":[{"name":"actionId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/inbox":{"get":{"operationId":"inbox.list","summary":"Inbox messages: matched replies by default, filters by classification, mailbox, campaign.","tags":["Inbox"],"x-scope":"read","parameters":[{"name":"view","in":"query","required":false,"schema":{"description":"replies, other or all.","type":"string"}},{"name":"classification","in":"query","required":false,"schema":{"description":"interested, meeting_request, information_request, not_interested, out_of_office, unsubscribe, bounce, other.","type":"string"}},{"name":"mailbox_id","in":"query","required":false,"schema":{"description":"Mailbox.","type":"string"}},{"name":"campaign_id","in":"query","required":false,"schema":{"description":"Campaign.","type":"string"}},{"name":"q","in":"query","required":false,"schema":{"description":"Search text.","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Rows.","type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"description":"Offset.","type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"inbox.poll","summary":"Poll mailboxes for new mail now.","tags":["Inbox"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mailbox_id":{"description":"Only this mailbox.","type":"string"}},"additionalProperties":true}}}}}},"/inbox/{id}":{"get":{"operationId":"inbox.thread","summary":"A message with its thread, classification and draft.","tags":["Inbox"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"inbox.updateMessage","summary":"Override a classification, mark handled, add notes.","tags":["Inbox"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"classification":{"description":"New classification.","type":"string"},"handled":{"description":"Handled.","type":"boolean"},"notes":{"description":"Notes.","type":"string"}},"additionalProperties":true}}}}},"delete":{"operationId":"inbox.deleteMessage","summary":"Delete a reply or bounce from the inbox.","tags":["Inbox"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/inbox/delete":{"post":{"operationId":"inbox.deleteMessages","summary":"Delete several replies or bounces at once (up to 500).","tags":["Inbox"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"description":"Message ids.","type":"array","items":{}}},"required":["ids"],"additionalProperties":true}}}}}},"/inbox/{id}/reply":{"post":{"operationId":"inbox.reply","summary":"Write and send a reply in the thread.","tags":["Inbox"],"x-scope":"send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body_html":{"description":"An HTML reply; its text twin is made from it.","type":"string"},"body":{"description":"Reply text.","type":"string"},"subject":{"description":"Subject override.","type":"string"}},"required":["body"],"additionalProperties":true}}}}}},"/inbox/{id}/reply/test":{"post":{"operationId":"inbox.replyTest","summary":"Send a written reply as a test to one address (yours by default), from the mailbox it would go out of.","tags":["Inbox"],"x-scope":"send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"description":"Subject.","type":"string"},"body":{"description":"Text body.","type":"string"},"body_html":{"description":"HTML body.","type":"string"},"to":{"description":"The address for the test.","type":"string"}},"additionalProperties":true}}}}}},"/inbox/crm":{"get":{"operationId":"inbox.crm","summary":"Every enrolled lead with its stage (no reply, replied, interested, meeting request, bounced and so on), the latest reply and counts per stage.","tags":["Inbox"],"x-scope":"read","parameters":[{"name":"stage","in":"query","required":false,"schema":{"description":"One stage to show.","type":"string"}},{"name":"campaign_id","in":"query","required":false,"schema":{"description":"Only this campaign.","type":"string"}},{"name":"mailbox_id","in":"query","required":false,"schema":{"description":"Only leads worked from this mailbox.","type":"string"}},{"name":"q","in":"query","required":false,"schema":{"description":"Name, email, company or campaign.","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Rows, default 300.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/inbox/crm/{enrollmentId}":{"get":{"operationId":"inbox.crmThread","summary":"One lead in one campaign: every email we sent, every reply, the drafts.","tags":["Inbox"],"x-scope":"read","parameters":[{"name":"enrollmentId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"inbox.crmStage","summary":"Move a lead to a stage by hand; past no reply this stops its sequence.","tags":["Inbox"],"x-scope":"write","parameters":[{"name":"enrollmentId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"stage":{"description":"no_reply, replied, interested, meeting_request, information_request, out_of_office, contact_later, wrong_person, not_interested, unsubscribed, bounced.","type":"string"}},"required":["stage"],"additionalProperties":true}}}}}},"/inbox/drafts":{"get":{"operationId":"inbox.drafts","summary":"Reply drafts the agent proposed.","tags":["Inbox"],"x-scope":"read","parameters":[{"name":"status","in":"query","required":false,"schema":{"description":"proposed, approved, rejected, sent.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/inbox/drafts/{draftId}":{"patch":{"operationId":"inbox.updateDraft","summary":"Edit a draft.","tags":["Inbox"],"x-scope":"write","parameters":[{"name":"draftId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"description":"Subject.","type":"string"},"body":{"description":"Body.","type":"string"}},"additionalProperties":true}}}}}},"/inbox/drafts/{draftId}/approve":{"post":{"operationId":"inbox.approveDraft","summary":"Approve a draft (optionally with edits); it sends threaded from the same mailbox.","tags":["Inbox"],"x-scope":"send","parameters":[{"name":"draftId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"description":"Subject override.","type":"string"},"body":{"description":"Body override.","type":"string"}},"additionalProperties":true}}}}}},"/inbox/drafts/{draftId}/reject":{"post":{"operationId":"inbox.rejectDraft","summary":"Reject a draft.","tags":["Inbox"],"x-scope":"write","parameters":[{"name":"draftId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"description":"Why.","type":"string"}},"additionalProperties":true}}}}}},"/signals":{"get":{"operationId":"signals.list","summary":"Signal watch rules.","tags":["Signals"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"signals.create","summary":"Add a signal watch rule.","tags":["Signals"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Name.","type":"string"},"query":{"description":"What to watch for, in a sentence.","type":"string"},"description":{"description":"What it means when it fires.","type":"string"},"category":{"description":"funding, leadership, expansion, hiring, launch, regulatory, partnership, award, trigger or custom.","type":"string"},"keywords":{"description":"Words a story must carry, up to 10.","type":"array","items":{}},"negative_keywords":{"description":"Words that rule a story out, up to 10.","type":"array","items":{}},"geographies":{"description":"Up to 5.","type":"array","items":{}},"industries":{"description":"Up to 6.","type":"array","items":{}},"action":{"description":"What a match does.","type":"string","enum":["lead_list_only","lead_list_and_campaign","notify_only"]},"sequence_id":{"description":"Sequence for campaigns it creates.","type":"string"},"icp_profile_id":{"description":"ICP to source against.","type":"string"},"enabled":{"description":"On or off.","type":"boolean"}},"required":["name","query"],"additionalProperties":true}}}}}},"/signals/{id}":{"patch":{"operationId":"signals.update","summary":"Edit a signal.","tags":["Signals"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"operationId":"signals.delete","summary":"Delete a signal.","tags":["Signals"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/signals/generate":{"post":{"operationId":"signals.generate","summary":"Design signals and feeds from the ICP.","tags":["Signals"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"icp_profile_id":{"description":"ICP to design from.","type":"string"}},"additionalProperties":true}}}}}},"/signals/scan":{"post":{"operationId":"signals.scan","summary":"Scan the feeds now.","tags":["Signals"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"feed_id":{"description":"Only this feed.","type":"string"}},"additionalProperties":true}}}}}},"/feeds":{"get":{"operationId":"feeds.list","summary":"RSS feeds.","tags":["Signals"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"feeds.create","summary":"Add a feed.","tags":["Signals"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"description":"Feed URL.","type":"string"},"name":{"description":"Name.","type":"string"},"signal_id":{"description":"Signal it belongs to.","type":"string"}},"required":["url"],"additionalProperties":true}}}}}},"/feeds/{id}":{"patch":{"operationId":"feeds.update","summary":"Edit a feed.","tags":["Signals"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"operationId":"feeds.delete","summary":"Delete a feed.","tags":["Signals"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/events":{"get":{"operationId":"events.list","summary":"Signal events with why they matter.","tags":["Signals"],"x-scope":"read","parameters":[{"name":"status","in":"query","required":false,"schema":{"description":"new, acted, dismissed.","type":"string"}},{"name":"signal_id","in":"query","required":false,"schema":{"description":"Signal.","type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Rows.","type":"integer"}},{"name":"since","in":"query","required":false,"schema":{"description":"Only events whose story happened from this ISO time on (found time when the story has no date).","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/events/{id}":{"get":{"operationId":"events.get","summary":"A signal event with its story cluster.","tags":["Signals"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/events/{id}/act":{"post":{"operationId":"events.act","summary":"Act on an event: build a lead list, optionally a campaign parked at Preview.","tags":["Signals"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"description":"lead_list_only or lead_list_and_campaign.","type":"string","enum":["lead_list_only","lead_list_and_campaign"]},"requested_count":{"description":"Leads to source from the company.","type":"integer"},"source":{"description":"apollo (default), moltsets or leadocean; another is used when the chosen one has no key or credit.","type":"string","enum":["apollo","moltsets","leadocean"]},"options":{"description":"What to enrich and the model per AI step, as on a lead search: verify, phone, research, posts (true or false), profile_tier (none, cheap, full), models ({ step: slug }).","type":"object","additionalProperties":true},"copy_models":{"description":"With a campaign: the model per copy step ({ lead_copy, campaign_template }).","type":"object","additionalProperties":true}},"additionalProperties":true}}}}}},"/events/{id}/dismiss":{"post":{"operationId":"events.dismiss","summary":"Dismiss an event.","tags":["Signals"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/learning":{"get":{"operationId":"learning.runs","summary":"Learning runs, insights, active rules and ICP refinements.","tags":["Learning"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"learning.run","summary":"Run the weekly digest or the monthly analysis now.","tags":["Learning"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"description":"weekly or monthly.","type":"string","enum":["weekly","monthly"]}},"additionalProperties":true}}}}}},"/learning/insights/{id}":{"post":{"operationId":"learning.decideInsight","summary":"Accept an insight as a copy rule (optionally for every lead) or ignore it.","tags":["Learning"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"description":"accept or ignore.","type":"string","enum":["accept","ignore"]},"rule_md":{"description":"Edited rule text.","type":"string"},"scope":{"description":"all to apply to every lead.","type":"string"}},"required":["decision"],"additionalProperties":true}}}}}},"/learning/refinements/{id}":{"post":{"operationId":"learning.decideRefinement","summary":"Apply an ICP refinement (creates the next version as default) or reject it.","tags":["Learning"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"description":"apply or reject.","type":"string","enum":["apply","reject"]},"keep":{"description":"Indexes of the changes to keep.","type":"array","items":{}}},"required":["decision"],"additionalProperties":true}}}}}},"/learning/rules":{"post":{"operationId":"learning.createRule","summary":"Add a copy rule by hand.","tags":["Learning"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rule_md":{"description":"One imperative sentence.","type":"string"},"segment":{"description":"{step, country, industry, tier, persona}.","type":"object","additionalProperties":true}},"required":["rule_md"],"additionalProperties":true}}}}}},"/learning/rules/{id}":{"post":{"operationId":"learning.retireRule","summary":"Retire or restore a copy rule.","tags":["Learning"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"retire":{"description":"true to retire, false to restore.","type":"boolean"}},"additionalProperties":true}}}}},"patch":{"operationId":"learning.updateRule","summary":"Edit a rule's text or segment.","tags":["Learning"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"rule_md":{"description":"Rule text.","type":"string"},"segment":{"description":"Segment; {} for every lead.","type":"object","additionalProperties":true}},"additionalProperties":true}}}}}},"/frameworks":{"get":{"operationId":"frameworks.list","summary":"Every framework with its numbers (leads, in campaign, sent, opened, replied, positive), expected reply rate and routing share.","tags":["Frameworks"],"x-scope":"read","parameters":[{"name":"category","in":"query","required":false,"schema":{"description":"opener, follow_up, closing or sequence.","type":"string","enum":["opener","follow_up","closing","sequence"]}},{"name":"status","in":"query","required":false,"schema":{"description":"active or paused.","type":"string","enum":["active","paused"]}},{"name":"search","in":"query","required":false,"schema":{"description":"Match on number, name or type.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"frameworks.create","summary":"Add a framework. It joins routing at once when it is active and needs no data the writer cannot see.","tags":["Frameworks"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Framework name.","type":"string"},"category":{"description":"Where it sits: opener, follow_up, closing, or sequence (several emails from the first).","type":"string","enum":["opener","follow_up","closing","sequence"]},"type":{"description":"Two or three words naming the approach, such as Problem agitate solve.","type":"string"},"step_from":{"description":"Earliest email it suits: 1 is the first email, 2 the first follow-up.","type":"integer"},"step_to":{"description":"Latest email it suits; null for any later email.","type":"integer"},"needs":{"description":"Data it depends on: signal, content, new_role, relationship, website_visit, behavior, asset, channel, investor, earnings. Only signal and content are seen on a lead; any other need means it is used only when a campaign names it.","type":"array","items":{}},"structure":{"description":"The parts in order: [{label, text}].","type":"array","items":{}},"how_it_works":{"description":"Two or three short points on why it works.","type":"array","items":{}},"example":{"description":"Complete example emails in order: [{label, subject, body}]; several for a sequence.","type":"array","items":{}},"example_kind":{"description":"emails when the examples are a run of emails in order, variants when they are alternatives (one per role, angle or trigger).","type":"string","enum":["emails","variants"]},"status":{"description":"active is routed, paused is not.","type":"string","enum":["active","paused"]}},"required":["name","category"],"additionalProperties":true}}}}}},"/frameworks/{id}":{"get":{"operationId":"frameworks.get","summary":"One framework: structure, example, numbers, routing share, and results by campaign and by step.","tags":["Frameworks"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"frameworks.update","summary":"Edit any field of a framework, pause or resume it (status), or renumber it (sno).","tags":["Frameworks"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Framework name.","type":"string"},"category":{"description":"Where it sits: opener, follow_up, closing, or sequence (several emails from the first).","type":"string","enum":["opener","follow_up","closing","sequence"]},"type":{"description":"Two or three words naming the approach, such as Problem agitate solve.","type":"string"},"step_from":{"description":"Earliest email it suits: 1 is the first email, 2 the first follow-up.","type":"integer"},"step_to":{"description":"Latest email it suits; null for any later email.","type":"integer"},"needs":{"description":"Data it depends on: signal, content, new_role, relationship, website_visit, behavior, asset, channel, investor, earnings. Only signal and content are seen on a lead; any other need means it is used only when a campaign names it.","type":"array","items":{}},"structure":{"description":"The parts in order: [{label, text}].","type":"array","items":{}},"how_it_works":{"description":"Two or three short points on why it works.","type":"array","items":{}},"example":{"description":"Complete example emails in order: [{label, subject, body}]; several for a sequence.","type":"array","items":{}},"example_kind":{"description":"emails when the examples are a run of emails in order, variants when they are alternatives (one per role, angle or trigger).","type":"string","enum":["emails","variants"]},"status":{"description":"active is routed, paused is not.","type":"string","enum":["active","paused"]},"sno":{"description":"Its number in the list.","type":"integer"}},"additionalProperties":true}}}}},"delete":{"operationId":"frameworks.delete","summary":"Delete a framework. Emails it wrote keep their text; a library framework stays deleted until the library is restored.","tags":["Frameworks"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/frameworks/restore":{"post":{"operationId":"frameworks.restore","summary":"Bring back every library framework this workspace deleted. Edited frameworks are left as they are.","tags":["Frameworks"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/usage":{"get":{"operationId":"usage.detail","summary":"Provider usage by tool, model, job type, operation, campaign, list and research run, plus the latest calls.","tags":["Usage and cost"],"x-scope":"read","parameters":[{"name":"range","in":"query","required":false,"schema":{"description":"Timeline: 7d, 30d, 90d or custom.","type":"string","enum":["7d","30d","90d","custom"]}},{"name":"from","in":"query","required":false,"schema":{"description":"Custom start date, YYYY-MM-DD.","type":"string"}},{"name":"to","in":"query","required":false,"schema":{"description":"Custom end date, YYYY-MM-DD.","type":"string"}},{"name":"provider","in":"query","required":false,"schema":{"description":"Only this provider.","type":"string"}},{"name":"campaign_id","in":"query","required":false,"schema":{"description":"Only this campaign.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/usage/summary":{"get":{"operationId":"usage.summary","summary":"Usage totals for the window.","tags":["Usage and cost"],"x-scope":"read","parameters":[{"name":"range","in":"query","required":false,"schema":{"description":"Timeline: 7d, 30d, 90d or custom.","type":"string","enum":["7d","30d","90d","custom"]}},{"name":"from","in":"query","required":false,"schema":{"description":"Custom start date, YYYY-MM-DD.","type":"string"}},{"name":"to","in":"query","required":false,"schema":{"description":"Custom end date, YYYY-MM-DD.","type":"string"}},{"name":"provider","in":"query","required":false,"schema":{"description":"Only this provider.","type":"string"}},{"name":"campaign_id","in":"query","required":false,"schema":{"description":"Only this campaign.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/cost":{"get":{"operationId":"cost.overview","summary":"Spend this month and to date, projection, cost per lead, per positive reply and per meeting, by value area, LLM and credit tables.","tags":["Usage and cost"],"x-scope":"read","parameters":[{"name":"range","in":"query","required":false,"schema":{"description":"Timeline: 7d, 30d, 90d or custom.","type":"string","enum":["7d","30d","90d","custom"]}},{"name":"from","in":"query","required":false,"schema":{"description":"Custom start date, YYYY-MM-DD.","type":"string"}},{"name":"to","in":"query","required":false,"schema":{"description":"Custom end date, YYYY-MM-DD.","type":"string"}},{"name":"provider","in":"query","required":false,"schema":{"description":"Only this provider.","type":"string"}},{"name":"campaign_id","in":"query","required":false,"schema":{"description":"Only this campaign.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/cost/fixed":{"get":{"operationId":"cost.fixed.list","summary":"Fixed subscriptions.","tags":["Usage and cost"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"cost.fixed.create","summary":"Add a fixed subscription.","tags":["Usage and cost"],"x-scope":"admin","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"description":"Tool.","type":"string"},"purpose":{"description":"Purpose.","type":"string"},"plan":{"description":"Plan.","type":"string"},"billing_cycle":{"description":"monthly or yearly.","type":"string"},"monthly_cost_usd":{"description":"Monthly cost.","type":"integer"}},"required":["tool","monthly_cost_usd"],"additionalProperties":true}}}}}},"/cost/fixed/{id}":{"patch":{"operationId":"cost.fixed.update","summary":"Edit a fixed subscription.","tags":["Usage and cost"],"x-scope":"admin","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"delete":{"operationId":"cost.fixed.delete","summary":"Remove a fixed subscription.","tags":["Usage and cost"],"x-scope":"admin","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/jobs":{"get":{"operationId":"jobs.list","summary":"Recent jobs with status and progress.","tags":["Jobs"],"x-scope":"read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"description":"Rows, default 50.","type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"jobs.enqueue","summary":"Queue one of the jobs that send nothing and spend only the workspace keys: a search preview, an inbox poll, a deliverability scan, a signals scan, a learning run, a timezone fill. Launches, sends, replies, copy, sourcing and the memory build have their own endpoints.","tags":["Jobs"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"description":"Job type.","type":"string","enum":["noop","lead_list.preview","inbox.poll","deliverability.scan","signals.scan","learning.weekly","learning.monthly","leads.timezone_fill"]},"payload":{"description":"The payload that type reads: params for a preview, mailbox_id for a poll, mailbox_id or domain for a deliverability scan, feed_id for a signals scan, force for a learning run, lead_id or lead_list_id for a timezone fill.","type":"object","additionalProperties":true},"priority":{"description":"Priority.","type":"integer"}},"required":["type"],"additionalProperties":true}}}}}},"/jobs/{id}":{"get":{"operationId":"jobs.get","summary":"A job with its events and result.","tags":["Jobs"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/projects":{"get":{"operationId":"projects.list","summary":"Projects with progress (work items done of open plus done).","tags":["Projects"],"x-scope":"read","parameters":[{"name":"status","in":"query","required":false,"schema":{"description":"planned, active, paused, completed or cancelled.","type":"string","enum":["planned","active","paused","completed","cancelled"]}},{"name":"q","in":"query","required":false,"schema":{"description":"Search the name, client and key.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"projects.create","summary":"Create a project with the default board (Backlog, Todo, In progress, Review, Done, Cancelled).","tags":["Projects"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Project name.","type":"string"},"identifier":{"description":"Short key for work item numbers, 2 to 10 capitals or digits (ACME); derived from the name when left out.","type":"string"},"description":{"description":"What the project is.","type":"string"},"client_name":{"description":"Client it is for.","type":"string"},"status":{"description":"planned, active, paused, completed or cancelled.","type":"string","enum":["planned","active","paused","completed","cancelled"]},"lead_id":{"description":"The lead it came from.","type":"string"},"owner_id":{"description":"Owner, a workspace member; the creator by default.","type":"string"},"start_date":{"description":"YYYY-MM-DD.","type":"string"},"target_date":{"description":"YYYY-MM-DD.","type":"string"}},"required":["name"],"additionalProperties":true}}}}}},"/projects/{id}":{"get":{"operationId":"projects.get","summary":"One project with its board states and linked lead.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"projects.update","summary":"Edit any field of a project.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Project name.","type":"string"},"identifier":{"description":"Short key for work item numbers, 2 to 10 capitals or digits (ACME); derived from the name when left out.","type":"string"},"description":{"description":"What the project is.","type":"string"},"client_name":{"description":"Client it is for.","type":"string"},"status":{"description":"planned, active, paused, completed or cancelled.","type":"string","enum":["planned","active","paused","completed","cancelled"]},"lead_id":{"description":"The lead it came from.","type":"string"},"owner_id":{"description":"Owner, a workspace member; the creator by default.","type":"string"},"start_date":{"description":"YYYY-MM-DD.","type":"string"},"target_date":{"description":"YYYY-MM-DD.","type":"string"}},"additionalProperties":true}}}}},"delete":{"operationId":"projects.delete","summary":"Delete a project with its work items, updates, files and pages.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/states":{"post":{"operationId":"projects.states.create","summary":"Add a column to the board.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Column name.","type":"string"},"state_group":{"description":"backlog, unstarted, started, completed or cancelled; completed columns count as done.","type":"string","enum":["backlog","unstarted","started","completed","cancelled"]},"color":{"description":"Hex colour, #RRGGBB.","type":"string"},"position":{"description":"Order on the board.","type":"integer"}},"additionalProperties":true}}}}}},"/projects/{id}/states/{stateId}":{"patch":{"operationId":"projects.states.update","summary":"Rename, regroup, recolour or move a board column.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"stateId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Column name.","type":"string"},"state_group":{"description":"backlog, unstarted, started, completed or cancelled; completed columns count as done.","type":"string","enum":["backlog","unstarted","started","completed","cancelled"]},"color":{"description":"Hex colour, #RRGGBB.","type":"string"},"position":{"description":"Order on the board.","type":"integer"}},"additionalProperties":true}}}}},"delete":{"operationId":"projects.states.delete","summary":"Remove a board column; a column with work items needs move_to.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"stateId","in":"path","required":true,"schema":{"type":"string"}},{"name":"move_to","in":"query","required":false,"schema":{"description":"State the column's work items move to.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/items":{"get":{"operationId":"projects.items.list","summary":"Work items on a project in board order.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"state_id","in":"query","required":false,"schema":{"description":"Only this column.","type":"string"}},{"name":"assignee_id","in":"query","required":false,"schema":{"description":"Only this person.","type":"string"}},{"name":"priority","in":"query","required":false,"schema":{"description":"urgent, high, medium, low or none.","type":"string"}},{"name":"q","in":"query","required":false,"schema":{"description":"Search the titles.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"projects.items.create","summary":"Add a work item; it lands in the first Todo column unless state_id says otherwise.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"Title.","type":"string"},"description_md":{"description":"Description.","type":"string"},"state_id":{"description":"Board column.","type":"string"},"priority":{"description":"urgent, high, medium, low or none.","type":"string","enum":["urgent","high","medium","low","none"]},"assignee_id":{"description":"A workspace member.","type":"string"},"start_date":{"description":"YYYY-MM-DD.","type":"string"},"due_date":{"description":"YYYY-MM-DD.","type":"string"},"labels":{"description":"Labels.","type":"array","items":{}},"parent_id":{"description":"Parent work item on the same project.","type":"string"},"position":{"description":"Order within the column (a number; lower is higher).","type":"string"},"client_visible":{"description":"Show it on the client portal.","type":"boolean"}},"required":["title"],"additionalProperties":true}}}}}},"/projects/{id}/items/{itemId}":{"get":{"operationId":"projects.items.get","summary":"One work item with its comments and sub-items.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"itemId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"projects.items.update","summary":"Edit a work item; moving it to a Done column stamps completed_at.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"itemId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"Title.","type":"string"},"description_md":{"description":"Description.","type":"string"},"state_id":{"description":"Board column.","type":"string"},"priority":{"description":"urgent, high, medium, low or none.","type":"string","enum":["urgent","high","medium","low","none"]},"assignee_id":{"description":"A workspace member.","type":"string"},"start_date":{"description":"YYYY-MM-DD.","type":"string"},"due_date":{"description":"YYYY-MM-DD.","type":"string"},"labels":{"description":"Labels.","type":"array","items":{}},"parent_id":{"description":"Parent work item on the same project.","type":"string"},"position":{"description":"Order within the column (a number; lower is higher).","type":"string"},"client_visible":{"description":"Show it on the client portal.","type":"boolean"}},"additionalProperties":true}}}}},"delete":{"operationId":"projects.items.delete","summary":"Delete a work item.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"itemId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/items/{itemId}/comments":{"post":{"operationId":"projects.comments.create","summary":"Comment on a work item.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"itemId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body_md":{"description":"Comment text.","type":"string"}},"required":["body_md"],"additionalProperties":true}}}}}},"/projects/{id}/items/{itemId}/comments/{commentId}":{"delete":{"operationId":"projects.comments.delete","summary":"Delete one of your own comments.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"itemId","in":"path","required":true,"schema":{"type":"string"}},{"name":"commentId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/updates":{"get":{"operationId":"projects.updates.list","summary":"Status updates, newest first.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"projects.updates.create","summary":"Post a status update.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body_md":{"description":"The update.","type":"string"},"health":{"description":"on_track, at_risk or off_track.","type":"string","enum":["on_track","at_risk","off_track"]},"client_visible":{"description":"Show it on the client portal.","type":"boolean"}},"additionalProperties":true}}}}}},"/projects/{id}/updates/{updateId}":{"patch":{"operationId":"projects.updates.update","summary":"Edit a status update.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"updateId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"body_md":{"description":"The update.","type":"string"},"health":{"description":"on_track, at_risk or off_track.","type":"string","enum":["on_track","at_risk","off_track"]},"client_visible":{"description":"Show it on the client portal.","type":"boolean"}},"additionalProperties":true}}}}},"delete":{"operationId":"projects.updates.delete","summary":"Delete a status update.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"updateId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/files":{"get":{"operationId":"projects.files.list","summary":"Files on a project.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"projects.files.upload","summary":"Upload a file (multipart: file, kind, name, client_visible). PDF, Office, CSV, text, images or ZIP up to 50 MB.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"},"kind":{"type":"string","enum":["leads","companies"]}},"required":["file"]}}}}}},"/projects/{id}/files/{fileId}":{"patch":{"operationId":"projects.files.update","summary":"Rename a file, change its kind or its client visibility.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"fileId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Display name.","type":"string"},"kind":{"description":"proposal, agreement, deliverable, invoice or other.","type":"string"},"client_visible":{"description":"Show it on the client portal.","type":"boolean"}},"additionalProperties":true}}}}},"delete":{"operationId":"projects.files.delete","summary":"Delete a file.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"fileId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/files/{fileId}/link":{"get":{"operationId":"projects.files.link","summary":"A signed link to the file, valid ten minutes.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"fileId","in":"path","required":true,"schema":{"type":"string"}},{"name":"download","in":"query","required":false,"schema":{"description":"1 to download instead of open.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/deals":{"get":{"operationId":"deals.list","summary":"Deals in pipeline order with the next and last call and whether a recording exists.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"lead_id","in":"query","required":false,"schema":{"description":"Only the deals linked to this lead.","type":"string"}},{"name":"stage","in":"query","required":false,"schema":{"description":"booked, prepped, held, follow_up, no_show, proposal_sent, won or lost.","type":"string","enum":["booked","prepped","held","follow_up","no_show","proposal_sent","won","lost"]}},{"name":"q","in":"query","required":false,"schema":{"description":"Search the title, contact, email and company.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"deals.create","summary":"Open a deal by hand (bookings open their own).","tags":["Clients"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"Deal name, usually the company.","type":"string"},"contact_name":{"description":"The prospect.","type":"string"},"contact_email":{"description":"Their email; the syncs match bookings and recordings on it.","type":"string"},"owner_id":{"description":"The member who owns the deal; only an owner or admin sets it.","type":"string"},"company_name":{"description":"Company.","type":"string"},"company_website":{"description":"http or https link.","type":"string"},"stage":{"description":"booked, prepped, held, follow_up, no_show, proposal_sent, won or lost.","type":"string","enum":["booked","prepped","held","follow_up","no_show","proposal_sent","won","lost"]},"value_usd":{"description":"Deal value in USD.","type":"integer"},"lost_reason":{"description":"Why it was lost.","type":"string"},"follow_up_at":{"description":"Follow up on, YYYY-MM-DD.","type":"string"},"next_step":{"description":"The next step with this prospect.","type":"string"},"lead_id":{"description":"The lead it belongs to.","type":"string"},"position":{"description":"Order within the stage column (higher shows first).","type":"string"}},"required":["title"],"additionalProperties":true}}}}}},"/deals/{id}":{"get":{"operationId":"deals.get","summary":"The client record: the deal, its bookings with answers, recordings, links, lead and project.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"deals.update","summary":"Edit a deal. A stage set here is never moved by the syncs again.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"Deal name, usually the company.","type":"string"},"contact_name":{"description":"The prospect.","type":"string"},"contact_email":{"description":"Their email; the syncs match bookings and recordings on it.","type":"string"},"owner_id":{"description":"The member who owns the deal; only an owner or admin sets it.","type":"string"},"company_name":{"description":"Company.","type":"string"},"company_website":{"description":"http or https link.","type":"string"},"stage":{"description":"booked, prepped, held, follow_up, no_show, proposal_sent, won or lost.","type":"string","enum":["booked","prepped","held","follow_up","no_show","proposal_sent","won","lost"]},"value_usd":{"description":"Deal value in USD.","type":"integer"},"lost_reason":{"description":"Why it was lost.","type":"string"},"follow_up_at":{"description":"Follow up on, YYYY-MM-DD.","type":"string"},"next_step":{"description":"The next step with this prospect.","type":"string"},"lead_id":{"description":"The lead it belongs to.","type":"string"},"position":{"description":"Order within the stage column (higher shows first).","type":"string"}},"additionalProperties":true}}}}},"delete":{"operationId":"deals.delete","summary":"Delete a deal. Its bookings and recordings stay, unlinked.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/deals/{id}/project":{"post":{"operationId":"deals.project","summary":"Mark the deal won and open its client project (returns the existing one if already open).","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Project name; the company plus onboarding by default.","type":"string"},"identifier":{"description":"Project key, 2 to 10 capitals or digits.","type":"string"}},"additionalProperties":true}}}}}},"/deals/{id}/emails":{"get":{"operationId":"deals.emails","summary":"Every email with the prospect: replies received and emails sent to their lead, newest first.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/deals/{id}/emails/search":{"get":{"operationId":"deals.emails.search","summary":"Search the workspace's client mailboxes for an email to link to this deal; the contact's domain first.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"description":"Subject or sender contains.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/deals/{id}/emails/link":{"post":{"operationId":"deals.emails.link","summary":"Link a received email to this deal; a copy is kept on the deal.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"message_id":{"description":"The inbox message id from the search.","type":"string"}},"required":["message_id"],"additionalProperties":true}}}}}},"/deals/{id}/emails/link/{linkId}":{"delete":{"operationId":"deals.emails.unlink","summary":"Remove a linked email from this deal.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/bookings":{"get":{"operationId":"bookings.list","summary":"Cal.com bookings with the attendee and their form answers.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"when","in":"query","required":false,"schema":{"description":"upcoming or past; all when left out.","type":"string","enum":["upcoming","past"]}},{"name":"q","in":"query","required":false,"schema":{"description":"Search the attendee and title.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/bookings/{id}":{"delete":{"operationId":"bookings.delete","summary":"Delete a meeting from Bookings. It is hidden, so the Cal.com sync does not bring it back; its deal keeps its history.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/bookings/{id}/nurture":{"get":{"operationId":"bookings.nurture","summary":"Every booked sequence on this booking: on or off, and each email with its time and state (scheduled, waiting for approval, sent, skipped and why).","tags":["Clients"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"bookings.nurture.set","summary":"Turn a booked sequence on or off for this booking; off skips what is waiting.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sequence_id":{"description":"The sequence.","type":"string"},"on":{"description":"On or off.","type":"boolean"}},"required":["sequence_id","on"],"additionalProperties":true}}}}}},"/bookings/{id}/nurture/steps/{stepId}":{"post":{"operationId":"bookings.nurture.step","summary":"Turn one nurture email on or off for this booking; an email already sent cannot change.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"stepId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"on":{"description":"On or off.","type":"boolean"}},"required":["on"],"additionalProperties":true}}}}}},"/bookings/{id}/nurture/steps/{stepId}/preview":{"get":{"operationId":"bookings.nurture.preview","summary":"One booked email as this client gets it: subject, sender, recipient and the body with the booking date, time, names and links filled in, then the signature and footer.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"stepId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/recordings":{"get":{"operationId":"recordings.list","summary":"Fathom recordings with summary, share link and embed link.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"q","in":"query","required":false,"schema":{"description":"Search the titles.","type":"string"}},{"name":"matched","in":"query","required":false,"schema":{"description":"yes for recordings on a deal, no for the rest.","type":"string","enum":["yes","no"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/recordings/{id}":{"get":{"operationId":"recordings.get","summary":"One recording with the full transcript (speaker, text, timestamp) and action items.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"recordings.attach","summary":"Attach a recording to a deal, or detach it with null.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"deal_id":{"description":"The deal, or null.","type":"string"}},"required":["deal_id"],"additionalProperties":true}}}}},"delete":{"operationId":"recordings.delete","summary":"Delete a recording; the sync never stores it again.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/links":{"get":{"operationId":"links.list","summary":"Links on a deal or a project: videos, Docs, anything with a URL.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"entity_type","in":"query","required":true,"schema":{"description":"deal or project.","type":"string","enum":["deal","project"]}},{"name":"entity_id","in":"query","required":true,"schema":{"description":"The record.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"links.create","summary":"Add a link; the kind (video, doc, link) is read off the URL when left out.","tags":["Clients"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entity_type":{"description":"deal or project.","type":"string","enum":["deal","project"]},"entity_id":{"description":"The record.","type":"string"},"title":{"description":"Title.","type":"string"},"url":{"description":"http or https link.","type":"string"},"kind":{"description":"video, doc or link.","type":"string","enum":["video","doc","link"]},"client_visible":{"description":"Show it on the client portal.","type":"boolean"}},"required":["entity_type","entity_id","title","url"],"additionalProperties":true}}}}}},"/links/{id}":{"patch":{"operationId":"links.update","summary":"Edit a link.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"Title.","type":"string"},"url":{"description":"http or https link.","type":"string"},"kind":{"description":"video, doc or link.","type":"string"},"client_visible":{"description":"Show it on the client portal.","type":"boolean"}},"additionalProperties":true}}}}},"delete":{"operationId":"links.delete","summary":"Remove a link.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/integrations":{"get":{"operationId":"integrations.status","summary":"Cal.com and Fathom: connected, last sync, what it found, settings.","tags":["Clients"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/integrations/{provider}/sync":{"post":{"operationId":"integrations.sync","summary":"Sync Cal.com or Fathom now (provider calcom or fathom); returns the job.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"full":{"description":"Fathom: read the last 365 days instead of what is new.","type":"boolean"}},"additionalProperties":true}}}}}},"/integrations/{provider}":{"patch":{"operationId":"integrations.config","summary":"Cal.com settings: the event types that count as sales calls (empty for every event type you host) and addresses that never open a deal.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"event_types":{"description":"Event type slugs, such as custom-ai-agent-consultation.","type":"array","items":{}},"ignore_emails":{"description":"Your own addresses, so a test booking never becomes a deal. Workspace members are skipped already.","type":"array","items":{}}},"additionalProperties":true}}}}}},"/integrations/calcom/event-types":{"get":{"operationId":"integrations.eventTypes","summary":"Cal.com event types seen in the bookings so far, with counts.","tags":["Clients"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/deals/{id}/documents":{"get":{"operationId":"documents.list","summary":"Documents on a deal, newest first, without the body.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"documents.generate","summary":"Write a document on the deal: discovery_brief, sales_script, proposal, call_grade, follow_up_email or recap. Queues a job; the model defaults to the workspace's fast model. Estimate first with GET /settings/models/plan?scope=deals.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"description":"What to write.","type":"string","enum":["discovery_brief","sales_script","proposal","call_grade","follow_up_email","recap"]},"model":{"description":"OpenRouter slug, such as anthropic/claude-haiku-5.5.","type":"string"}},"required":["kind"],"additionalProperties":true}}}}}},"/deals/{id}/documents/import":{"post":{"operationId":"documents.import","summary":"Import a document written elsewhere (Claude Code, /discover): html or markdown, sanitised into the same format.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"description":"discovery_brief, sales_script, proposal, call_grade, follow_up_email, recap or other.","type":"string"},"title":{"description":"Title.","type":"string"},"html":{"description":"The document as HTML.","type":"string"},"markdown":{"description":"Or as Markdown.","type":"string"},"client_visible":{"description":"Show it on the client portal.","type":"boolean"}},"additionalProperties":true}}}}}},"/deals/{id}/documents/upload":{"post":{"operationId":"documents.upload","summary":"Upload the real file onto a deal (multipart: file, kind, title): a proposal or agreement PDF, a Word file, a deck. It is kept and shown as itself.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"},"kind":{"type":"string","enum":["leads","companies"]}},"required":["file"]}}}}}},"/documents/{id}/file":{"get":{"operationId":"documents.file","summary":"A ten-minute link to an uploaded document's file (download=1 to download).","tags":["Clients"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"download","in":"query","required":false,"schema":{"description":"1 to download instead of view.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/deals/{id}/documents/drive":{"post":{"operationId":"deals.documents.drive","summary":"Attach a file from the caller's Google Drive to a deal; it opens in Google's own viewer and editor.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file_id":{"description":"The Drive file id.","type":"string"},"kind":{"description":"discovery_brief, sales_script, proposal, call_grade, follow_up_email, recap or other.","type":"string"}},"required":["file_id"],"additionalProperties":true}}}}}},"/deals/{id}/documents/google-doc":{"post":{"operationId":"documents.googleDoc","summary":"Bring a Google Doc onto a deal as a document, linked so Sync pulls its latest text (the person's Google connection, or a Doc shared by link).","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"description":"The Google Doc link.","type":"string"},"kind":{"description":"discovery_brief, sales_script, proposal, call_grade, follow_up_email, recap or other.","type":"string"},"title":{"description":"Title; the Doc's own by default.","type":"string"}},"required":["url"],"additionalProperties":true}}}}}},"/documents/{id}/sync":{"post":{"operationId":"documents.sync","summary":"Pull the latest text from the Google Doc a document is linked to.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/documents/{id}":{"get":{"operationId":"documents.get","summary":"One document with its HTML.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"documents.update","summary":"Rename a document, change its client visibility, or replace its HTML.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"Title.","type":"string"},"client_visible":{"description":"Show it on the client portal.","type":"boolean"},"html_b64":{"description":"The same HTML base64 encoded (UTF-8).","type":"string"},"html":{"description":"New HTML.","type":"string"}},"additionalProperties":true}}}}},"delete":{"operationId":"documents.delete","summary":"Delete a document.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/settings/clients":{"get":{"operationId":"settings.clients","summary":"Client settings: documents written on booking and their models, nurture and portal settings.","tags":["Settings"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"settings.clientsUpdate","summary":"Change client settings: documents written on booking and after a call, their models, quiet-client days, the morning digest, the kickoff and booking links, the onboarding template.","tags":["Settings"],"x-scope":"admin","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"auto_documents":{"description":"Documents written the moment a call is booked: discovery_brief, sales_script.","type":"array","items":{}},"auto_after_call":{"description":"Documents written when the call recording lands: recap, follow_up_email, call_grade, proposal.","type":"array","items":{}},"document_models":{"description":"Model per document kind.","type":"object","additionalProperties":true},"quiet_days":{"description":"Days without client activity before a quiet-client alert (14).","type":"integer"},"digest":{"description":"The morning digest in the bell (on unless false).","type":"boolean"},"digest_email":{"description":"Also email the digest to owners and admins.","type":"boolean"},"kickoff_url":{"description":"The link clients book the kickoff with.","type":"string"},"booking_url":{"description":"The booking link nurture emails use; the Cal.com account when left out.","type":"string"},"onboarding":{"description":"Onboarding template: {items, milestones, questions}.","type":"object","additionalProperties":true},"onboarding_email":{"description":"The onboarding email: {subject, body}, tags {{first_name}} {{last_name}} {{company}} {{portal_link}} {{booking_link}} {{sender_name}}.","type":"object","additionalProperties":true}},"additionalProperties":true}}}}}},"/nurture/sequences":{"get":{"operationId":"nurture.sequences","summary":"Nurture sequences with their step count, emails sent and drafts waiting.","tags":["Clients"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"nurture.create","summary":"Create a sequence: a trigger (booked, no_show, follow_up, won) and timed steps.","tags":["Clients"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Name.","type":"string"},"trigger":{"description":"booked, no_show, follow_up or won.","type":"string","enum":["booked","no_show","follow_up","won"]},"category":{"description":"pre_call, post_call, follow_up, onboarding or no_show.","type":"string","enum":["pre_call","post_call","follow_up","onboarding","no_show"]},"status":{"description":"active or paused.","type":"string","enum":["active","paused"]},"auto_send":{"description":"Send without approval.","type":"boolean"},"enroll_mode":{"description":"auto enrols every booking; manual waits for you to turn it on per booking.","type":"string","enum":["auto","manual"]},"mailbox_id":{"description":"Mailbox it sends from; the first sending mailbox when left out.","type":"string"},"steps":{"description":"Steps in order: [{mailbox_id (a client mailbox, optional), anchor (booked_at, meeting_start, meeting_end, stage_entered), offset_minutes (negative is before the anchor), subject, body, content_mode (plain or rich), body_html (the HTML of a rich email; its plain body is worked out from it), condition (replied, no_reply, no_show, showed), answer_match (a branch: only clients whose booking answer equals it; * takes the clients no other branch at the same time took), variant (a or b: an A/B split of a branch, half the deals each)}]. Merge tags: {{first_name}}, {{name}}, {{company}}, {{event_name}}, {{looking_for}} (what they want to implement, from the booking form), {{meeting_date}}, {{meeting_hour}} (in the client's time zone), {{meeting_time}}, {{meeting_link}}, {{booking_link}}, {{reschedule_link}}, {{sender_name}}; {{key|fallback}} fills a blank.","type":"array","items":{}},"signature":{"description":"The sequence signature, HTML or plain text; it replaces the mailbox signature.","type":"string"},"signature_format":{"description":"template, html or plain.","type":"string","enum":["template","html","plain"]},"signature_fields":{"description":"Template fields: {sign_off, title, photo_url, linkedin_url, site_label, site_url}.","type":"object","additionalProperties":true}},"additionalProperties":true}}}}}},"/nurture/sequences/{id}":{"get":{"operationId":"nurture.get","summary":"One sequence with its steps.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"patch":{"operationId":"nurture.update","summary":"Edit a sequence; steps sent here replace the old ones.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Name.","type":"string"},"trigger":{"description":"booked, no_show, follow_up or won.","type":"string","enum":["booked","no_show","follow_up","won"]},"category":{"description":"pre_call, post_call, follow_up, onboarding or no_show.","type":"string","enum":["pre_call","post_call","follow_up","onboarding","no_show"]},"status":{"description":"active or paused.","type":"string","enum":["active","paused"]},"auto_send":{"description":"Send without approval.","type":"boolean"},"enroll_mode":{"description":"auto enrols every booking; manual waits for you to turn it on per booking.","type":"string","enum":["auto","manual"]},"mailbox_id":{"description":"Mailbox it sends from; the first sending mailbox when left out.","type":"string"},"steps":{"description":"Steps in order: [{mailbox_id (a client mailbox, optional), anchor (booked_at, meeting_start, meeting_end, stage_entered), offset_minutes (negative is before the anchor), subject, body, content_mode (plain or rich), body_html (the HTML of a rich email; its plain body is worked out from it), condition (replied, no_reply, no_show, showed), answer_match (a branch: only clients whose booking answer equals it; * takes the clients no other branch at the same time took), variant (a or b: an A/B split of a branch, half the deals each)}]. Merge tags: {{first_name}}, {{name}}, {{company}}, {{event_name}}, {{looking_for}} (what they want to implement, from the booking form), {{meeting_date}}, {{meeting_hour}} (in the client's time zone), {{meeting_time}}, {{meeting_link}}, {{booking_link}}, {{reschedule_link}}, {{sender_name}}; {{key|fallback}} fills a blank.","type":"array","items":{}},"signature":{"description":"The sequence signature, HTML or plain text; it replaces the mailbox signature.","type":"string"},"signature_format":{"description":"template, html or plain.","type":"string","enum":["template","html","plain"]},"signature_fields":{"description":"Template fields: {sign_off, title, photo_url, linkedin_url, site_label, site_url}.","type":"object","additionalProperties":true}},"additionalProperties":true}}}}},"delete":{"operationId":"nurture.delete","summary":"Delete a sequence and its waiting drafts.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/nurture/sequences/{id}/signature/defaults":{"get":{"operationId":"nurture.signatureDefaults","summary":"What the sequence signature template opens with: the saved fields, else the current signature, the profile photo and the workspace website.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/nurture/starters":{"post":{"operationId":"nurture.starters","summary":"Add the three starter sequences (Before the call, No-show rebook, After the call) that are not there yet.","tags":["Clients"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/nurture/test":{"post":{"operationId":"nurture.testSend","summary":"Send one nurture email to your own address as a test, tags filled with sample values, from a client mailbox with its signature.","tags":["Clients"],"x-scope":"send","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"description":"Subject.","type":"string"},"body":{"description":"Body of a plain email.","type":"string"},"content_mode":{"description":"plain or rich.","type":"string","enum":["plain","rich"]},"body_html":{"description":"The HTML of a rich email.","type":"string"},"sequence_id":{"description":"Sends with this sequence's signature.","type":"string"},"mailbox_id":{"description":"Client mailbox to send from; the first one when left out.","type":"string"},"to":{"description":"Recipient; defaults to you. Your own address, a member's or a workspace mailbox.","type":"string"}},"required":["subject"],"additionalProperties":true}}}}}},"/nurture/run":{"post":{"operationId":"nurture.run","summary":"Run the nurture pass now: enrol, draft what is due, send what is approved.","tags":["Clients"],"x-scope":"send","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/nurture/drafts":{"get":{"operationId":"nurture.drafts","summary":"The approval queue: drafts by status (proposed by default), soonest first.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"status","in":"query","required":false,"schema":{"description":"proposed, approved, sent, skipped, failed, or all.","type":"string","enum":["proposed","approved","sent","skipped","failed","all"]}},{"name":"deal_id","in":"query","required":false,"schema":{"description":"Only this deal.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/nurture/drafts/{id}":{"patch":{"operationId":"nurture.draftUpdate","summary":"Edit a draft for this client before it goes: subject, body (text or HTML), the client mailbox it goes from, the address.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"body_html":{"description":"The HTML body, edited in place.","type":"string"},"mailbox_id":{"description":"A client mailbox.","type":"string"},"to_email":{"description":"The address it goes to.","type":"string"},"subject":{"description":"Subject.","type":"string"},"body":{"description":"Body.","type":"string"}},"additionalProperties":true}}}}}},"/nurture/drafts/{id}/preview":{"get":{"operationId":"nurture.draftPreview","summary":"A draft as it will land: subject, sender, recipient, the body with its signature and footer, and the client mailboxes it can go from.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/nurture/drafts/{id}/send":{"post":{"operationId":"nurture.sendNow","summary":"Approve a draft and send it now.","tags":["Clients"],"x-scope":"send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/nurture/drafts/{id}/approve":{"post":{"operationId":"nurture.approve","summary":"Approve a draft: it sends when due.","tags":["Clients"],"x-scope":"send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/nurture/drafts/{id}/skip":{"post":{"operationId":"nurture.skip","summary":"Skip a draft: it never sends.","tags":["Clients"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/nurture/drafts/approve":{"post":{"operationId":"nurture.approveMany","summary":"Approve several drafts at once.","tags":["Clients"],"x-scope":"send","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"description":"Draft ids.","type":"array","items":{}}},"required":["ids"],"additionalProperties":true}}}}}},"/deals/{id}/nurture":{"get":{"operationId":"deals.nurture","summary":"Every nurture email on a deal: waiting, approved, sent, skipped.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/projects/{id}/members":{"get":{"operationId":"projects.members.list","summary":"The people on a project. A member sees the projects they are on, own or hold a work item in; owners and admins see every project.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"projects.members.add","summary":"Put a workspace member on a project, so they see it, its client and its deal (owner or admin).","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"user_id":{"description":"The workspace member.","type":"string"}},"required":["user_id"],"additionalProperties":true}}}}}},"/projects/{id}/members/{userId}":{"delete":{"operationId":"projects.members.remove","summary":"Take a person off a project (owner or admin).","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"userId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/milestones":{"get":{"operationId":"projects.milestones.list","summary":"The roadmap: milestones in order.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"projects.milestones.create","summary":"Add a milestone to the roadmap.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Milestone.","type":"string"},"description":{"description":"What it means.","type":"string"},"due_date":{"description":"YYYY-MM-DD.","type":"string"},"status":{"description":"planned, in_progress or done.","type":"string","enum":["planned","in_progress","done"]},"position":{"description":"Order.","type":"integer"},"client_visible":{"description":"Show it on the portal (default yes).","type":"boolean"}},"additionalProperties":true}}}}}},"/projects/{id}/milestones/{milestoneId}":{"patch":{"operationId":"projects.milestones.update","summary":"Edit a milestone.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"milestoneId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Milestone.","type":"string"},"description":{"description":"What it means.","type":"string"},"due_date":{"description":"YYYY-MM-DD.","type":"string"},"status":{"description":"planned, in_progress or done.","type":"string","enum":["planned","in_progress","done"]},"position":{"description":"Order.","type":"integer"},"client_visible":{"description":"Show it on the portal (default yes).","type":"boolean"}},"additionalProperties":true}}}}},"delete":{"operationId":"projects.milestones.delete","summary":"Remove a milestone.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"milestoneId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/results":{"get":{"operationId":"projects.results.list","summary":"The results tracker: each metric with its baseline, target and current value.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"projects.results.create","summary":"Track a result.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"metric":{"description":"What is measured, such as Qualified meetings a month.","type":"string"},"unit":{"description":"Unit, such as meetings or %.","type":"string"},"baseline":{"description":"Where it started.","type":"integer"},"target":{"description":"The goal.","type":"integer"},"current":{"description":"Where it is now.","type":"integer"},"position":{"description":"Order.","type":"integer"},"client_visible":{"description":"Show it on the portal (default yes).","type":"boolean"}},"additionalProperties":true}}}}}},"/projects/{id}/results/{resultId}":{"patch":{"operationId":"projects.results.update","summary":"Update a result, usually its current value.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"resultId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"metric":{"description":"What is measured, such as Qualified meetings a month.","type":"string"},"unit":{"description":"Unit, such as meetings or %.","type":"string"},"baseline":{"description":"Where it started.","type":"integer"},"target":{"description":"The goal.","type":"integer"},"current":{"description":"Where it is now.","type":"integer"},"position":{"description":"Order.","type":"integer"},"client_visible":{"description":"Show it on the portal (default yes).","type":"boolean"}},"additionalProperties":true}}}}},"delete":{"operationId":"projects.results.delete","summary":"Stop tracking a result.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"resultId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/messages":{"get":{"operationId":"projects.messages.list","summary":"The #general channel with the client, oldest first.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"projects.messages.post","summary":"Write to the client on their portal.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"description":"The message.","type":"string"}},"required":["body"],"additionalProperties":true}}}}}},"/projects/{id}/channels":{"get":{"operationId":"projects.channels.list","summary":"The project's channels shared with the client, with your unread count on each.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"projects.channels.create","summary":"Add a channel (lowercase, dashes).","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Channel name.","type":"string"},"topic":{"description":"What it is for.","type":"string"}},"required":["name"],"additionalProperties":true}}}}}},"/projects/{id}/channels/order":{"post":{"operationId":"projects.channels.order","summary":"Set the channels' order (ids, first to last).","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"description":"Channel ids in order.","type":"array","items":{}}},"required":["ids"],"additionalProperties":true}}}}}},"/projects/{id}/channels/{channelId}":{"patch":{"operationId":"projects.channels.update","summary":"Change a channel's topic.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"channelId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"topic":{"description":"What it is for.","type":"string"}},"additionalProperties":true}}}}},"delete":{"operationId":"projects.channels.delete","summary":"Delete a channel and its messages; #general stays.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"channelId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/channels/{channelId}/messages":{"get":{"operationId":"projects.channels.messages","summary":"A channel's messages with their thread sizes, or one thread with ?parent=<message id>.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"channelId","in":"path","required":true,"schema":{"type":"string"}},{"name":"parent","in":"query","required":false,"schema":{"description":"A message id: its thread.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"projects.channels.post","summary":"Write in a channel you are in, or reply in a thread with parent_id; attachments are project file ids, shared with the client only where the client is in the channel.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"channelId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"description":"The message.","type":"string"},"parent_id":{"description":"Reply in this message's thread.","type":"string"},"attachments":{"description":"Project file ids.","type":"array","items":{}}},"additionalProperties":true}}}}}},"/projects/{id}/channels/{channelId}/read":{"post":{"operationId":"projects.channels.read","summary":"Mark a channel read for you.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"channelId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/channels/{channelId}/messages/{messageId}":{"patch":{"operationId":"projects.channels.message.edit","summary":"Edit a message you wrote; it shows as edited.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"channelId","in":"path","required":true,"schema":{"type":"string"}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"description":"The new text.","type":"string"}},"required":["body"],"additionalProperties":true}}}}},"delete":{"operationId":"projects.channels.message.delete","summary":"Delete a message you wrote.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"channelId","in":"path","required":true,"schema":{"type":"string"}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/channels/{channelId}/members":{"get":{"operationId":"projects.channels.members","summary":"Who is in a channel, who is invited, and who you could add. #general is everyone on the project.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"channelId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"projects.channels.members.add","summary":"Add a teammate on the project (in at once) or invite someone on the client's side (they accept first). Owners, admins, managers and the channel's maker.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"channelId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"user_id":{"description":"A teammate's user id.","type":"string"},"account_id":{"description":"A client person's portal account id.","type":"string"}},"additionalProperties":true}}}}}},"/projects/{id}/channels/{channelId}/members/{memberId}":{"delete":{"operationId":"projects.channels.members.remove","summary":"Take someone out of a channel, or leave it yourself.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"channelId","in":"path","required":true,"schema":{"type":"string"}},{"name":"memberId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/channels/{channelId}/join":{"post":{"operationId":"projects.channels.join","summary":"Join a channel you can read but are not in (owners and admins).","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"channelId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/invoices":{"get":{"operationId":"projects.invoices.list","summary":"The project's invoices, newest first.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"projects.invoices.create","summary":"Add an invoice the client sees under Legal.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"What it is for.","type":"string"},"amount":{"description":"Amount, a number.","type":"string"},"currency":{"description":"Three letters, USD by default.","type":"string"},"number":{"description":"Invoice number.","type":"string"},"issued_date":{"description":"YYYY-MM-DD.","type":"string"},"due_date":{"description":"YYYY-MM-DD.","type":"string"},"status":{"description":"unpaid, paid or void.","type":"string","enum":["unpaid","paid","void"]},"file_id":{"description":"A project file: the invoice PDF.","type":"string"},"pay_url":{"description":"A payment link.","type":"string"},"client_visible":{"description":"Show it on the portal.","type":"boolean"}},"required":["title","amount"],"additionalProperties":true}}}}}},"/projects/{id}/invoices/{invoiceId}":{"patch":{"operationId":"projects.invoices.update","summary":"Edit an invoice or mark it paid.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"invoiceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"What it is for.","type":"string"},"amount":{"description":"Amount, a number.","type":"string"},"status":{"description":"unpaid, paid or void.","type":"string","enum":["unpaid","paid","void"]},"due_date":{"description":"YYYY-MM-DD.","type":"string"},"file_id":{"description":"A project file.","type":"string"},"pay_url":{"description":"A payment link.","type":"string"},"client_visible":{"description":"Show it on the portal.","type":"boolean"}},"additionalProperties":true}}}}},"delete":{"operationId":"projects.invoices.delete","summary":"Delete an invoice.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"invoiceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/intake":{"get":{"operationId":"projects.intake.get","summary":"The intake form: questions, the client's answers, when they sent it.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"put":{"operationId":"projects.intake.set","summary":"Set the intake questions.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"questions":{"description":"Questions in order.","type":"array","items":{}}},"required":["questions"],"additionalProperties":true}}}}}},"/projects/{id}/nps":{"get":{"operationId":"projects.nps","summary":"NPS answers from the client, newest first.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/projects/{id}/checkins":{"get":{"operationId":"projects.checkins","summary":"Every client check-in on the project (onboarding, 25 to 100 percent, monthly): when it was shown, opened, answered or put off, with the score and reason.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/projects/{id}/onboarding":{"post":{"operationId":"projects.onboarding","summary":"Apply the onboarding template: the client checklist, the roadmap and the intake form. A won deal does this on its own.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/projects/{id}/portal":{"get":{"operationId":"projects.portal.list","summary":"Who can open the client portal for this project.","tags":["Projects"],"x-scope":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"post":{"operationId":"projects.portal.invite","summary":"Give a client contact the portal: a new link, emailed unless send is false, and returned. With mailbox_id the onboarding email goes from that client mailbox.","tags":["Projects"],"x-scope":"send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"description":"The client's email.","type":"string"},"name":{"description":"Their name.","type":"string"},"first_name":{"description":"First name.","type":"string"},"last_name":{"description":"Last name.","type":"string"},"company":{"description":"Company.","type":"string"},"mailbox_id":{"description":"A mailbox set to Client emails or Both.","type":"string"},"subject":{"description":"Subject; the saved template when left out.","type":"string"},"body":{"description":"Body; the saved template when left out.","type":"string"},"send":{"description":"Email the link (default yes).","type":"boolean"}},"required":["email"],"additionalProperties":true}}}}}},"/projects/{id}/portal/{accessId}/resend":{"post":{"operationId":"projects.portal.resend","summary":"Send a fresh 36 hour access link to someone who has not joined yet; their tracking stays.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"accessId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/clients/portal":{"get":{"operationId":"clients.portal","summary":"Every client with portal access: sent, opened the link, joined or link expired, with when and how many links went.","tags":["Clients"],"x-scope":"read","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/projects/{id}/portal/{accessId}":{"delete":{"operationId":"projects.portal.revoke","summary":"Close a client's portal link.","tags":["Projects"],"x-scope":"write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"accessId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/clients/dashboard":{"get":{"operationId":"clients.dashboard","summary":"The client overview over a range: calls, show rate, wins, close rate, the weekly trend and where deals come from, plus projects by health and follow-ups due.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"from","in":"query","required":false,"schema":{"description":"YYYY-MM-DD, or all for all time; 30 days before to by default.","type":"string"}},{"name":"to","in":"query","required":false,"schema":{"description":"YYYY-MM-DD; today by default.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/reports/daily":{"get":{"operationId":"reports.daily","summary":"End-of-day reports for a day (today by default), or every day since from, newest first. A member reads their own; owners and admins read the team's.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"day","in":"query","required":false,"schema":{"description":"YYYY-MM-DD.","type":"string"}},{"name":"from","in":"query","required":false,"schema":{"description":"YYYY-MM-DD: every report since this day.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}}},"/reports/daily/mine":{"get":{"operationId":"reports.mine","summary":"Your report for a day, pre-filled from what you moved that day when you have not written one.","tags":["Clients"],"x-scope":"read","parameters":[{"name":"day","in":"query","required":false,"schema":{"description":"YYYY-MM-DD.","type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}}},"put":{"operationId":"reports.save","summary":"Save or send your end-of-day report.","tags":["Clients"],"x-scope":"write","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"401":{"description":"No session or an invalid key"},"403":{"description":"Insufficient scope or a session-only call"},"422":{"description":"Invalid input"},"429":{"description":"Rate limited; Retry-After in seconds"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"day":{"description":"YYYY-MM-DD.","type":"string"},"done":{"description":"What got done.","type":"string"},"next":{"description":"What is next.","type":"string"},"blockers":{"description":"What is in the way.","type":"string"},"submit":{"description":"Send it to the team.","type":"boolean"}},"required":["day"],"additionalProperties":true}}}}}}}}