Skip to main content
An Agent Channel binds a place on an outside platform (a Slack channel today) to exactly one Entity. Staff creates the binding once; the Sintropix agent reads it one time when a thread starts and then works on that Entity for the whole thread. A place answers one Entity. An Entity can hold many places (for example, one Slack channel per topic). Rebinding a place to a different Entity is a delete then a create, so an old binding never reads as the new one. A scheduled run belongs to the Entity of the conversation that created it. The agent creates a schedule only in a channel bound to that same Entity. If you rebind the channel to a different Entity, the agent skips the schedule’s runs, so an old schedule never reports on the new Entity.
Staff-only. The Entity routes below require the staff Role in the Entity’s Organization. A client or viewer caller (session or API key) receives 403 with PERMISSION_DENIED_ERROR. See Access and roles.

The Agent Channel object

POST /entities/:entityId/agent-channels

Bind a place to the Entity. Body Response (201): the created Agent Channel object.
If another Entity already holds the same (platform, channelId) pair, the request is refused with 409 and the domain code AGENT_CHANNEL_PLACE_TAKEN_ERROR. Delete the other Entity’s binding first, then retry.

GET /entities/:entityId/agent-channels

List every Agent Channel bound to the Entity. Response: an array of Agent Channel objects.

PATCH /entities/:entityId/agent-channels/:agentChannelId

Rename an Agent Channel. label is the only editable field. platform and channelId are set at create time and never move; to point the binding at a different place, delete this row and create a new one. Body Response: the updated Agent Channel object.

DELETE /entities/:entityId/agent-channels/:agentChannelId

Release the binding. After the delete the place is free, and another Entity can bind it. Response (200): the removed Agent Channel object.

GET /agent-channels?platform=…&channelId=…

Reverse lookup: given a place, return the Entity that speaks in it. This route is not scoped to an Entity because the caller only knows the place. The Sintropix agent calls this once at the start of a thread to learn which company the conversation is about. Query parameters Response: the Agent Channel object, plus:
If no Entity has bound the place, the request answers 404 with the domain code AGENT_CHANNEL_PLACE_UNBOUND_ERROR. The agent reads this as “no one speaks here” and stays silent.

Choose the agent’s model in a Slack channel

In a bound Slack channel, anyone in the channel can pick the model the Sintropix agent uses with the /model slash command.
A change applies only to threads that start after it. A thread keeps the model it started with, so an open conversation never switches models midway. Each scheduled run starts a new thread, so it uses the channel’s current model. The choice belongs to one channel. Other channels bound to the same Entity keep their own model. An unknown name changes nothing, and the agent replies with the list of options. In an unbound channel or a direct message, the agent replies that no one speaks there and changes nothing.

Status codes

Domain error codes

Deleting an Entity that still has Agent Channels bound to it is refused; release the bindings first.