One platform API · /api/v1

Constitor Platform API

The one API every app uses: Constitor, Socius, Mercator, Battalion and Auxilium. No app has an API of its own. This page explains how it is built and how to connect, then lists every path in the OpenAPI document as served on 16 October 2026.

Base path/api/v1 on the live app
The documentGET /api/v1/openapi
Try itGET /api/v1/docs, the interactive reference for the same document
Live hosthttps://app.constitor.ai/api/v1
Sign-inThe Constitor login with Microsoft, Google or SSO; not a /v1 resource. One session for the whole suite. Machines use a service token.
212operations in the document
143served
28served in the repo, not on the live host yet
41planned: a path, no handler yet
Read this as a view. The document has summaries and no request or response schemas yet, so this page shows what each path does, not its fields. Phase 1 paths are marked. "In the repo, not live" follows the design pack page of 16 October.
Start here

How the platform works

Constitor runs an agentic company on one rulebook. The handbook says what is allowed and who decides. Agents do the work inside those rules, in every app. A person says ok where the rules ask for it, and Constitor records a receipt. What the agents learn goes back to the handbook as a proposal, never straight in. All of it runs through this one API.

Handbookrules, role cards, mandates,flows · changed by proposal Agentsdo the work in each app,inside their mandate A personsays ok in the chatno Approve button Receiptrecorded by Constitor,not by a bot Lessonwhat went well or wrong,proposed, never applied read ask check afterwards proposal + approval every arrow is a call to /api/v1, scoped to one organisation

The suite

Every app has the same shape: the app rail, the agent panel as the second column, and the content. Every app reads and writes only through /api/v1.

AppForWhat you do thereAPI groups
ConstitorEveryoneRead the handbook, propose a change, approve it. People, roles and the audit trail.handbook, organisations, members, roles, audit-events
SociusPartners and salesCustomers and partners, companies and people, deals, projects, group travel, grants.partner-tenants, directory, deals, projects, trips, calls, grant-proposals
MercatorMarketingA view of the shared posts list, publishing channels, profiles and flows.posts, publishing/channels, ideal-customer-profiles, flows
BattalionWhoever runs the agentsThe agents, their mandates, runs, waits and receipts, lessons, teams and flows, models and budgets.agents, mandates, ways-out, lessons, teams, flows, models, budgets, cost-stop
AuxiliumCustomers and supportFeedback, tickets, the help center, status, roadmap and thank-you stickers. Its bot is Curator.tickets, help/articles, status, incidents, roadmap, stickers
In every appEveryoneThe agent panel, and the shared Inbox, calendar, files, tasks, notifications and search.conversations, calendar, files, tasks, notifications, search, audit-events

Where things live

In the handbookIn the platform databaseIn neither
Versioned in git, changed only by an approved proposalPer organisation, row-level security, reached only through /v1Held by the runtime, given per action
Role cards: task, tools, risk level, what data an agent may seeConversations and threadsKeys and secrets: an agent never sees them
Skills, standards and instinctsRuns, steps and their receipts
The mandate per kind of action, by roleWho holds which role, and approval receipts
Which model class and which tools are allowedRecords: customers, deals, tickets, posts …
Flows, once a person said okCost and quality figures

Who signs in, and when

WhoSigns inHow they prove who they are
A person in a customer organisationOnce, at the Constitor loginMicrosoft, Google or the organisation's SSO; passkey, second factor or magic link where set. One session for every app; they switch organisation, not account.
A partnerOnce, in their own partner organisationTheir own work account. They reach a customer only through the partner_tenants link and a consent grant that expires.
A new customer's first adminAfter an email inviteSigns in, accepts the invite and receives the opening management grant. Later invites wait for board approval.
Platform staffWith the platform admin roleNo standing access to an organisation's content. Any impersonation is written to the audit log.
An agentNeverA short-lived token for one organisation, minted for each run.
An outside tool or scriptNeverA service token for one organisation, with scopes.
An MCP clientNeverA service token today; sign-in through Microsoft (OAuth 2.1) is proposed.

One way to approve

  1. The agent asks in the panel, with what it wants to do and why.
  2. The person says ok in the chat. There is no Approve button.
  3. Constitor checks the person's role, the channel and the handbook version.
  4. Constitor writes the receipt: "Recorded by Constitor, not by a bot." The run continues.

