Connect a Composio account
Creates a Composio Connect Link for the authenticated organization. Arbol stores no account or authorization session.
curl --request POST \
--url https://api.getarbol.com/v1/connected-accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"integrationKey": "google-calendar",
"label": "agenda-principal"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({integrationKey: 'google-calendar', label: 'agenda-principal'})
};
fetch('https://api.getarbol.com/v1/connected-accounts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.getarbol.com/v1/connected-accounts"
payload = {
"integrationKey": "google-calendar",
"label": "agenda-principal"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"account": {
"action": "reauthorize",
"createdAt": "2026-08-29T14:30:00Z",
"displayIdentity": "<string>",
"id": "<string>",
"integrationKey": "google-calendar",
"label": "agenda-principal",
"revision": 123,
"status": "active",
"updatedAt": "2026-08-29T14:30:00Z"
},
"authorization": {
"expiresAt": "2026-08-29T14:30:00Z",
"url": "<string>"
}
}{
"defined": true,
"inferable": true,
"code": "BAD_REQUEST",
"status": 400,
"message": "<string>",
"data": {
"issues": [
{
"code": "custom",
"message": "<string>",
"path": [
"<string>"
]
}
],
"truncated": true
}
}{
"defined": true,
"inferable": true,
"code": "UNAUTHORIZED",
"status": 401,
"message": "<string>",
"data": "<unknown>"
}{
"defined": true,
"inferable": true,
"code": "FORBIDDEN",
"status": 403,
"message": "<string>",
"data": {
"missingPermissions": [
"agents:read"
]
}
}{
"defined": true,
"inferable": true,
"code": "NOT_FOUND",
"status": 404,
"message": "<string>",
"data": "<unknown>"
}{
"code": "PAYLOAD_TOO_LARGE",
"defined": false,
"inferable": false,
"message": "<string>",
"data": "<unknown>"
}{
"code": "UNSUPPORTED_MEDIA_TYPE",
"defined": false,
"inferable": false,
"message": "<string>",
"data": "<unknown>"
}{
"defined": true,
"inferable": true,
"code": "TOO_MANY_REQUESTS",
"status": 429,
"message": "<string>",
"data": {
"retryAfterSeconds": 123
}
}{
"defined": true,
"inferable": true,
"code": "SERVICE_UNAVAILABLE",
"status": 503,
"message": "<string>",
"data": {
"code": "COMPOSIO_FAILURE",
"message": "The integration operation could not be completed.",
"retryable": false,
"data": {
"reason": "integration_tool_unavailable",
"statusCode": 349
}
}
}Authorizations
Organization-scoped Auth0 user access token issued to an approved first-party client or exchanged by a trusted OBO resource server.
Body
Creates one pending account for a live-discovered integration under a customer label.
Stable provider-neutral key for a live-discovered business integration.
1 - 120^[a-z0-9][a-z0-9.-]*$"google-calendar"
Customer-managed account label, unique within one organization and integration.
1 - 120"agenda-principal"
Response
OK
Current account projection plus the short-lived human authorization capability.
Composio-owned connected account projected for the authenticated organization.
Show child attributes
Show child attributes
Short-lived provider authorization capability intended for an authenticated human.
Show child attributes
Show child attributes
curl --request POST \
--url https://api.getarbol.com/v1/connected-accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"integrationKey": "google-calendar",
"label": "agenda-principal"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({integrationKey: 'google-calendar', label: 'agenda-principal'})
};
fetch('https://api.getarbol.com/v1/connected-accounts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.getarbol.com/v1/connected-accounts"
payload = {
"integrationKey": "google-calendar",
"label": "agenda-principal"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"account": {
"action": "reauthorize",
"createdAt": "2026-08-29T14:30:00Z",
"displayIdentity": "<string>",
"id": "<string>",
"integrationKey": "google-calendar",
"label": "agenda-principal",
"revision": 123,
"status": "active",
"updatedAt": "2026-08-29T14:30:00Z"
},
"authorization": {
"expiresAt": "2026-08-29T14:30:00Z",
"url": "<string>"
}
}{
"defined": true,
"inferable": true,
"code": "BAD_REQUEST",
"status": 400,
"message": "<string>",
"data": {
"issues": [
{
"code": "custom",
"message": "<string>",
"path": [
"<string>"
]
}
],
"truncated": true
}
}{
"defined": true,
"inferable": true,
"code": "UNAUTHORIZED",
"status": 401,
"message": "<string>",
"data": "<unknown>"
}{
"defined": true,
"inferable": true,
"code": "FORBIDDEN",
"status": 403,
"message": "<string>",
"data": {
"missingPermissions": [
"agents:read"
]
}
}{
"defined": true,
"inferable": true,
"code": "NOT_FOUND",
"status": 404,
"message": "<string>",
"data": "<unknown>"
}{
"code": "PAYLOAD_TOO_LARGE",
"defined": false,
"inferable": false,
"message": "<string>",
"data": "<unknown>"
}{
"code": "UNSUPPORTED_MEDIA_TYPE",
"defined": false,
"inferable": false,
"message": "<string>",
"data": "<unknown>"
}{
"defined": true,
"inferable": true,
"code": "TOO_MANY_REQUESTS",
"status": 429,
"message": "<string>",
"data": {
"retryAfterSeconds": 123
}
}{
"defined": true,
"inferable": true,
"code": "SERVICE_UNAVAILABLE",
"status": 503,
"message": "<string>",
"data": {
"code": "COMPOSIO_FAILURE",
"message": "The integration operation could not be completed.",
"retryable": false,
"data": {
"reason": "integration_tool_unavailable",
"statusCode": 349
}
}
}