OpenAssistantAPI

Organization API

Teams

Team CRUD and member management

GET/teams

List teams

Query parameters

pageinteger
perPageinteger
limitinteger
statusstring

Responses

200Teams
ok reqenumtrue
teams reqany[]
pageinteger
perPageinteger
totalinteger

Request

curl 'https://app.openassistant.us/api/teams' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "teams": [
    null
  ]
}
POST/teams

Create a team

Request body

idstring
name reqstring
adminApprovalRequiredboolean
ownerIdstring

Responses

201Created
ok reqenumtrue
teamany

Request

curl 'https://app.openassistant.us/api/teams' \
  -X POST \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'

Response

{
  "ok": true
}
GET/teams/{teamId}

Get a team

Path parameters

teamId reqstring

Responses

200Team
ok reqenumtrue
teamany

Request

curl 'https://app.openassistant.us/api/teams/<teamId>' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true
}
PUT/teams/{teamId}

Update a team

Path parameters

teamId reqstring

Request body

namestring
adminApprovalRequiredboolean
statusstring
brandingOnEventsboolean
brandingOnMessagesboolean

Responses

200Updated
ok reqenumtrue
teamany

Request

curl 'https://app.openassistant.us/api/teams/<teamId>' \
  -X PUT \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "adminApprovalRequired": true,
  "status": "string",
  "brandingOnEvents": true
}'

Response

{
  "ok": true
}
DELETE/teams/{teamId}

Delete a team

Path parameters

teamId reqstring

Responses

200Deleted
ok reqenumtrue
team reqobject
id reqstring
deletedboolean
messagestring

Request

curl 'https://app.openassistant.us/api/teams/<teamId>' \
  -X DELETE \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "team": {
    "id": "string"
  }
}
GET/teams/{teamId}/members

List team members

Path parameters

teamId reqstring

Query parameters

pageinteger
perPageinteger
limitinteger
statusstring
searchstring

Responses

200Members
ok reqenumtrue
members reqany[]
pageinteger
perPageinteger
totalinteger

Request

curl 'https://app.openassistant.us/api/teams/<teamId>/members' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "members": [
    null
  ]
}
POST/teams/{teamId}/members

Add team member

Path parameters

teamId reqstring

Request body

userId reqstring
rolestring

Responses

201Added
ok reqenumtrue
memberany

Request

curl 'https://app.openassistant.us/api/teams/<teamId>/members' \
  -X POST \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "userId": "string"
}'

Response

{
  "ok": true
}
PUT/teams/{teamId}/members/{memberId}

Update team member

Path parameters

teamId reqstring
memberId reqstring

Request body

rolestring
statusstring

Responses

200Updated
ok reqenumtrue
memberany

Request

curl 'https://app.openassistant.us/api/teams/<teamId>/members/<memberId>' \
  -X PUT \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "role": "string",
  "status": "string"
}'

Response

{
  "ok": true
}
DELETE/teams/{teamId}/members/{memberId}

Remove team member

Path parameters

teamId reqstring
memberId reqstring

Responses

200Removed
ok reqenumtrue
member reqobject
id reqstring
deletedboolean
messagestring

Request

curl 'https://app.openassistant.us/api/teams/<teamId>/members/<memberId>' \
  -X DELETE \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "member": {
    "id": "string"
  }
}
GET/teams/{teamId}/profile

Get team profile (Layered Profile)

Path parameters

teamId reqstring

Responses

200Team profile
ok reqenumtrue
profile reqobject
taglinestring | null
missionstring | null
leadUserIdstring | null
workingHoursobject | null
startstring
endstring
daysstring[]
tzstring
ritualsobject[]
namestring
cadencestring
currentGoalsstring[]
kpisstring[]
commsStylestring | null
valuesstring[]
docsLinksobject[]
labelstring
urlstring
primeDefaultsobject | null
supervisionModestring
defaultChannelsstring[]
403Not a team member
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/teams/<teamId>/profile' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "profile": {
    "tagline": "string",
    "mission": "string",
    "leadUserId": "string",
    "workingHours": {
      "start": "string",
      "end": "string",
      "days": [
        "string"
      ],
      "tz": "string"
    }
  }
}
PATCH/teams/{teamId}/profile

