← All action domains

Assistant

8 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.

Approve a proposed action

assistant.approvewriteconfirm

Authorize (or refuse) the action the assistant stopped to ask about, then let it carry on. Approving RUNS the action for real — it is the one the assistant flagged as irreversible, outward-facing or costly, so it may send messages to real people, spend the organization's money or destroy data. Refusing tells the assistant no and it continues without it.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
thread_idstring (uuid)requiredThe conversation the request is waiting in.
message_idstring (uuid)requiredThe assistant message holding the request, from assistant.ask's `pending`.
approvebooleanoptionaltrue runs the action; false declines it and the assistant moves on. Default: true
mode"chat" | "do" | "smart"optionalHow the assistant should respond. 'chat' explains and never touches the account; 'do' carries the request out; 'smart' decides which of the two the request called for. Default: "smart"

Example

curl -X POST https://app.chirply.io/api/v1/actions/assistant.approve \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "thread_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "message_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool assistant_approve at https://app.chirply.io/api/mcp, same bearer token, same input.

Ask the assistant

assistant.askwrite

Send a message to the in-app AI assistant and get its reply. 'chat' answers product questions from the help knowledge base using Chirply's support key and never changes account data. 'do' and 'smart' require the account's OpenRouter key and Copilot access; they can operate the account on your behalf. Anything irreversible, outward-facing or costly (sending messages, spending money, deleting) comes back in `pending` for explicit approval with assistant.approve. Continues an existing conversation when you pass thread_id, otherwise starts one.

Parameters

FieldTypeRequiredDescription
messagestringrequiredWhat to say to the assistant, in plain language.
thread_idstring (uuid)optionalContinue this conversation. Omit to start a new one.
mode"chat" | "do" | "smart"optionalHow the assistant should respond. 'chat' explains and never touches the account; 'do' carries the request out; 'smart' decides which of the two the request called for. Default: "smart"
routestringoptionalThe app screen this question is about, e.g. '/contacts'. Helps it answer 'how does this work?' about the right page.

Example

curl -X POST https://app.chirply.io/api/v1/actions/assistant.ask \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "example"
  }'
Test with your API key

Over MCP the same operation is the tool assistant_ask at https://app.chirply.io/api/mcp, same bearer token, same input.

Delete a conversation

assistant.delete_threadwriteconfirm

Permanently delete one conversation and every message in it. This cannot be undone. Anything the assistant already did to the account stays done — only the record of the conversation goes.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
thread_idstring (uuid)requiredThe conversation to delete.

Example

curl -X POST https://app.chirply.io/api/v1/actions/assistant.delete_thread \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "thread_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool assistant_delete_thread at https://app.chirply.io/api/mcp, same bearer token, same input.

Model routing

assistant.get_model_routingreadadmin only

Read which AI model answers each job class for this account (agent reasoning, marketing copy, code, everyday/bulk work, and image reading): the curated recommendation, the stored per-class choice if one was saved, and the model that will actually run. Every class runs on the account's own OpenRouter key at OpenRouter's own per-model price. Reads only — nothing is changed and no model is called.

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/assistant.get_model_routing \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool assistant_get_model_routing at https://app.chirply.io/api/mcp, same bearer token, same input.

Save model routing

assistant.set_model_routingwriteadmin only

Choose which OpenRouter model answers each AI job class for the WHOLE account, merged into the account's OpenRouter connection (other settings on the connection are untouched). Omitted classes keep their stored choice. This changes the cost and quality of every future assistant turn, AI employee run, and generated copy in that class — models differ in per-token price on the account's own OpenRouter key, though this call itself spends nothing and sends no message. Model ids are stored verbatim, so a typo means OpenRouter rejects future calls in that class until it is corrected; check ids first with assistant.get_model_routing or OpenRouter's catalog. Requires a connected OpenRouter account. Returns the routing as it now stands.

Parameters

FieldTypeRequiredDescription
reasoningstringoptionalModel choice for agent reasoning & planning: 'recommended' restores the curated default, 'auto' uses OpenRouter's own router, anything else is stored verbatim as an OpenRouter model id (e.g. 'anthropic/claude-sonnet-5'). Omit to leave this class unchanged.
copywritingstringoptionalModel choice for marketing & sales copy: 'recommended' restores the curated default, 'auto' uses OpenRouter's own router, anything else is stored verbatim as an OpenRouter model id (e.g. 'anthropic/claude-sonnet-5'). Omit to leave this class unchanged.
codestringoptionalModel choice for code & database schemas: 'recommended' restores the curated default, 'auto' uses OpenRouter's own router, anything else is stored verbatim as an OpenRouter model id (e.g. 'anthropic/claude-sonnet-5'). Omit to leave this class unchanged.
bulkstringoptionalModel choice for everyday chat & high-volume work: 'recommended' restores the curated default, 'auto' uses OpenRouter's own router, anything else is stored verbatim as an OpenRouter model id (e.g. 'anthropic/claude-sonnet-5'). Omit to leave this class unchanged.
visionstringoptionalModel choice for reading images & screenshots: 'recommended' restores the curated default, 'auto' uses OpenRouter's own router, anything else is stored verbatim as an OpenRouter model id (e.g. 'anthropic/claude-sonnet-5'). Omit to leave this class unchanged.

Example

curl -X POST https://app.chirply.io/api/v1/actions/assistant.set_model_routing \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "reasoning": "example",
    "copywriting": "example"
  }'
Test with your API key

Over MCP the same operation is the tool assistant_set_model_routing at https://app.chirply.io/api/mcp, same bearer token, same input.

Suggested questions

assistant.suggestionsread

Read suggested assistant questions based on this account’s current setup, incoming conversations, open deals, and the caller’s assigned tasks. Uses existing records; does not call an AI model, send messages, or change data.

Parameters

FieldTypeRequiredDescription
routestringoptionalCurrent app path, such as /tasks, used to prioritize relevant questions. Omit for account-wide suggestions.

Example

curl -X POST https://app.chirply.io/api/v1/actions/assistant.suggestions \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "route": "example"
  }'
Test with your API key

Over MCP the same operation is the tool assistant_suggestions at https://app.chirply.io/api/mcp, same bearer token, same input.

Read a conversation

assistant.threadread

Read one conversation back: what was asked, what the assistant answered, and every action it took along the way.

Parameters

FieldTypeRequiredDescription
thread_idstring (uuid)requiredThe conversation to read.

Example

curl -X POST https://app.chirply.io/api/v1/actions/assistant.thread \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "thread_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool assistant_thread at https://app.chirply.io/api/mcp, same bearer token, same input.

Past chats

assistant.threadsread

List your conversations with the assistant, most recently used first. Titles are taken from the first thing said in each. This is a retention WINDOW, not a permanent archive: a conversation nobody has touched for `retention_days` (returned alongside the list) is deleted automatically, messages and all. Anything worth keeping should be copied out before then.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalHow many to return. Default: 20

Example

curl -X POST https://app.chirply.io/api/v1/actions/assistant.threads \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 20
  }'
Test with your API key

Over MCP the same operation is the tool assistant_threads at https://app.chirply.io/api/mcp, same bearer token, same input.

The machine-readable version of this page is GET https://app.chirply.io/api/v1/actions?domain=assistant — same operations, with full JSON Schemas. Authentication, errors and rate limits are covered in the API documentation home.