At any mandate level an agent never approves, publishes or merges; never changes its own role card, skills or mandate; never touches keys; never deletes data; and never names a price, signs, promises or gives access without a person's ok. A mandate goes up only by a board decision.

Screens and endpoints

Each app is a view of the shared resources, and apps link by the shared resource id. The calendar is GET /api/v1/calendar, Constitor's own calendar, stored here, and the source of truth. An event may link a task, a scheduled post, or a meeting. The week of posts is a filter on that list. Microsoft 365, and later Google, are optional sync connectors and are never required. Communication is GET /api/v1/conversations, the one communication API, stored here. Channel is a field: email, WhatsApp, SMS, Slack, Teams, or in-app. A new channel is a connector, not a new path. Files are GET /api/v1/files. Tasks are GET /api/v1/tasks, and a planning view is a filter on that list. Notifications are GET /api/v1/notifications and are delivered on a conversation channel. Search is GET /api/v1/search. The audit trail is GET /api/v1/audit-events. Posts are GET /api/v1/posts. Contacts are the Directory. Flows are GET /api/v1/flows. A new app uses these services. It does not build its own. 35 of 92 screens can be built on a path that is served in the repository. The rest are planned on those resources, or still wait for a path. Phase 1 paths are live. Directory, Socius and the agent paths are served in the repository and are not yet on the live host.

