Everything an AI agent can do with the Remote API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints31
API versionv1
Last updated23 June 2026
Orientation

How the Remote API works.

The Remote API is how an app or AI agent works with a Remote company: listing and onboarding employments, requesting and approving time off, reviewing timesheets and payroll, and reading contractor invoices. Access is granted through an organization-scoped API token, or OAuth 2.0 for partners with per-area scopes, that sets which areas a call can read or write. Remote drives country-specific onboarding from dynamic JSON Schema forms, and it can push events to a registered endpoint when records change.

31Endpoints
8Capability groups
16Read
15Write
14Permissions
Authentication
A first-party integration authenticates with an organization-scoped API token sent as a Bearer token in the Authorization header. The token's prefix marks its environment: ra_live operates on real company data through the production gateway, and ra_test works only against the sandbox. Only a company admin or owner can generate or revoke a token. Partners authenticate with OAuth 2.0 instead.
Permissions
OAuth scopes are per area and split read from write, like employment:read versus employment:write, timeoff:read versus timeoff:write, so a partner token reaches only the areas it was granted. A first-party API token is broad and organization-scoped rather than carrying per-area scopes, so the same token can read and write across the company; Bollard narrows that down per agent.
Versioning
Remote versions in the request path. The v1 surface is stable and covers most resources, while a newer v2 exists for some employment endpoints, like updating an employment or its basic information. Dated changes ship through the developer changelog rather than a version string sent per request.
Data model
An employment is the central record, joining a worker to a company and a country, and most resources hang off it: contracts, time off, timesheets, payslips, expenses, and benefits. Many onboarding and update payloads are driven by a country-specific JSON Schema returned by a form-schema endpoint, so required fields adapt to local rules. Lists are page-based and a state change can be delivered as a webhook event.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Remote determines what it can reach. A first-party integration calls with an organization-scoped API token, a partner integration uses OAuth 2.0, and Remote can push events to a registered endpoint, with each route governed by the token behind it and the permissions that token carries.

Ways to connect

REST API

The REST API uses JSON over standard HTTP verbs and status codes, with page-based lists, at the production gateway https://gateway.remote.com and the sandbox at https://gateway.remote-sandbox.com. A first-party call authenticates with an organization-scoped API token as a Bearer token. Resources are versioned in the path, v1 for most and v2 for some employment endpoints.

Best forConnecting an app or AI agent to a single Remote company.
Governed byThe API token and the company it belongs to.
Docs ↗

OAuth 2.0 (partners)

Partners connect with OAuth 2.0, using the client-credentials flow with a client id and secret and a refresh-token flow to renew access. Access tokens last one hour (3600 seconds) and carry per-area read and write scopes, like employment:read and timeoff:write, so a partner integration reaches only the areas its scopes were granted.

Best forBuilding a partner integration across many Remote companies.
Governed byThe OAuth grant and the scopes on the token.
Docs ↗

Webhooks

Remote POSTs an event to an HTTPS endpoint when a record changes, across employments, contracts, time off, expenses, incentives, payslips, and companies. Payloads are stateless and carry the resource ids, so an integration re-fetches current details, and the endpoint returns a 2XX response to confirm delivery. Webhook deliveries can be verified for authenticity.

Best forReceiving Remote events at an app or AI agent.
Governed byThe endpoint registration and signature verification.
Docs ↗
Authentication

Customer API token

A first-party API token is organization-scoped and broad: it can read and write across the company's data and is not split into per-area scopes. It is sent as a Bearer token in the Authorization header, and only a company admin or owner can generate or revoke it. The ra_live prefix marks a production token and ra_test a sandbox token, and the two never cross environments.

TokenBearer API token (ra_live_... / ra_test_...)
Best forA first-party integration with one Remote company.
Docs ↗

OAuth 2.0 (partners)

Partners authenticate with OAuth 2.0, using the client-credentials flow (client id and secret) or a refresh-token flow to renew access. Tokens are valid for one hour and carry per-area read and write scopes, so a partner reaches only the areas its scopes cover.

TokenOAuth 2.0 access token (1-hour lifetime)
Best forPartner integrations acting across many companies.
Docs ↗
Capability map

What an AI agent can do in Remote.

The Remote API is split into areas an agent can act on, like employments, contracts, time off, timesheets, payroll, invoices, and companies. Each area has its own methods, and writes in some areas change a worker's records, approve leave, or move a contract forward.

Endpoint reference

Every Remote API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Employments

Methods for listing, onboarding, and updating employment records.7

Per-area scope on OAuth; a first-party API token is broad and reads this without a per-area scope. Filtering by multiple statuses was added 2025-03-06.

Acts onemployment
Permission (capability)employment:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The payload follows the country's JSON Schema form; fetch the schema first.

Acts onemployment
Permission (capability)employment:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onemployment
Permission (capability)employment:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A v2 of this endpoint exists with newer fields.

Acts onemployment
Permission (capability)employment:write
VersionAvailable since the API’s base version
Webhook eventemployment.updated
Rate limitStandard limits apply

The v2 surface for some employment endpoints; prefer it for newer fields.

