# Robin Documentation > Robin's API gives access to your team's data including schedules, presence, and rooms in your building. Use it build apps that extend your office experience using real-world data. ## Guides - [Getting Started](https://docs.robinpowered.com/docs/getting-started.md): 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. - [Analytics API](https://docs.robinpowered.com/docs/analytics-api.md) - [Universal Presence Connector](https://docs.robinpowered.com/docs/universal-connector.md): This API endpoint allows you to send presence and badge events to a specific connector identified by its unique UUID. Each event contains user-related data including email, timestamp, and a lock identifier. ## API Reference - [Reservation](https://docs.robinpowered.com/reference/reservation.md): Entity handling desk (seat) bookings - [Desk (Seat)](https://docs.robinpowered.com/reference/seat.md): An entity representing a desk (seat) where a person may work. - [/seats/:id/settings/:setting_slug](https://docs.robinpowered.com/reference/seatsidsettingssetting_slug.md): Gets a setting for a seat - [/seats/:id/settings/:setting_slug](https://docs.robinpowered.com/reference/seatsidsettingssetting_slug-1.md): Updates a setting for a seat - [/seats/:id/reservations](https://docs.robinpowered.com/reference/reserve-desks.md): Reserve a seat - [/seats/:id/publish-shared-schedule](https://docs.robinpowered.com/reference/publish-shared-schedule.md): Create a shared assigned desk schedule - [/reservations/seats/:id](https://docs.robinpowered.com/reference/reservationsseatsid.md): Updates a seat reservation - [/reservations/seats/:id](https://docs.robinpowered.com/reference/get-seat-reservation.md): Get a seat reservation. - [/reservations/seats/:id/instances](https://docs.robinpowered.com/reference/reservationsseatsidinstances.md): Get the instances for a recurring seat reservation. - [/reservations/seats](https://docs.robinpowered.com/reference/reservationsseats.md): Lists seat reservations. - [/reservations/seats/:id/confirmation](https://docs.robinpowered.com/reference/reservationsseatsidconfirmation.md): Gets the check in for a seat reservation. - [/reservations/seats/:id/confirmation](https://docs.robinpowered.com/reference/reservationsseatsidconfirmation-1.md): Checks in to a seat reservation. - [/reservations/seats/:id/confirmation](https://docs.robinpowered.com/reference/reservationsseatsidconfirmation-2.md): Removes the check in for a seat reservation. - [/reservations/seats/:id/exclusions](https://docs.robinpowered.com/reference/reservationsseatsidexclusions-1.md): Gets exclusions for a desk reservation - [/reservations/seats/:id/exclusions](https://docs.robinpowered.com/reference/reservationsseatsidexclusions.md): Creates an exclusion on a desk reservation - [/free-busy/spaces](https://docs.robinpowered.com/reference/free-busyspaces.md): Search space availability based on multiple parameters and get back results in a "Best Fit" order - [Getting Started](https://docs.robinpowered.com/reference/getting-started-with-scim.md) - [/scim-2/Users](https://docs.robinpowered.com/reference/scim-2users-1.md) - [/scim-2/Users/:id](https://docs.robinpowered.com/reference/scim-2usersid-1.md) - [Exchange credentials for an access token](https://docs.robinpowered.com/reference/posttoken.md) - [List visits](https://docs.robinpowered.com/reference/listvisits-1.md): Retrieve a paginated list of visits for one or more locations within a time range. Results are ordered by start time and paginated using page-based pagination. Use the `paging.has_next_page` field to determine if more results are available. - [Create a visit](https://docs.robinpowered.com/reference/createvisit-1.md): Create a new visit with guests and hosts. Creating a visit is a three-step process: look up the available visit types, optionally fetch the custom field schema, then submit the visit. ## Step 1 — Fetch visit types Call **GET /v1.0/visits/visit-types** with your `location_id` to get the list of active visit types. Each type has an `id` and a human-readable `name` (e.g. `"Interview"`, `"Contractor"`). Use the `id` from this response as the `type_id` field when creating or updating a visit. If the location has no custom visit types configured, the list will be empty and you can omit `type_id`. ```http GET /v1.0/visits/visit-types?location_id= ``` ## Step 2 — Fetch the custom field schema (if applicable) Call **GET /v1.0/visits/custom-visit-forms** with your `location_id`. The response describes every custom field that must or can be supplied when creating a visit: - **`guest_fields`** — collected per guest (e.g. "Company name", "Vehicle plate") - **`visit_fields`** — collected once for the entire visit (e.g. "Purpose of visit") Each field has a `type` (`SHORT_TEXT`, `LONG_TEXT`, or `SINGLE_SELECT`), an `id`, a `label`, and a `required` flag. For `SINGLE_SELECT` fields, the allowed values are listed under `choices`. If `data` is `null`, the location has no custom form and you can skip the `custom_fields` arrays entirely. ```http GET /v1.0/visits/custom-visit-forms?location_id= ``` ## Step 3 — Create the visit Call **POST /v1.0/visits** with the data collected above. ```json { "location_id": "", "start": "2025-06-01T09:00:00-05:00", "type_id": "", "hosts": [{ "user_id": "", "is_visible_to_guests": true, "send_notifications": true }], "guests": [ { "guest_name": "Jane Smith", "guest_email": "jane@example.com", "custom_fields": [ { "id": "", "value": "Acme Corp" } ] } ], "custom_fields": [ { "id": "", "value": "Sales meeting" } ] } ``` Guest-level `custom_fields` go inside each guest object. Visit-level `custom_fields` go at the top level of the request body. - [Get a visit by ID](https://docs.robinpowered.com/reference/getvisit-1.md): Retrieve a single visit by its unique identifier. - [Cancel a visit](https://docs.robinpowered.com/reference/cancelvisit-1.md): Cancel an existing visit by its unique identifier. Cancellation marks all guest invites as canceled and sets the visit's `status` to `"canceled"`. The visit is **not** deleted — it remains retrievable via `GET /visits/:id` and `GET /visits` with `status: "canceled"`. Use `exclude_canceled=true` on the list endpoint to omit canceled visits from results. - [Update a visit](https://docs.robinpowered.com/reference/patchvisit.md): Partially update an existing visit by its unique identifier. All fields are optional. - [List guests on a visit](https://docs.robinpowered.com/reference/listvisitguests.md): Retrieve the paginated list of guest invites for a visit. Optionally filter by invite status. - [Add guests to a visit](https://docs.robinpowered.com/reference/addvisitguests.md): Add one or more guests to an existing visit. Returns the newly created guest invites. Returns `409 Conflict` if any of the provided email addresses are already invited to the visit. - [Update a guest invite](https://docs.robinpowered.com/reference/updatevisitguest.md): Partially update a guest invite on a visit. All fields are optional. Returns `409 Conflict` if the new email address is already used by another active invite on the visit. Returns `422` if the invite is canceled. - [Cancel a guest invite](https://docs.robinpowered.com/reference/cancelvisitguest.md): Cancel a single guest invite on a visit. Returns `422` if the invite is already canceled, if the guest is checked in, or if canceling would remove the last active guest from the visit. - [Get active visit types for a location](https://docs.robinpowered.com/reference/getvisittypes-1.md): Retrieve the list of active visit types for a given location. Use the returned `id` as the `type_id` when creating or updating a visit. - [Get the visit form schema for a location](https://docs.robinpowered.com/reference/getcustomvisitforms-1.md): Retrieve the custom field schema for a location. Returns the guest-level and visit-level fields a caller must populate when creating or updating a visit. Returns `null` data if no form is configured for the location. - [Check in a guest](https://docs.robinpowered.com/reference/checkinguest.md): Mark a guest as checked in. Idempotent — calling this on an already checked-in guest returns 200 with the current state. - [Check out a guest](https://docs.robinpowered.com/reference/checkoutguest.md): Mark a guest as checked out. Idempotent — calling this on an already checked-out guest returns 200 with the current state.