respond.io API Documentation

The respond.io Developer API enables developers to seamlessly integrate messaging capabilities into their existing platforms or applications. The API provides a wide range of functionalities such as sending and receiving messages, managing contacts, and automating messaging campaigns. With the flexibility and scalability of the respond.io API, developers can streamline their messaging operations and create unique, tailored messaging experiences for their users.

Our API is built to be user-friendly and easy to understand, through the implementation of REST principles. The API follows RESTful conventions as much as possible and uses common methods like GET, POST, PUT, and DELETE for operations. The request and response bodies are encoded in JSON. Additionally, the API adheres to standard HTTP response codes and requires authentication for all requests to ensure secure and reliable integration.

The base URL for all API requests is api.respond.io/v2, and all requests must be made over HTTPS.

👉 Get Started

An API Access Token is used to authenticate the requests. You can view and manage your Access Token in Settings > Integration > Developer API page.

You can generate up to 10 Access Tokens per workspace. Each organization is limited to generate a maximum of 10 Access Tokens.

The authentication is passed via the Authorization header with each request.

respond.io API is subject to rate limiting. The limits are applied on the organization-level.

The API responses contain useful rate limit headers to check the remaining requests.

NameDescription
Retry-AfterNumber of seconds until you can retry the request
X-RateLimit-LimitNumber of requests allowed for this end point
X-RateLimit-RemainingNumber of requests remaining for this end point

Note that when you hit the ratelimit, a 429 (Too Many Requests) HTTP Status Code is returned along with a Retry-After header. These response headers are useful to determine when to make the next API call.

API NameEndpointRequests Per Second
Send a message/contact/{identifier}/message10
Get a message/contact/{identifier}/message/{messageId}15
Create a comment/contact/{identifier}/comment10
Get a contact/contact/{identifier}10
Create, update or delete a contact/contact/{identifier}5
Merge two contacts/contact/merge5
Create or update a contact/contact/create_or_update/{identifier}5
List the contacts/contact/list5
Add or delete tags/contact/{identifier}/tag5
List contact channels/contact/{identifier}/channels5
Get a contact channel/contact/{identifier}/channel/{channelId}10
Assign/unassign conversation/contact/{identifier}/conversation/assignee5
Open/close conversation/contact/{identifier}/conversation/status5
List space channels/space/channel5
List closing notes/space/closing_notes5
List space users/space/user5
Get a space user/space/user/{id}10
Create custom field/space/contact_field5
Get a custom field/space/contact_field/{id}10
List custom fields/space/contact_field5
Status CodeDescription
200 OkThe request is successful and the appropriate response has been provided.
201 CreatedThe request has been fulfilled, resulting in the creation of a new resource.
400 Bad requestThere is an error on the client’s side and, as a result, the server cannot return a response. For example, contact email, phone or ID is invalid.
401 UnauthorisedThe access token is not valid.
404 Not FoundGiven the access token used, the resource does not exist.
429 Too many requestsThis request exceeds the number of requests allowed. Slow down and try again. If you need higher rate limit, contact us here.
449 Your request cannot be processed at the moment as it's in the queue. Please try again in a few minutesThis request cannot be processed as the resource is still being created, please try again later.
502/504 timeoutsThe upstream server hasn’t provided a timely response to the second server, currently serving as a gateway or proxy. As a result, it cannot provide a response to the client.
503The server cannot process the request because it is either overloaded or it is under maintenance.

respond.io API has several endpoints that return lists of items over multiple pages. For performance reasons, the API does not return large record sets all at once. It breaks up the results into smaller subsets and returns them in pages.

The integration can use the pagination.next in another request to receive the next part of the list or pagination.previous to receive the previous part of the list

ParamTypeDescription
cursorIdinteger(optional) A cursor returned from a previous response, used to request the next page of results.
Default: return results from the beginning of the list
limitinteger(optional) The number of items to return.
Default: 10 items
Max: 100 items