Socius29 screens · 24 served
ScreenResourcePathStatus
Sign-inSign-inThe Constitor login, not /v1Served
Invite sign-inSign-inThe Constitor login, not /v1Served
CustomersCustomer organisationsGET /api/v1/partner-tenantsServed
Customer statesCustomer organisationsGET /api/v1/partner-tenantsServed
New customerCustomer organisationsPOST /api/v1/partner-tenantsServed
New customer statesCustomer organisationsPOST /api/v1/partner-tenantsServed
Accept inviteInvitationsPOST /api/v1/organisations/{organisationId}/invitations/{invitationId}/acceptServed
PeopleMembers and rolesGET /api/v1/organisations/{organisationId}/members, GET …/rolesServed
CompaniesDirectoryGET /api/v1/directory/organisationsServed
CompanyDirectoryGET /api/v1/directory/organisationsServed
ContactsDirectoryGET /api/v1/directory/persons. Microsoft contacts are not this listServed
PersonDirectoryGET /api/v1/directory/personsServed
DealsDealsGET /api/v1/dealsServed
DealDealsGET /api/v1/dealsServed
Partner dealDealsGET /api/v1/deals and GET /api/v1/partner-tenants. The sharing rule is still openPartly
ImportDirectoryPOST /api/v1/directory/importsServed
OutreachFlowsGET /api/v1/flows planned. Articles are served. The run is GET /api/v1/outreach plannedPartly
SequenceFlowsGET /api/v1/flows plannedPlanned
ModulesModulesGET /api/v1/organisations/{organisationId}/modulesServed
ProjectsProjectsGET /api/v1/projectsServed
ProjectProjectsGET /api/v1/projectsServed
TripsTripsGET /api/v1/tripsServed
TripTripsGET /api/v1/tripsServed
Grant callsGrantsGET /api/v1/callsServed
Grant proposalGrantsGET /api/v1/grant-proposalsServed
ApplicationsGrantsGET /api/v1/grant-proposalsServed
Deals overviewDealsGET /api/v1/dealsServed
PipelinePartner tenantsGET /api/v1/partner-tenants is served. This view has no path yetWaits for API
Sales stepsFlowsGET /api/v1/flows plannedPlanned
Mercator9 screens · 0 served
ScreenResourcePathStatus
Flow editorFlowsGET /api/v1/flows plannedPlanned
CalendarCalendarGET /api/v1/calendar planned. The week of posts is a filter. The post stays GET /api/v1/postsPlanned
PostPostsGET /api/v1/posts plannedPlanned
Publishing channelsPublishingGET /api/v1/publishing/channels plannedPlanned
Email flowFlowsGET /api/v1/flows plannedPlanned
Content stepsFlowsGET /api/v1/flows plannedPlanned
Ideal customer profileProfilesGET /api/v1/ideal-customer-profiles plannedPlanned
Content planPostsGET /api/v1/posts plannedPlanned
Search briefPostsGET /api/v1/posts plannedPlanned
Battalion29 screens · 9 served
ScreenResourcePathStatus
Agent homeAgentsGET /api/v1/agentsServed
TriggersTriggersGET /api/v1/triggers plannedPlanned
MandatesMandatesGET /api/v1/mandatesServed
RunRunsGET /api/v1/agents/{id}/runs and …/stepsServed
WaitsWaitsGET /api/v1/agents/{id}/runs/{runId}/waitsServed
Ways outWays outGET /api/v1/ways-out plannedPlanned
LessonsLessonsArticle proposals are served. GET /api/v1/lessons plannedPartly
AutonomyAutonomyGET /api/v1/autonomy-ladder plannedPlanned
TodayTodayGET /api/v1/today planned. Runs and waits are servedPartly
RosterAgentsGET /api/v1/agentsServed
AgentAgentsGET /api/v1/agents and GET /api/v1/mandatesServed
RunsRunsGET /api/v1/agents/{id}/runsServed
TeamsTeams and flowsGET /api/v1/teams and GET /api/v1/flows plannedPlanned
SafetyBudgetsGET /api/v1/budgets and GET /api/v1/cost-stop plannedPlanned
FlowFlowsGET /api/v1/flows plannedPlanned
Handbook editHandbookArticle save and proposals are served. GET /api/v1/agent-sync plannedPartly
MemoryMemoryGET /api/v1/memory plannedPlanned
TraceStepsGET …/steps is served. Receipts are GET …/receipts plannedPartly
SchedulesSchedulesGET /api/v1/schedules plannedPlanned
EvalsEvalsGET /api/v1/evals plannedPlanned
CodingAgentsGET /api/v1/agentsServed
ModelsModelsGET /api/v1/models and GET /api/v1/budgets plannedPlanned
ToolsToolsGET /api/v1/agents/{id}/tools plannedPlanned
SyncVersionsArticle versions are served. GET /api/v1/agent-sync plannedPartly
AccessRolesMembers and roles are served. GET /api/v1/agents/{id}/access plannedPartly
AgentsAgentsGET /api/v1/agentsServed
FlowsFlowsGET /api/v1/flows plannedPlanned
ModesTeamsGET /api/v1/teams plannedPlanned
LessonLessonsGET /api/v1/lessons plannedPlanned
Auxilium17 screens · 0 served
ScreenResourcePathStatus
FeedbackTicketsGET /api/v1/tickets and GET /api/v1/stickers plannedPlanned
TicketsTicketsGET /api/v1/tickets plannedPlanned
TicketTicketsGET /api/v1/tickets plannedPlanned
ThanksStickersGET /api/v1/stickers plannedPlanned
FlowFlowsGET /api/v1/flows plannedPlanned
SetupHandbookHandbook articles are served. This screen has no product pathWaits for API
TodayTodayGET /api/v1/today plannedPlanned
InboxConversationsGET /api/v1/conversations plannedPlanned
ConversationConversationsGET /api/v1/conversations plannedPlanned
CustomersDirectoryGET /api/v1/directory/organisations and GET /api/v1/directory/persons. Service levels have no pathPartly
HelpHandbookArticles are served. A public mark has no pathPartly
RoadmapRoadmapGET /api/v1/roadmap plannedPlanned
EpicsRoadmapNo path yetWaits for API
StatusStatusGET /api/v1/status and GET /api/v1/incidents plannedPlanned
ReportsReportsGET /api/v1/helpdesk/reports plannedPlanned
ChannelsConversationsGET /api/v1/conversations planned. A connector is optional and is never requiredPlanned
Git settingsGitNo /v1 pathWaits for API
Shared in every app8 screens · 2 served
ScreenResourcePathStatus
ShellShellNo resource. The app shellServed
PanelWaitsGET /api/v1/agents/{id}/runs/{runId}/waits is served. Receipts are plannedPartly
TodayTodayGET /api/v1/today plannedPlanned
PlanningCalendarGET /api/v1/calendar planned. A planning task is a filter on GET /api/v1/tasks. A workspace task list is a connector, not this listPlanned
InboxConversationsGET /api/v1/conversations planned. Stored here. Mail and Microsoft 365 are optional connectorsPlanned
ThreadConversationsGET /api/v1/conversations plannedPlanned
ChannelsConversationsGET /api/v1/conversations planned. A connector is optional and is never requiredPlanned
LinksLinksGET /api/v1/linksServed
Guide

How it fits together