Acts onemployment
Permission (capability)employment:write
VersionAvailable since the API’s base version
Webhook eventemployment.updated
Rate limitStandard limits apply

Sends the worker an invitation to self-serve their details.

Acts onemployment
Permission (capability)employment:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Signals that the employment's details are complete.

Acts onemployment
Permission (capability)employment:write
VersionAvailable since the API’s base version
Webhook eventemployment.onboarding.completed
Rate limitStandard limits apply

Contracts & amendments

Methods for employment contracts and contract amendments.3

Read-only.

Acts onemployment_contract
Permission (capability)contract:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts oncontract_amendment
Permission (capability)contract_amendment:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The payload follows the amendment's JSON Schema form.

Acts oncontract_amendment
Permission (capability)contract_amendment:write
VersionAvailable since the API’s base version
Webhook eventcontract_amendment.done
Rate limitStandard limits apply

Time off

Methods for requesting, approving, and canceling time off.6

Read-only.

Acts ontimeoff
Permission (capability)timeoff:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts ontimeoff
Permission (capability)timeoff:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

This API currently supports creating approved requests; an employee token omits employment_id.

Acts ontimeoff
Permission (capability)timeoff:write
VersionAvailable since the API’s base version
Webhook eventtimeoff.requested
Rate limitStandard limits apply

Changes the request's dates or details.

Acts ontimeoff
Permission (capability)timeoff:write
VersionAvailable since the API’s base version
Webhook eventtimeoff.updated
Rate limitStandard limits apply

Moves the request to approved.

Acts ontimeoff
Permission (capability)timeoff:write
VersionAvailable since the API’s base version
Webhook eventtimeoff.approved
Rate limitStandard limits apply

There are also approve_cancellation and decline_cancellation actions for canceling approved leave.

Acts ontimeoff
Permission (capability)timeoff:write
VersionAvailable since the API’s base version
Webhook eventtimeoff.canceled
Rate limitStandard limits apply

Timesheets

Methods for reviewing and approving submitted timesheets.3

Read-only.

Acts ontimesheet
Permission (capability)timesheet:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Approves the worker's submitted hours.

Acts ontimesheet
Permission (capability)timesheet:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Returns the timesheet to the worker instead of approving it.

Acts ontimesheet
Permission (capability)timesheet:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Payroll

Methods for reading payroll calendars.2

Read-only reference data; no dedicated read scope is documented for this endpoint.

Acts onpayroll_calendar
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only reference data.

Acts onpayroll_calendar
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Companies

Methods for companies, managers, and departments.3

Filtering by external_id was added 2025-03-21.

Acts oncompany
Permission (capability)company:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The payload follows the company JSON Schema form.

Acts oncompany
Permission (capability)company:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Grants a person admin access to the company.

Acts oncompany_manager
Permission (capability)company_manager:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Countries & forms

Methods for supported countries, holidays, and country form schemas.3

Reference data; requires a valid token but no per-area scope.

Acts oncountry
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Drives country-specific onboarding fields; pass an ISO 3166-1 alpha-3 country code and a form name.

Acts oncountry_form
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Reference data; accepts country_code, year, and an optional country_subdivision_code.

Acts onholiday
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Invoices & billing

Methods for contractor invoices, schedules, and billing documents.4

Read-only.

Acts oncontractor_invoice
Permission (capability)invoices:read
VersionAvailable since the API’s base version
Webhook eventcontractor_invoice.paid_out
Rate limitStandard limits apply

Read-only.

Acts oncontractor_invoice
Permission (capability)invoices:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Sets up automatic invoicing for a contractor.

Acts oncontractor_invoice_schedule
Permission (capability)invoices:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onbilling_document
Permission (capability)invoices:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Remote can notify an app when something happens in an account, like a time off request being approved or an employment being updated. It POSTs an event describing what changed, and the payload carries the resource ids so an integration re-fetches the current details rather than trusting the message body.

EventWhat it signalsTriggered by
timeoff.requestedA time off request was submitted and is awaiting a decision./v1/timeoff
timeoff.approvedA time off request was approved./v1/timeoff/{id}/approve
timeoff.canceledA time off request was canceled./v1/timeoff/{id}/cancel
timeoff.updatedA time off request was changed, like its dates or details./v1/timeoff/{id}
employment.updatedAn employment record was updated./v1/employments/{employment_id}
/v2/employments/{employment_id}
employment.onboarding.completedAn employment finished onboarding./v1/ready
contract_amendment.doneA contract amendment completed./v1/contract-amendments
contractor_invoice.paid_outA contractor invoice was paid out to the contractor./v1/contractor-invoices
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Remote limits how fast an app can call, by a request rate measured per minute and counted across a whole company rather than per token.

Request rate

Remote limits authenticated requests to 300 per minute, counted per company rather than per token, so tokens that belong to the same company share one budget. The one-minute window starts at the first request and resets 60 seconds later. Every authenticated response carries x-ratelimit-count, x-ratelimit-remaining, and x-ratelimit-reset headers, and going over returns HTTP 429 with an explanatory message.

Pagination

