from pctx0 import Pctx0Client
client = Pctx0Client(
access_key="YOUR_ACCESS_KEY",
workspace_id="YOUR_WORKSPACE_ID",
)
session = client.session.update(
"AGENT_ID",
external_id="support-ticket-42",
title="Renamed ticket",
new_labels={"channel": "email"},
)import { Nctx0Client } from "@actx0/nctx0";
const client = new Nctx0Client({
accessKey: "YOUR_ACCESS_KEY",
workspaceId: "YOUR_WORKSPACE_ID",
});
const session = await client.session.update("AGENT_ID", {
externalId: "support-ticket-42",
title: "Renamed ticket",
newLabels: { channel: "email" },
});
package main
import (
"context"
"github.com/Actx0/Gctx0"
)
func main() {
client := gctx0.NewClient(
gctx0.WithAccessKey("YOUR_ACCESS_KEY"),
gctx0.WithWorkspaceId("YOUR_WORKSPACE_ID"),
)
defer client.Close()
ctx := context.Background()
session, err := client.Session.Update(
ctx,
"AGENT_ID",
gctx0.SessionLookup{ExternalID: "support-ticket-42"},
"Renamed ticket",
map[string]string{"channel": "email"},
)
_ = session
_ = err
}
curl -X PUT 'https://app.actx0.com/api/v1/workspaces/<workspaceId>/agents/<agentId>/sessions/by-labels' \
-H "X-Access-Key: YOUR_ACCESS_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"title": "Ticket #4821", "labels": {"userId": "alice", "channel": "web"}}'
# ---
# acli
export ACTX0_ACCESS_KEY="YOUR_ACCESS_KEY"
export ACTX0_WORKSPACE_ID="YOUR_WORKSPACE_ID"
acli session update \
--agent-id AGENT_ID \
--external-id support-ticket-42 \
--title "Renamed ticket" \
--set-label channel=email
{
"id": "33333333-3333-3333-3333-333333333333",
"externalId": "ticket-4821",
"workspaceId": "11111111-1111-1111-1111-111111111111",
"agentId": "22222222-2222-2222-2222-222222222222",
"status": "active",
"createdAt": "2026-07-01T12:00:00Z",
"updatedAt": "2026-07-01T12:00:00Z",
"title": "Ticket #4821",
"labels": {
"userId": "alice",
"channel": "web"
},
"meta": "<unknown>",
"lastActivityAt": "2026-07-01T12:00:00Z"
}{
"errorMessage": "Name is required"
}{
"errorMessage": "Name is required"
}{
"errorMessage": "Name is required"
}{
"errorMessage": "Name is required"
}{
"errorMessage": "Name is required"
}Update Session by Labels
Update session title/labels, selected by external id and/or labels. Identify sessions with the id query param and/or arbitrary label query params (every query key except id, limit, and offset becomes a label). Example: ?id=ticket-4821&userId=alice&channel=web.
from pctx0 import Pctx0Client
client = Pctx0Client(
access_key="YOUR_ACCESS_KEY",
workspace_id="YOUR_WORKSPACE_ID",
)
session = client.session.update(
"AGENT_ID",
external_id="support-ticket-42",
title="Renamed ticket",
new_labels={"channel": "email"},
)import { Nctx0Client } from "@actx0/nctx0";
const client = new Nctx0Client({
accessKey: "YOUR_ACCESS_KEY",
workspaceId: "YOUR_WORKSPACE_ID",
});
const session = await client.session.update("AGENT_ID", {
externalId: "support-ticket-42",
title: "Renamed ticket",
newLabels: { channel: "email" },
});
package main
import (
"context"
"github.com/Actx0/Gctx0"
)
func main() {
client := gctx0.NewClient(
gctx0.WithAccessKey("YOUR_ACCESS_KEY"),
gctx0.WithWorkspaceId("YOUR_WORKSPACE_ID"),
)
defer client.Close()
ctx := context.Background()
session, err := client.Session.Update(
ctx,
"AGENT_ID",
gctx0.SessionLookup{ExternalID: "support-ticket-42"},
"Renamed ticket",
map[string]string{"channel": "email"},
)
_ = session
_ = err
}
curl -X PUT 'https://app.actx0.com/api/v1/workspaces/<workspaceId>/agents/<agentId>/sessions/by-labels' \
-H "X-Access-Key: YOUR_ACCESS_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"title": "Ticket #4821", "labels": {"userId": "alice", "channel": "web"}}'
# ---
# acli
export ACTX0_ACCESS_KEY="YOUR_ACCESS_KEY"
export ACTX0_WORKSPACE_ID="YOUR_WORKSPACE_ID"
acli session update \
--agent-id AGENT_ID \
--external-id support-ticket-42 \
--title "Renamed ticket" \
--set-label channel=email
{
"id": "33333333-3333-3333-3333-333333333333",
"externalId": "ticket-4821",
"workspaceId": "11111111-1111-1111-1111-111111111111",
"agentId": "22222222-2222-2222-2222-222222222222",
"status": "active",
"createdAt": "2026-07-01T12:00:00Z",
"updatedAt": "2026-07-01T12:00:00Z",
"title": "Ticket #4821",
"labels": {
"userId": "alice",
"channel": "web"
},
"meta": "<unknown>",
"lastActivityAt": "2026-07-01T12:00:00Z"
}{
"errorMessage": "Name is required"
}{
"errorMessage": "Name is required"
}{
"errorMessage": "Name is required"
}{
"errorMessage": "Name is required"
}{
"errorMessage": "Name is required"
}Authorizations
Workspace access key for agent/runtime integrations.
Query Parameters
External session id. Provide id and/or arbitrary label query params.
Body
Response
OK
Internal session UUID used in message and memory paths.
"33333333-3333-3333-3333-333333333333"
Client-facing session id from the id query param (or generated).
"ticket-4821"
"11111111-1111-1111-1111-111111111111"
"22222222-2222-2222-2222-222222222222"
"active"
"2026-07-01T12:00:00Z"
"2026-07-01T12:00:00Z"
"Ticket #4821"
Show child attributes
Show child attributes
{ "userId": "alice", "channel": "web" }
"2026-07-01T12:00:00Z"
Was this page helpful?
