assign_support_conversation
Hand a support thread to one team member, or take it back off everyone. Advisory — it never stops anyone else replying.
Purpose
Set who owns the answer on a thread. Assignment feeds the Assigned to Me tab in the creator's inbox and says who is responsible; it does not lock the thread, and anyone on the team with support-conversation:update can still reply.
The assignee must be someone who can actually open the thread: the project owner, or a member of the team the project belongs to. Any other account is refused rather than stored, so a token can never park a thread on a user who would never see it. Omit assignee_user_id, or pass null, to clear the assignment.
Emits support.conversation.assigned on every call, with assigned_to_user_id: null when the assignment was cleared.
Idempotent in effect, not in events. Assigning the same person twice leaves
the row exactly as it was, but the event fires again each time — deduplicate
on the event id if you post notifications downstream.
Required ability
support-conversation:update
Input schema
{
"type": "object",
"required": ["conversation_id"],
"properties": {
"conversation_id": {
"type": "string",
"description": "UUID of the support conversation to assign."
},
"assignee_user_id": {
"type": "string",
"description": "UUID of the project owner or a team member to hand the thread to. Omit or pass null to unassign."
}
}
}Output shape
{
"data": {
"id": "9e042b6f-5d81-4c37-a920-7b3e18cf6d45",
"project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
"channel": "telegram",
"status": "open",
"assigned_to_user_id": "4b7c9d21-3e58-4f16-8a02-6d9e5c1b7f34",
"unread_count": 2,
"blocked": false,
"first_response_at": null,
"resolved_at": null
}
}The same row get_support_conversation returns under its conversation key, so a thread reads the same before and after the change. assigned_to_user_id is a team member's user id — a different namespace from the member's project_user_id.
Example prompts
"Assign support conversation
9e042b6f-5d81-4c37-a920-7b3e18cf6d45to Priya."
"Take the billing thread off Marco — he's on leave — and leave it unassigned."
"Hand every open thread about invite links to whoever owns the project." (resolve the owner with
list_team_members, then assign each)
Failure modes
VALIDATION_FAILED—assignee_user_idis not a UUID or names no account (No user found with that id.), or the account is neither the project owner nor on its team (That person is not on this project's team.). Also returned when the token's owner is on the team but their role lacks the support permission on the project.RESOURCE_NOT_FOUND— unknownconversation_id, another creator's thread, or a project outside the token'sscope:project:allow-list. The three are indistinguishable on purpose.AUTHENTICATION_REQUIRED— no authenticated user on the request.TOKEN_MISSING_ABILITY— token lackssupport-conversation:update.
Related
list_support_conversations— filter byassigned_toto see who holds what.list_team_members— resolve a teammate's user UUID.resolve_support_conversation— the usual next step once the assignee has answered.support.conversation.assigned— the event this raises.- Support conversations API —
POST /v1/support/conversations/{id}/assign. - Support inbox — the feature walkthrough.
How is this guide?