Patch team profile — team admin only

Path parameters

teamId reqstring

Request body

taglinestring | null
missionstring | null
leadUserIdstring | null
workingHoursobject | null
startstring
endstring
daysstring[]
tzstring
ritualsobject[]
namestring
cadencestring
currentGoalsstring[]
kpisstring[]
commsStylestring | null
valuesstring[]
docsLinksobject[]
labelstring
urlstring
primeDefaultsobject | null
supervisionModestring
defaultChannelsstring[]

Responses

200Updated team profile
ok reqenumtrue
profile reqobject
taglinestring | null
missionstring | null
leadUserIdstring | null
workingHoursobject | null
startstring
endstring
daysstring[]
tzstring
ritualsobject[]
namestring
cadencestring
currentGoalsstring[]
kpisstring[]
commsStylestring | null
valuesstring[]
docsLinksobject[]
labelstring
urlstring
primeDefaultsobject | null
supervisionModestring
defaultChannelsstring[]
403Team admin required
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/teams/<teamId>/profile' \
  -X PATCH \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "tagline": "string",
  "mission": "string",
  "leadUserId": "string",
  "workingHours": {
    "start": "string",
    "end": "string",
    "days": [
      "string"
    ],
    "tz": "string"
  }
}'

Response

{
  "ok": true,
  "profile": {
    "tagline": "string",
    "mission": "string",
    "leadUserId": "string",
    "workingHours": {
      "start": "string",
      "end": "string",
      "days": [
        "string"
      ],
      "tz": "string"
    }
  }
}
GET/team-invitations

List pending invitations for a team

Query parameters

teamId reqstring

Responses

200Invitations
ok reqenumtrue
invitations reqobject[]
id reqstring
team reqstring | null
email reqstring
invitedBy reqstring | null
status reqenumpendingacceptedrevokedexpired
expiresAt reqstring
acceptedAt reqstring | null
revokedAt reqstring | null
createdAt reqstring
pageinteger
perPageinteger
totalinteger

Request

curl 'https://app.openassistant.us/api/team-invitations?teamId=' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "invitations": [
    {
      "id": "string",
      "team": "string",
      "email": "string",
      "invitedBy": "string",
      "status": "pending",
      "expiresAt": "2025-01-15T10:30:00.000Z"
    }
  ]
}
POST/team-invitations

Send a team invitation

Request body

teamId reqstring
email reqstring

Responses

201Invitation created
ok reqenumtrue
invitation reqobject
id reqstring
team reqstring | null
email reqstring
invitedBy reqstring | null
status reqenumpendingacceptedrevokedexpired
expiresAt reqstring
acceptedAt reqstring | null
revokedAt reqstring | null
createdAt reqstring

Request

curl 'https://app.openassistant.us/api/team-invitations' \
  -X POST \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "teamId": "string",
  "email": "[email protected]"
}'

Response

{
  "ok": true,
  "invitation": {
    "id": "string",
    "team": "string",
    "email": "string",
    "invitedBy": "string",
    "status": "pending",
    "expiresAt": "2025-01-15T10:30:00.000Z"
  }
}
GET/team-invitations/{invitationId}

Get a team invitation (public — used by invitation landing page)

Path parameters

invitationId reqstring

Responses

200Invitation
ok reqenumtrue
invitation reqobject
idstring
teamstring | null
emailstring
invitedBystring | null
statusenumpendingacceptedrevokedexpired
expiresAtstring
acceptedAtstring | null
revokedAtstring | null
createdAtstring

Request

curl 'https://app.openassistant.us/api/team-invitations/<invitationId>' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "invitation": {
    "id": "string",
    "team": "string",
    "email": "string",
    "invitedBy": "string",
    "status": "pending",
    "expiresAt": "2025-01-15T10:30:00.000Z",
    "teamName": "string",
    "inviterName": "string"
  }
}
DELETE/team-invitations/{invitationId}