There is one API. Every screen, bot, connector and outside tool goes through it, and nothing reads or writes the database directly. Only schema migrations touch the database, through the controlled migration pipeline. That rule (API first, C0.4 and D91) is what keeps every app the same shape and every change audited. Each app is a view of the shared resources, stored in the platform and the source of truth: one calendar (/api/v1/calendar), one communication layer (/api/v1/conversations, channel is a field), one file store (/api/v1/files), one task list (/api/v1/tasks), one notification list (/api/v1/notifications), one search (/api/v1/search), one audit trail (/api/v1/audit-events), one posts list (/api/v1/posts), one Directory, and one flows list (/api/v1/flows). Connectors are optional and are never required. A new app uses these services. It does not build its own.

WHO CALLS HOW THEY PROVE WHO THEY ARE THE ONE API BEHIND THE API The appsConstitor, Socius, Mercator,Battalion, Auxilium Bots and agentsPorta, Rector, Curator …run in an agent cell MCP connectorshandbook, Microsoft workspacethin wrappers over /v1 Integrations, scriptsyour own tool or apartner system Constitor loginMicrosoft, Google or SSOone session for the suite Agent tokenshort-lived, one tenantminted per run Service tokenminted by the platformone tenant, with scopes Service tokensame rules; nevera Graph app token Platform API /api/v1 1 Who is calling? session or token 2 Which organisation? tenant from the session or bound to the token 3 May they do this? named capability, role 4 Do it, once Idempotency-Key on writes 5 Write the receipt append-only audit One OpenAPI document GET /api/v1/openapi GET /api/v1/docs Kernel tablesorganisations, members, roles,directory, notes, audit AdaptersCRM engine, publishing engine,model gateway, payments Microsoft 365mail, calendar, planner;delegated, as the signed-in user Agent runtime storeprivate to the agent service(the one exception, D94) One EU database (Paris) · row-level security per tenant

