Getting Started

Robin's API gives developers the power to interact with their team's data (locations, spaces, presence, etc.) and build third-party applications to extend Robin's capabilities.


Deprecations and future breaking changes

  • The GET /free-busy/spaces endpoints will be removed some time in the future. Please use the POST /free-busy/spaces endpoint instead.
  • Event properties started_at and ended_at will be removed some time in the future. Please use start and end instead.
  • The ?include=amenities submodel for spaces will be removed some time in the future. Please use ?include=space_amenities instead.

Shared Assigned Desks


Changes for assigned desks

We are rolling out Shared Assigned Desk functionality for organizations. As a result, ["assigned"] desks and assignedreservation type are getting phazed out and replaced with ["assigned","shared"]and ["hoteled","shared]"desk types, and shared reservation types.

Organizations have until July 1st to adjust to the changes in API, after which all existing ["assigned"]desks and assigned reservations are being converted to their Shared Assigned Desk counterparts.

More on the Desk (Seat) and Reservation models, and the new /seats/:id/publish-shared-schedule endpoint.

Base URL

All requests should be made to Please note that this may change with future releases of the API.


Every API request must contain an Authorization header with a valid access token. You'll need one to get started.

Get your token

Log into the web dashboard and generate a new token via your team's integration settings. (Note: You must be an administrator)

Example Authorization header

Authorization: Access-Token {{token}}
# Standard CURL request with authorization header
curl -X GET
    -H "Authorization: Access-Token {{token}}"

Response structure

All API responses share a basic JSON structure. The response is always an object with two properties meta and data and a conditional third property, paging.

The examples below show what full responses looks like:


  "meta": {
    "status_code": 200,
    "status": "OK",
    "message": "",
    "more_info": {}
  "data": [
      "space_id": 1,
      "user_id": 9,
      "last_seen_at": "2014-05-22T14:49:48+0000",
      "arrived_at": "2014-05-22T14:49:48+0000",
      "session_ttl": 30,
      "session_active": true,
      "user": {
        "id": 1,
        "access_level": 9001,
        "name": "George Jetson",
        "slug": "gjetson",
        "avatar": "",
        "created_at": "2014-05-05T16:06:58+0000",
        "updated_at": "2014-05-05T16:06:58+0000",
        "primary_email": {
          "email": "[email protected]",
          "is_verified": true
  "paging": {
    "page": 1,
    "per_page": 10


      "message":"The posted data did not pass validation",
            "can't be blank"


Common response codes


Response CodeTitleMeaning
200SUCCESSThe response completed successfully
201CREATEDThe request was a successful and a new resource was created as a result.


Response CodeTitleMeaning
400BAD_REQUESTThere was an error in the request parameters. This error is most commonly send when trying to create or modify a resource with invalid attributes.
401UNAUTHORIZEDThe Authorization header is missing or invalid.
403FORBIDDENThe authorized entity is not permitted to view or modify a resource.
404NOT_FOUNDThe resource does not exist.

HTTP request methods

GETRetrieves a resource
POSTCreates a resource
PUTCreates or replaces a resource
PATCHUpdates an existing resource
DELETERemoves a resource