Revoke or decline a team invitation

Team owners/admins use this to revoke an invitation. The invitee uses it to decline.

Path parameters

invitationId reqstring

Responses

200Revoked or declined
ok reqenumtrue
invitation reqobject
id reqstring
team reqstring | null
email reqstring
invitedBy reqstring | null
status reqenumpendingacceptedrevokedexpired
expiresAt reqstring
acceptedAt reqstring | null
revokedAt reqstring | null
createdAt reqstring

Request

curl 'https://app.openassistant.us/api/team-invitations/<invitationId>' \
  -X DELETE \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "invitation": {
    "id": "string",
    "team": "string",
    "email": "string",
    "invitedBy": "string",
    "status": "pending",
    "expiresAt": "2025-01-15T10:30:00.000Z"
  }
}
POST/team-invitations/{invitationId}/accept

Accept a team invitation

Path parameters

invitationId reqstring

Request body

newOwnerIdstring

Responses

200Accepted
ok reqenumtrue
invitation reqobject
idstring
teamstring | null
emailstring
invitedBystring | null
statusenumpendingacceptedrevokedexpired
expiresAtstring
acceptedAtstring | null
revokedAtstring | null
createdAtstring
400Ownership transfer required
error reqstring
requiresOwnershipTransfer reqenumtrue
teamId reqstring

Request

curl 'https://app.openassistant.us/api/team-invitations/<invitationId>/accept' \
  -X POST \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "newOwnerId": "string"
}'

Response

{
  "ok": true,
  "invitation": {
    "id": "string",
    "team": "string",
    "email": "string",
    "invitedBy": "string",
    "status": "pending",
    "expiresAt": "2025-01-15T10:30:00.000Z",
    "teamId": "string"
  }
}
GET/teams/{teamId}/invitation-requests

List invitation requests for a team

Path parameters

teamId reqstring

Responses

200Requests
ok reqenumtrue
requests reqobject[]
id reqstring
team reqstring | null
requestedBy reqobject
id reqstring | null
namestring | null
emailstring | null
email reqstring
status reqenumpendingapprovedrejected
expiresAt reqstring
createdAt reqstring
pageinteger
perPageinteger
totalinteger

Request

curl 'https://app.openassistant.us/api/teams/<teamId>/invitation-requests' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "requests": [
    {
      "id": "string",
      "team": "string",
      "requestedBy": {
        "id": "string"
      },
      "email": "string",
      "status": "pending",
      "expiresAt": "2025-01-15T10:30:00.000Z"
    }
  ]
}
POST/teams/{teamId}/invitation-requests

Submit an invitation request

Path parameters

teamId reqstring

Request body

email reqstring

Responses

201Created
ok reqenumtrue
request reqobject
id reqstring
team reqstring | null
requestedBy reqobject
id reqstring | null
namestring | null
emailstring | null
email reqstring
status reqenumpendingapprovedrejected
expiresAt reqstring
createdAt reqstring

Request

curl 'https://app.openassistant.us/api/teams/<teamId>/invitation-requests' \
  -X POST \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "email": "[email protected]"
}'

Response

{
  "ok": true,
  "request": {
    "id": "string",
    "team": "string",
    "requestedBy": {
      "id": "string"
    },
    "email": "string",
    "status": "pending",
    "expiresAt": "2025-01-15T10:30:00.000Z"
  }
}
PATCH/teams/{teamId}/invitation-requests/{requestId}

Approve or reject an invitation request

Path parameters

teamId reqstring
requestId reqstring

Request body

action reqenumapprovereject

Responses

200Processed
ok reqenumtrue

Request

curl 'https://app.openassistant.us/api/teams/<teamId>/invitation-requests/<requestId>' \
  -X PATCH \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "action": "approve"
}'

Response

{
  "ok": true
}