Skip to content
TriedDocs
Account

Send Conductor message

Send a message to Conductor and run the action it picks: answer, build an agent, investigate calls, write or run tests, build a dashboard or give a walkthrough.

POSThttps://api.tried.com.au/conductor/sessions/{id}/messages

Needs keys Sends one message in a conversation. Conductor picks an action, runs it, and returns the reply and the result. Conductor checks that you have credits for the tier before it runs and charges them after.

With an OpenAI key set, OpenAI chooses the action and writes the reply (gpt-5.6-terra-mini for fast, gpt-5.6-terra otherwise).

Mock mode

Without an OpenAI key, or if the model call fails, the action comes from keywords in the message: "walk me through" or "how do I" gives walkthrough; "write tests" gives write_tests; "run tests" gives run_tests; "dashboard", "chart" or "graph" gives build_dashboard; "build", "create", "make", "set up" or "new" followed by "agent", "receptionist", "assistant" or "bot" gives build_agent; "investigate", "why" or "what happened", or a question with calls attached, gives investigate_calls; anything else gives chat. Tests and dashboards come from built-in templates, and the reply is a template sentence about the result.

Request#

Field Type Required Description
id string Yes Conversation ID, for example conductor_1d3f5a7c9e2b4d6f8a0c2e4b.

Body:

Field Type Required Description
content string Yes The message, 1 to 8000 characters.
tier string No fast (0.5 credits), default (1 credit, the default) or advanced (3 credits).
action string No Force an action instead of letting Conductor choose. Default auto.
attachments object[] No Up to 10 more attachments, added to the conversation for this and later messages. The conversation can hold 10 in total. See Create Conductor session for the shapes.

Actions:

action What it does
chat Answers from the attached context.
build_agent Builds an agent from the conversation. Everything you have said since the build started is the brief. If the brief is too thin (under about 12 words besides "build a new agent"), Conductor asks which business it is for, what the agent should handle and when to transfer, and the next message continues the build. When the brief is enough it creates a single prompt agent with the Premium voice and an end_call tool, as Generate agent does.
investigate_calls Reviews the attached calls, or the most recent ended calls (10 by default, up to 50; only failed or negative ones if you ask about failures), and lists issues such as unsuccessful calls, negative sentiment, tool failures, slow responses and errors.
write_tests Writes simulation test cases for the first attached agent and runs them as a batch test if you ask it to run them. Needs an attached agent.
run_tests Runs up to 20 existing test cases of the first attached agent as a batch test.
build_dashboard Creates an analytics dashboard with up to 12 charts.
walkthrough Returns dashboard steps to follow, as in Get Conductor walkthrough.

Example request#

curl -X POST https://api.tried.com.au/conductor/sessions/conductor_1d3f5a7c9e2b4d6f8a0c2e4b/messages \
  -H "Authorization: Bearer $TRIED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Build a dashboard of call volume and latency by agent",
    "tier": "default"
  }'
const res = await fetch("https://api.tried.com.au/conductor/sessions/conductor_1d3f5a7c9e2b4d6f8a0c2e4b/messages", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.TRIED_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "content": "Build a dashboard of call volume and latency by agent",
    "tier": "default"
  }),
});
const turn = await res.json();
import os, requests

res = requests.post(
    "https://api.tried.com.au/conductor/sessions/conductor_1d3f5a7c9e2b4d6f8a0c2e4b/messages",
    headers={"Authorization": f"Bearer {os.environ['TRIED_API_KEY']}"},
    json={
        "content": "Build a dashboard of call volume and latency by agent",
        "tier": "default",
    },
)
turn = res.json()

Response#

200 OK

{
  "reply": "I built the dashboard \"call volume and latency by agent\" with 3 charts. Open Analytics to see it.",
  "action": "build_dashboard",
  "result": {
    "type": "dashboard",
    "dashboard_id": "dash_6e1a9c3f5b7d2e4a8c0f1b3d",
    "name": "call volume and latency by agent",
    "charts": 3
  },
  "mode": "mock",
  "credits": {
    "charged": 1,
    "source": "free_workspace",
    "cost": 0
  },
  "credit_status": {
    "tiers": {
      "fast": 0.5,
      "default": 1,
      "advanced": 3
    },
    "today": {
      "user_used": 0,
      "user_free_remaining": 30,
      "workspace_used": 38,
      "workspace_free_remaining": 162,
      "free_per_user": 30,
      "free_per_workspace": 200
    },
    "month": {
      "paid_credits": 0,
      "paid_cost": 0,
      "payg_enabled": false,
      "monthly_limit": 0,
      "price_per_credit": 0.3
    }
  }
}
Field Type Description
reply string Conductor's answer.
action string The action that ran.
result object or null Action output. type is agent (with agent_id and agent_name), investigation (with calls and patterns), tests (with test_case_definition_ids, test_cases and batch_test_id), test_run (with batch_test_id and test_cases), dashboard (with dashboard_id, name and charts) or walkthrough (with title and steps). null for chat, and for build_agent while Conductor is still asking questions.
mode string llm when OpenAI planned the turn, mock otherwise.
credits object What this message cost: charged credits, source (free_user, free_workspace or paid) and cost in dollars.
credit_status object Balance after the message, as in Get Conductor credits.

The user message and the reply are appended to the conversation. The first message also becomes the conversation title (first 60 characters).

Errors#

Status When
400 Body validation failed, more than 10 attachments in total (At most 10 attachments per conversation), or build_dashboard with 10 dashboards already (A workspace can have at most 10 dashboards. Delete one first.).
401 Missing or invalid API key.
402 No credits left. The body adds error_code: conductor_credits_exhausted when free credits are used up and pay-as-you-go is off, or conductor_limit_reached when the paid monthly limit is reached.
403 The key's IP allowlist or scopes reject the request. This route needs the admin scope. Dashboard users with the member role get The member role is read-only.
404 Conductor session <id> not found, or an attachment does not exist.
429 Rate limit exceeded. See Rate limits.

See Errors for the body format.

Retell compatibility#

Retell's public API reference has no Conductor endpoints, so this route has no Retell SDK equivalent.