Skip to content

List connection choices

View as Markdown
GET
/v1/connection-choices
curl --request GET \
--url 'https://example.com/v1/connection-choices?projectId=2489E9AD-2EE2-8E00-8EC9-32D5F69181C0&owner=me&includeRemoved=false&limit=25' \
--header 'Authorization: Bearer <token>'

The project’s live choices in this server’s environment: which connection each agent or flow, or one of its tools, uses for an app. The project’s members may read them (read on the project): the company’s, and their own. A tenant admin reads every person’s too; with owner=me, anyone reads their own alone. Removed choices, a choice’s history, are listed only with includeRemoved=true. A choice of a connection that’s since been disconnected stays listed until it’s set again or removed.

projectId
required
string format: uuid

The project.

agentId
string

Only this agent’s.

flowId
string

Only this flow’s.

app
string

Only this app’s (its entry id).

toolId
string

Only this tool’s own choices.

owner
string
Allowed values: me

me: only the caller’s own, even for a tenant admin.

includeRemoved
boolean

true lists removed choices too.

limit
integer
default: 25 >= 1 <= 100

1..100. Default 25.

cursor
string

Where the previous page ended: its nextCursor, as it came. A runtime that seals cursors takes one only for the same list, filters and caller, within a day; otherwise 400 bad-input, and the list starts again without it. Absent → first page.

Page of choices.

Media typeapplication/json
object
data
required
Array<object>

Which connection an agent or a flow uses for an app in a project, in one env: agentId or flowId, one of them. The company’s, or a person’s own (person), for their runs. With toolId, it’s that tool’s, which comes before the agent’s or flow’s. A choice is never changed: changing it removes it and makes a new one at the next version.

object
choiceId
required
string format: uuid
projectId
required
string format: uuid
envName
required
string
agentId
string
flowId
string
app
required

The app’s entry id (google): the connection’s.

string
toolId

The tool it’s for, with need. Absent: the agent’s or flow’s choice, for every tool’s need of the app.

string
need

The tool’s name for the connection (calendar), with toolId.

string
connectionId
required

The chosen connection, and a set’s default. A choice of a connection that’s since been disconnected stays until it’s set again or removed.

string format: uuid
connectionIds

A set: the connections a call of the tool may name one of (by its name), connectionId among them. A call that names none uses connectionId. Only a tool’s choice, for a tool that changes nothing. Absent for one connection.

Array<string>
>= 2 items <= 10 items
person

Whose choice it is, for a person’s connection: theirs alone to make, change or remove. Absent: the company’s.

object
userId
required
string
>= 1 characters
version
required

From 1, per project, env, agent or flow, app, tool and need, and person.

integer
>= 1
createdAt
required
string format: date-time
createdBy
required
string
removedAt

When it was removed, or replaced by a new choice. Only a removed choice has it.

string format: date-time
removedBy
string
nextCursor
string
hasMore
required
boolean
Examplegenerated
{
"data": [
{
"choiceId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"projectId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"envName": "example",
"agentId": "example",
"flowId": "example",
"app": "example",
"toolId": "example",
"need": "example",
"connectionId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"connectionIds": [
"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
],
"person": {
"userId": "example"
},
"version": 1,
"createdAt": "2026-04-15T12:00:00Z",
"createdBy": "example",
"removedAt": "2026-04-15T12:00:00Z",
"removedBy": "example"
}
],
"nextCursor": "example",
"hasMore": true
}

No projectId, or one that is not a UUID; an app that is not an entry id; both agentId and flowId; an owner other than me; or an includeRemoved other than true or false (bad-input).

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}

Missing / malformed / expired / revoked bearer token.

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}

Not a member of the project (permission-denied).

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}

The database was too busy to answer in time (database-busy); Retry-After (whole seconds) says when to try again.

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}

See also