List endpoints are page-based: a page query parameter selects the page and page_size sets how many results it returns, and the response carries the current page and total counts so a client can walk through the full set.

Request size

A request and response use JSON over standard HTTP verbs and status codes. Page size is set by the page_size parameter on list endpoints. Country onboarding forms are described by a JSON Schema fetched per country and form, so a client validates and submits only the fields that country requires.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
401unauthorizedNo valid token was provided, or the token is for the wrong environment (an ra_test token against production, or ra_live against the sandbox).Send a valid Bearer token for the correct environment, and rotate the token if it may be compromised.
403forbiddenThe token is valid but lacks access to this action or resource, for example a partner OAuth token missing the area's scope.Grant the needed scope on the OAuth token, or use a token with access to the company and resource.
404not_foundThe requested resource does not exist, or is not visible to this token or company.Verify the id and confirm the resource belongs to the same company and environment as the token.
422unprocessable_entityThe request was well-formed but failed validation, for example a payload missing a field the country's JSON Schema form requires.Read the validation errors, fetch the country form schema, and resend with the required fields.
429too_many_requestsThe company exceeded 300 requests in the one-minute window. The limit is shared across all tokens for the company.Back off until x-ratelimit-reset, then retry; smooth request volume so the per-company count stays under 300 per minute.
Versioning & freshness

Version history.

Remote versions its API in the request path, with a stable v1 surface and a newer v2 for some employment endpoints, and ships dated changes through its developer changelog.

Version history

What changed, and when

Latest versionv1
v1Current version
Current API (v1, with v2 for some employment endpoints)

Remote versions in the request path. The v1 surface is stable and covers most resources, and a newer v2 exists for some employment endpoints, like updating an employment, basic information, address, contract, and bank details. Dated changes ship through the developer changelog.

What changed
  • v2 employment endpoints added for updating an employment and its basic information, address, administrative, bank-account, billing, contract, and emergency-contact details.
  • Time off supports approve, decline, cancel, and approve or decline of a cancellation request.
  • Contractor invoices, invoice schedules, and billing documents are exposed for reading.
2025-03-21Feature update
Filter companies by external_id

The List Companies endpoint added the ability to filter by external_id, the identifier an integration assigns to a company.

2025-03-06Feature update
Filter employments by multiple statuses

The List Employments endpoint added filtering by multiple statuses at once, and exposed an employment_lifecycle_stage field.

Call v2 where it exists for newer employment fields, and stay on v1 elsewhere.

Remote API changelog ↗
Questions

Remote API, answered.

How does authentication work, and what is the difference between live and sandbox tokens?+
The Remote API uses a Bearer token in the Authorization header. A token's prefix marks its environment: an ra_live token works only against the production gateway at gateway.remote.com, and an ra_test token works only against the sandbox at gateway.remote-sandbox.com. Tokens are organization-scoped and only a company admin or owner can generate or revoke them, so the two environments can never be mixed by accident.
Do API tokens have scopes, or are they all-or-nothing?+
A first-party customer API token is organization-scoped and broad: it is not split into granular per-area permissions, so the same token can read and write across the company's data. Per-area scopes (like employment:read or timeoff:write) apply to the OAuth 2.0 flow used by partners. For a first-party integration, narrowing what an agent can actually do is done outside the token, which is what a gateway like Bollard adds.
How does OAuth work for partners?+
Partners use OAuth 2.0 with the client-credentials flow, authenticating with a client id and secret, and a refresh-token flow to exchange a refresh token for a new access token. Access tokens are valid for 3600 seconds (one hour). Partner tokens carry per-area read and write scopes, so a partner integration reaches only the areas its scopes were granted.
How do country-specific onboarding fields work?+
Remote drives onboarding from dynamic forms. A form-schema endpoint returns a JSON Schema for a given country and form name, describing the fields that country's regulations require, so a client renders and validates the right fields without hardcoding rules for each jurisdiction. The same pattern covers company creation, contract amendments, and benefit offers.
What does the rate limit do, and how do I stay under it?+
Remote allows 300 authenticated requests per minute per company, so all tokens for the same company share the budget. Each response includes x-ratelimit-count, x-ratelimit-remaining, and x-ratelimit-reset headers; reading them and backing off before the count is reached avoids the 429 (Too Many Requests) response that comes when the limit is hit.
How do webhooks work, and should I trust the payload?+
Remote POSTs an event to a registered endpoint when something changes, like timeoff.approved or employment.updated. Payloads are designed to be stateless: they carry the relevant ids (such as employment_id and company_id) so an integration re-fetches the current record from the API rather than trusting the message body, and the endpoint returns a 2XX response to confirm delivery.
Related

More hr API guides for agents

What is Bollard AI?

Control what every AI agent can do in Remote.

Bollard AI sits between a team's AI agents and Remote. Grant each agent exactly the access it needs, read or write, area by area, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared Remote token.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
Remote
People Ops Agent
View employments ResourceOffReadFull use
Approve time off ActionOffReadFull use
Timesheets ResourceOffReadFull use
Contractor invoices ResourceOffReadFull use
Per-agent access, set in Bollard AI, not in Remote