Yappy API

Yappy's API enables developers to integrate their apps and infrastructure with Yappy's ecosystem. Using the API, you can enable your own Apps, Services, etc... to send and receive SMS messages and access other Yappy features.

Please note this API is currently under construction and subject to change.

To utilize this API, you must first install Yappy.


When accessing the API, you must authenticate yourself and the account you are trying to access. To authenticate calls when accessing the API, pass the access token in the request header Access-Token: <your_access_token_here>

Your access token can be found on the Account Settings page. Please keep in mind that this key grants full access to your account; you should never share this token with anyone!
Example: Get Current User
curl --header 'Access-Token: <your_access_token_here>' \
  "created": 1448165156010,
  "email": "elon@teslamotors.com"

HTTP Status Codes

HTTP Response Code Description
200 OK The request was processed correctly.
400 Bad Request The request was not processed due to a request error. Check the message of the response for more information.
401 Unauthorized The Access-Token provided in the header of the request is either missing or invalid.
403 Forbidden The Access-Token provided does not have access to make this request.
404 Not Found The requested item does not exist.
5XX Server Error Something went wrong on Yappy's side.


The API accepts requests over HTTPS at https://api.yappy.im . All POST requests must use a JSON body with the Content-Type header set to application/json .


Responses are formatted in JSON. Keys are either present with a non-empty value, or entirely absent from the response. Empty values are:null,false,"",[], and{}.

Deleted objects will only have the keys identifier, active, created, and modified because all other properties have been removed and are now empty values.
Example: API Response
  "created": 1448165156010,
  "email": "elon@teslamotors.com",
  "name": "Elon Musk"


Due to the nature of the API, some datasets are rather large. To limit the query time as well as the HTTP payload being returned per call, pagination is built into certain operations.

When requests are made to the API, you can specify how many results to return, and which page to return.
By default, all requests are made with a page = 1 and results = 500. Simply request a different value in the URL parameter of the call.

If a response contains a cursor in the response, it means that there are more pages in the result set. Simply call the endpoint again with a value of corsor.
E.G. If your request has page = 1 and results = 20, and there are 30 results, your initial request will yield a respons with cursor = 2. Simple make the call again with cursor = 2 to retrieve the next 10 results, until a cursor object is no longer returned.

Syncing Changes

All API calls which support listing objects also supports the modified_after querystring parameter. This parameter should be a timestamp of the last object of the type in your local database. This will limit the results of the current API call to only objects which were modified after this timestamp.

Make sure to use the timestamps returned by the server, and not local timestamps.
Example: Get Devices
curl --header 'Access-Token: <your_access_token_here>' \