The layers, left to right

  • Callers. The five apps, the bots and agents, MCP connectors and outside integrations. An app never adds its own API in front of this one; there is no backend-for-frontend.
  • Identity. A person signs in once with the Constitor login (Microsoft, Google or the customer's own SSO) and that session works in every app. A machine uses a token the platform mints, bound to one organisation. There is no open self-signup: an account exists only by invitation or by an admin.
  • The API. Every call is authenticated, scoped to one organisation (tenant), checked against a named capability of the caller's role, and leaves an audit receipt. The OpenAPI document is generated from one module in the platform app and is the single source.
  • Behind the API. Kernel tables (organisations, people, roles, the Directory), headless engines reached through adapters, Microsoft 365 on behalf of the signed-in user, and the agent runtime's private store. Engines are used unmodified and never shown; the document uses our names only.
  • Data. One EU database in Paris. Every row carries tenant_id, and row-level security only lets a request see rows of its own tenant. A partner reaches a customer only through the partner_tenants link and a consent grant.

Hosts

WhatAddressStatus
Platform app and APIhttps://app.constitor.ai/api/v1Live
OpenAPI documenthttps://app.constitor.ai/api/v1/openapiLive, OpenAPI 3.0.3
Interactive referencehttps://app.constitor.ai/api/v1/docsLive
Handbook MCPhttps://handbook-mcp.constitor.ai/api/mcpLive, read-only
Microsoft workspace MCPhttps://microsoft-mcp.constitor.ai/api/mcpLive
Own API hosthttps://api.constitor.ai/v1Proposed, not accepted
Guide

How to connect

Pick the route that matches what you are building. All four end at the same API with the same checks; they differ only in how the caller proves who it is.

1 · An app in the suiteA screen in Constitor, Socius, Mercator, Battalion or Auxilium. Uses the person's session.
2 · An outside tool or scriptYour own integration, a partner system, a scheduled job. Uses a service token.
3 · An MCP connectorA coding or chat tool that speaks MCP. A thin wrapper; the same token rules.
4 · A bot or agentA bot in an agent cell. Uses a short-lived token for one tenant, minted per run.

1 · An app in the suite

  1. Send the person to the Constitor login. They choose Microsoft, Google or SSO. Sign-in is not a /v1 resource, and the app keeps no user table of its own.
  2. After sign-in the browser holds the suite session. Call the API from the same origin with credentials included.
  3. Read GET /api/v1/session for the signed-in account and the active organisation, and GET /api/v1/me for roles.
  4. Show the organisation switcher from GET /api/v1/organisations; switch with POST /api/v1/organisations/{organisationId}/activate. Every later call works in the active organisation.
// any app in the suite, same origin, session included
const res = await fetch('/api/v1/session', { credentials: 'include' });
if (!res.ok) {
  const { error } = await res.json();   // e.g. "Sign in is required."
  throw new Error(error);
}
const session = await res.json();        // the account and the active organisation

Apps use the shared package (a typed client generated from the OpenAPI document, the session helper and the tenant switch) instead of hand-written calls once it is published.

2 · An outside tool or script

  1. Get a service token minted by the platform for one organisation. The design shows this under Battalion › Access; who may mint one is still an open question. The token is bound to that organisation and carries scopes.
  2. Store the token in your own secret store. Name it, never paste it in a chat, ticket or repository.
  3. Send it as a bearer token on every call. The organisation comes from the token; you cannot switch it.
curl https://app.constitor.ai/api/v1/me \
  -H "Authorization: Bearer $CONSTITOR_TOKEN"

Scopes today: microsoft:read and microsoft:write, which the Microsoft routes enforce. Other scope names, token lifetime and who may mint are open questions. A move from the current static token to OAuth 2.1 through Microsoft Entra is proposed (D155) and not yet accepted.

3 · An MCP connector

Connect the MCP host in your tool (for example the handbook MCP at https://handbook-mcp.constitor.ai/api/mcp). Every MCP tool is a thin wrapper over one or more /v1 calls, so it gets the same tenant scope, capability check and audit. The handbook MCP reads the git corpus of the handbook; that read is not a database read.

4 · A bot or agent

Agents are defined in the handbook and run in an agent cell. For each run the cell receives a short-lived token for one tenant (D97) and calls /v1 like any other caller. An agent drafts and asks; it never approves its own work, and every step leaves a receipt.

Guide

Your first calls: phase 1

The first milestone: a partner signs in, creates a customer organisation and invites its first admin. These are the only calls the phase 1 screens use, in this order. All are served.

#StepCall
1Sign in with the work accountThe Constitor login, not a /v1 resource
2Session after sign-inGET /api/v1/session
3Account, organisation, rolesGET /api/v1/me
4The partner's own organisations (the switcher, not the customer list)GET /api/v1/organisations
5Switch the active organisationPOST /api/v1/organisations/{organisationId}/activate
6Organisation overviewGET /api/v1/organisations/{organisationId}
7Customer listGET /api/v1/partner-tenants
8Create the customer and invite its first admin, in one callPOST /api/v1/partner-tenants
9The invited admin signs in and acceptsPOST /api/v1/organisations/{organisationId}/invitations/{invitationId}/accept
10People and roles after acceptGET …/members, GET …/roles

Create a customer

The active organisation is the partner's, taken from the session. The body has three fields. Send an Idempotency-Key so a retry never creates a second customer.

Request
POST /api/v1/partner-tenants
Idempotency-Key: new-customer-example-bv-01
Content-Type: application/json

{
  "name": "Sample customer",
  "slug": "example-bv",
  "email": "admin@example.com"
}
If it goes wrong
{ "error": "Slug is not valid." }

Other messages for this call:
  "Name is required."
  "Enter a work email."
  "Only a partner admin may do that."
  "The customer was not created."

Do not call POST /api/v1/organisations here: that creates an organisation for the caller's own Microsoft tenant, not a customer. A later invite, once the customer has members, is POST /api/v1/organisations/{organisationId}/invitations with an email and a role; that role waits for board approval. The first admin gets the opening management grant on accept.

Read the customer list

GET /api/v1/partner-tenants
GET /api/v1/partner-tenants?cursor=<next_cursor from the previous page>

A page lists each customer's name, slug and status.
A further page exists only when next_cursor is set.
Fields. The OpenAPI document has summaries but no request or response schemas yet. The bodies above follow the handbook's phase 1 page. When the schemas land, the interactive reference at /api/v1/docs shows every field.
Guide

Conventions

The rules every path follows. They come from the Platform API section of the build plan; where a number is not set yet, it says so.

TopicRule
VersioningThe version is in the path: /api/v1. A breaking change is a new segment; v1 is never broken in place.
AuthenticationPeople: the one Constitor login and its session. Machines: a service token minted by the platform, bound to one organisation, with scopes. Agents: a short-lived token per run.
TenantEvery call works in exactly one organisation: the active one from the session, or the one bound to the token. Rows of another organisation are invisible, enforced in the database by row-level security.
PermissionsEach path checks a named capability of the caller's role. Role changes are approved by the board role; agents draft and never approve alone.
ListsNew lists return one page: items and next_cursor. Pass cursor to get the next page. No offset paging. The page size cap is not set yet.
ErrorsThe HTTP status plus one body shape: { "error": "<message>" }. The message is written for a person and can be shown as is. There is no second error envelope.
RetriesCreates and sends accept Idempotency-Key (8 to 80 letters, digits, _ or -). The same key and body return the first result; the same key with a different body is a conflict.
Rate limitsPer organisation and per token. A limited call returns 429. The numbers are not set yet.
WebhooksAn integration registers a URL through the API; each delivery is one HTTPS POST with one event. Event names, signature and retry rule are not set yet.
AuditEvery write leaves an append-only receipt. Sign-in events are audited from the login itself. A caller reads receipts through the API.
NamesPaths, tags and descriptions use Constitor names. Engines and vendors behind the API are never named in the document. This page names a screen, not a design-file code.
AccountsNo open self-signup. Accounts come only by invitation or by an admin through /v1.
Guide

What is live, and what comes when

The owner set the order on 16 October 2026: the API specification first, then the endpoints, then the screens. A screen waits until its phase's endpoints exist. A path without a handler is in the document as x-constitor-status: planned.

PhaseWhat it deliversPathsStatus
Phase 1A partner signs in, creates a customer and invites its first admin (Socius S0 and S1)session, me, organisations, partner-tenants, invitations, members, rolesServed
Phase 2Directory and Socius: companies and people, deals, projects, trips, grants, CSV import, modules/directory/…, /deals, /projects, /trips, /calls, /grant-proposalsIn the repo, not live
LaterThe shared calendar, Inbox, files, tasks, notifications, search and audit trail/calendar, /conversations, /files, /tasks, /notifications, /search, /audit-eventsPlanned
LaterThe one flows list and the one posts list/flows, /posts, /publishing/channelsPlanned
LaterAuxilium: tickets, help center, status, roadmap, stickers. Customers read the Directory/tickets, /help/articles, /status, /incidents, /roadmap, /stickersPlanned
LaterBattalion: agents, runs, mandates and waits are in the repository. Teams, memory, evals, schedules, models and budgets come after. Flows are the shared list/agents, /mandates, /flows, …Partly
LaterBilling: pilots, cohorts, usage. The markup is not decided/pilots, /cohorts, /usage, /cost-stopPlanned

Microsoft 365 routes (/api/v1/microsoft/…) are live today. They are the signed-in user's own mailbox, calendar, planner and directory lookup, not the product Directory, Inbox or Planning.

Guide

Security and data

  • Where data lives. One EU database in Paris. Every row carries its organisation; row-level security keeps organisations apart, and a partner sees a customer only with a time-limited consent grant.
  • Keys and secrets. Keys are named, never shown. Server and app secrets sit in an EU secret store; a runtime reads only its own. No secret goes into a chat, ticket or repository.
  • Microsoft 365. Always delegated: the API acts as the signed-in person, never as an app with its own Graph rights. Writes need microsoft:write.
  • Models. Every model call goes through our own gateway and is logged. Apps and outside callers never call a model vendor directly, and the document names none.
  • Agents. Agents run on short-lived tokens, work inside a mandate, and stop at a wait for a person's ok. Their working memory is the one store outside the API (D94); approvals are still recorded through it.
  • Platform staff. Support has no standing access to an organisation's content. Any impersonation is written to the audit log.
Guide

Open questions for the owner

Not decided yet. Until they are, the API does not promise a number or name here.

  1. Rate-limit numbers per organisation and per token.
  2. Service tokens: lifetime, who may mint one, and scope names beyond microsoft:read and microsoft:write.
  3. Webhooks: event names, signature scheme and retry rule.
  4. Page size cap for lists.
  5. Notes: whether CRM notes and the existing /api/v1/notes are one record.
  6. Public host: stay on app.constitor.ai or move to api.constitor.ai.
  7. Deal stage names in Socius.
  8. Request and response schemas are not in the document yet; until they are, field names come from the handbook pages.
Reference

Every path, by group

Every operation in the served document, grouped. The same document is at GET /api/v1/openapi and GET /api/v1/openapi.json. Use the filter in the contents column to find a path.