Carbon Voice API (1.0.0)
Download OpenAPI specification:Download
- Workspace: An area that groups together people and Conversations.
- Conversation: A channel of communication. A grouping of people and messages related to a given topic.
- Collaborators: A group of people who are part of a Conversation.
- Discussion: Any post into a conversation
- CarbonLink: A link (on a website, QR code, or phone call) to start a conversation.
This API is served over HTTPS.
All URLs referenced in the documentation have the following base: https://api.carbonvoice.app.
There are three ways to authenticate with this API:
- with an OAuth2 Access Token in the Authorization request header field (which uses the Bearer authentication scheme to transmit the Access Token)
- with your Client ID and Client Secret credentials
- with a PXToken
Each endpoint supports only one option.
oauth2
implicit http://localhost:8081/oauth/authorizeadmin-Admin
identity-View information about a user's identity
profile:read-View a user's profile
profile:write-Manage user's profile information: emails, phones, videocall, and more
channels:read-View basic information about users's channels
channels:write-Manage user's channels and create new ones on a user's behalf
channels:join-Join user to an existing channel
Errors
When an error occurs, you will receive an error object. Most of these error objects contain an error code and an error description so that your applications can more efficiently identify the problem.
If you get an 4xx HTTP response code, then you can assume that there is a bad request from your end. In this case, check the Standard Error Responses for more context.
5xx errors suggest a problem on our end, so in this case, check Carbon Voice's Status to see how our systems are doing.
In any other case you can use our support options.
Rate-Limiting
This API is subject to rate limiting. The limits differ per endpoint.
If you exceed the provided rate limit for a given endpoint, you will receive the 429 Too Many Requests response with the following message: Too many requests. Check the X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers.
For details on rate limiting, refer to Rate Limit Policy.
Response samples
- 200
{- "notifications": [
- {
- "_id": "string",
- "user_id": "string",
- "type": "message",
- "workspace_id": "string",
- "channel_id": "string",
- "parent_message_id": "string",
- "message_id": "string",
- "message": "string",
- "created_on": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "from_user_id": "string",
- "pushInfo": {
- "title": "string",
- "subtitle": "string",
- "body": "string",
- "data": { }
}
}
], - "workspaces": [
- {
- "workspace_guid": "string",
- "vanity_name": "string",
- "workspace_name": "string",
- "workspace_description": "string",
- "image_url": "string",
- "owner_guid": "string",
- "type_cd": "string",
- "created_by": "string",
- "created_ts": 0,
- "last_updated_ts": 0,
- "creator_first_name": "string",
- "creator_last_name": "string",
- "role_cd": "string",
- "plan_type": "string",
- "channels": [
- "string"
], - "availableChannelCount": 0,
- "collaborators": [
- "string"
], - "settings": { },
- "phones": [
- "string"
]
}
], - "channels": [
- {
- "workspace_guid": "string",
- "channel_guid": "string",
- "channel_name": "string",
- "channel_description": "string",
- "bg_rrggbb": "string",
- "txt_rrggbb": "string",
- "channel_settings": "string",
- "image_url": "string",
- "is_private": "string",
- "post_rule": "string",
- "dm_hash": "string",
- "last_updated_ts": 0,
- "created_ts": 0,
- "owner_name": "string",
- "sms_phone": "string",
- "json_collaborators": [
- { }
], - "joined_ts": 0,
- "is_favorite": "N",
- "last_heard_ts": 0,
- "last_posted_ts": 0,
- "workspace_name": "string",
- "workspace_image_url": "string",
- "type": "directMessage",
- "images": [
- "string"
], - "moreCount": 0,
- "unread_cnt": 0,
- "avatars": { },
- "createdNew": { },
- "settings": { },
- "attachments": [
- {
- "_id": "string",
- "creator_id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "type": "string",
- "link": "string",
- "active_begin": "2019-08-24T14:15:22Z",
- "active_end": "2019-08-24T14:15:22Z",
- "filename": "string",
- "mime_type": "string",
- "length_in_bytes": 0,
- "location": { }
}
]
}
], - "contacts": [
- { }
]
}Response samples
- 200
{- "success": true,
- "workspaces": [
- {
- "workspace_guid": "string",
- "vanity_name": "string",
- "workspace_name": "string",
- "workspace_description": "string",
- "image_url": "string",
- "owner_guid": "string",
- "type_cd": "string",
- "created_by": "string",
- "created_ts": 0,
- "last_updated_ts": 0,
- "creator_first_name": "string",
- "creator_last_name": "string",
- "role_cd": "string",
- "plan_type": "string",
- "channels": [
- "string"
], - "availableChannelCount": 0,
- "collaborators": [
- "string"
], - "settings": { },
- "phones": [
- "string"
]
}
], - "usedAccessToken": true
}Create label
Request Body schema: application/json
| behavior required | string Enum: "removeOnListenStart" "removeWhenHeard" "persistent" |
| name required | string |
| space_guid required | string |
| type required | string Enum: "personal" "workspace" "system" "reaction" |
Responses
Request samples
- Payload
{- "name": "string",
- "behavior": "removeOnListenStart",
- "type": "personal",
- "space_guid": "string"
}Update label
path Parameters
| guid required | string |
Request Body schema: application/json
| behavior required | string Enum: "removeOnListenStart" "removeWhenHeard" "persistent" |
| name required | string |
| space_guid required | string |
| type required | string Enum: "personal" "workspace" "system" "reaction" |
Responses
Request samples
- Payload
{- "name": "string",
- "behavior": "removeOnListenStart",
- "type": "personal",
- "space_guid": "string"
}Create Notification
Request Body schema: application/json
| _id required | string |
| channel_id required | string |
| created_at required | string <date-time> |
| created_on required | string <date-time> |
| from_user_id required | string |
| message required | string |
| message_id required | string |
| parent_message_id required | string |
required | object (PushInfo) |
| type required | string Enum: "message" "tag" |
| user_id required | string |
| workspace_id required | string |
Responses
Request samples
- Payload
{- "_id": "string",
- "user_id": "string",
- "type": "message",
- "workspace_id": "string",
- "channel_id": "string",
- "parent_message_id": "string",
- "message_id": "string",
- "message": "string",
- "created_on": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "from_user_id": "string",
- "pushInfo": {
- "title": "string",
- "subtitle": "string",
- "body": "string",
- "data": { }
}
}Authenticate User
Request Body schema: application/json
| client_id required | string The API Key given by the application |
| client_secret required | string The API Token given by the application |
| code required | string The authorization code when grant_type is set to "authorization_code" |
| exp required | number The expiration time of the assertion, specified as seconds since 00:00:00 UTC, January 1, 1970. This value has a maximum of 1 hour after the issued time. |
| grant_type required | string The type of grant you are requesting, "client_credentials","refresh_token","authorization_code" |
| iat required | number The time the assertion was issued, specified as seconds since 00:00:00 UTC, January 1, 1970. |
| password required | string The password when grant_type is set to "password_grant" |
| refresh_token required | string The refresh token only when grant_type is set to "refresh_token" |
| scopes required | Array of strings The list of the permissions (tpApps) that the application requests. |
| username required | string The username only when grant_type is set to "refresh_token" |
Responses
Request samples
- Payload
{- "grant_type": "string",
- "client_id": "string",
- "client_secret": "string",
- "exp": 0,
- "iat": 0,
- "scopes": [
- "string"
], - "refresh_token": "string",
- "username": "string",
- "password": "string",
- "code": "string"
}Response samples
- 200
{- "access_token": "string",
- "token_type": "string",
- "refresh_token": "string",
- "expires_in": 0,
- "refresh_token_exp": 0,
- "scope": "string"
}Authorize User
query Parameters
| client_id required | string Application client_id |
| redirect_uri required | string The URL to which Auth will redirect the browser after authorization has been granted by the user. |
| response_type required | string Use |
| scope required | string A space-delimited list of permissions that the application requires. |
| state required | string An opaque value the applications adds to the initial request that the authorization server includes when redirecting the back to the application. This value must be used by the application to prevent CSRF attacks. |
Responses
Create playlist
Request Body schema: application/json
| name required | string |
required | object (SearchParameters) |
Responses
Request samples
- Payload
{- "search_parameters": {
- "label_guids": [
- "string"
], - "user_guids": [
- "string"
], - "begin_date": "2019-08-24T14:15:22Z",
- "end_date": "2019-08-24T14:15:22Z",
- "heardStatus": "heard",
- "limit": 0
}, - "name": "string"
}Response samples
- 201
{- "_id": "string",
- "name": "string",
- "search_parameters": {
- "label_guids": [
- "string"
], - "user_guids": [
- "string"
], - "begin_date": "2019-08-24T14:15:22Z",
- "end_date": "2019-08-24T14:15:22Z",
- "heardStatus": "heard",
- "limit": 0
}, - "image_url": "string"
}Response samples
- 200
[- {
- "_id": "string",
- "name": "string",
- "search_parameters": {
- "label_guids": [
- "string"
], - "user_guids": [
- "string"
], - "begin_date": "2019-08-24T14:15:22Z",
- "end_date": "2019-08-24T14:15:22Z",
- "heardStatus": "heard",
- "limit": 0
}, - "image_url": "string"
}
]Update playlist
path Parameters
| playlistguid required | string |
Request Body schema: application/json
| name required | string |
required | object (SearchParameters) |
Responses
Request samples
- Payload
{- "search_parameters": {
- "label_guids": [
- "string"
], - "user_guids": [
- "string"
], - "begin_date": "2019-08-24T14:15:22Z",
- "end_date": "2019-08-24T14:15:22Z",
- "heardStatus": "heard",
- "limit": 0
}, - "name": "string"
}Search messages
Request Body schema: application/json
| begin_date required | string <date-time> |
| end_date required | string <date-time> |
| heardStatus required | string Enum: "heard" "unheard" "any" |
| label_guids required | Array of strings |
| limit required | number |
| user_guids required | Array of strings |
Responses
Request samples
- Payload
{- "label_guids": [
- "string"
], - "user_guids": [
- "string"
], - "begin_date": "2019-08-24T14:15:22Z",
- "end_date": "2019-08-24T14:15:22Z",
- "heardStatus": "heard",
- "limit": 0
}Response samples
- 200
{- "messages": [
- {
- "message_guid": "string",
- "creator_guid": "string",
- "duration_ms": 0,
- "word_cloud": "string",
- "message_ts": 0,
- "last_updated_at": 0,
- "keywords_txt": "string",
- "message_url": "string",
- "transcript_txt": "string",
- "workspace_guid": "string",
- "channel_guids": [
- "string"
], - "waveform_url": "string",
- "waveform_percentages": [
- "string"
], - "creator_image_url": "string",
- "creator_first_name": "string",
- "creator_last_name": "string",
- "reply_count": 0,
- "reply_summary": { },
- "parent_message_guid": "string",
- "heard_ms": 0,
- "heard_pct": 0,
- "data": { },
- "unheard_replies": 0,
- "audio_route": "string",
- "attachments": [
- "string"
], - "heard_status": [
- "string"
], - "notes": "string",
- "settings": { },
- "notify": true,
- "reaction_summary": { },
- "name": "string",
- "transcription_timecodes": [
- "string"
], - "is_text_message": true,
- "unique_client_id": "string",
- "status": "string"
}
], - "success": true,
- "unheard_counts_by_channel": { }
}Invite user to workspace
Request Body schema: application/json
| email required | string |
| phone required | string |
| user_guid required | string |
| workspace_guid required | string |
Responses
Request samples
- Payload
{- "workspace_guid": "string",
- "user_guid": "string",
- "email": "string",
- "phone": "string"
}Upsert workspace
Request Body schema: application/json
| type_cd required | string |
| user_guid required | string |
| vanity_name required | string |
| workspace_description required | string |
| workspace_guid required | string |
| workspace_name required | string |
Responses
Request samples
- Payload
{- "user_guid": "string",
- "workspace_guid": "string",
- "workspace_name": "string",
- "workspace_description": "string",
- "type_cd": "string",
- "vanity_name": "string"
}