Remote

App · Jobs & Hiring · 20 actions

Work with your people on Remote: find employees and contractors, record and answer time off, check leave balances and public holidays, and approve or decline expenses.

Actions

ActionWhat it does
Approve time offApprove a time off request an employee made in Remote.
Cancel time offCancel time off that was already approved.
Create departmentAdd a department to the company.
Decline time offDecline a time off request an employee made in Remote.
Get connected accountGet the company this connection belongs to and the admin whose API token it uses, and whether it is a sandbox.
Get employmentGet one person's employment in full: job, manager, start date, status, and the personal, address and contract details Remote holds (which fields there are depends on the country).
Get expenseGet one expense: who, what for, how much and its status.
Get leave balancesGet how much leave an employee has left, has booked and has taken, for each of their leave policies.
Get time offGet one time off: who, when, what kind and its status.
List company managersGet everyone who manages the company in Remote (owners, admins and managers) with their user ids, which approvals are recorded under.
List countriesGet every country Remote works in, with its three-letter code (what List country holidays takes), region and states or provinces.
List country holidaysGet a country's public holidays in a year, optionally for one state or province.
List departmentsGet every department in the company.
List employmentsFind the company's people (employees and contractors), by name, email, status, type or model, a page at a time.
List expensesFind expenses employees submitted, newest first, optionally only those in one status (e.g. Pending, to review) or one person's. Amounts are in cents, with a decimal copy for display.
List leave policiesGet the leave policies an employee can book time off against, with the ids Record approved time off takes.
List time offFind time off across the company, or one person's, by status, type or dates.
List time off typesGet the kinds of leave Remote knows, for employees or contractors, with what each is for.
Record approved time offBook time off for an employee that is already approved, e.g. leave agreed outside Remote.
Review expenseApprove or decline an expense an employee submitted.

Approve time off

Approve a time off request an employee made in Remote. Only requests waiting for approval (status Requested) can be approved.

Inputs

Time offtimeoff_idtextRequired
The time off request. Use one from an earlier step or List time off.
Approverapprover_idtext
The company manager the approval is recorded under. Leave it empty for the admin who made the API token.

Outputs

approved_attext
When it was approved (ISO 8601).
approver_idtext
The user id of whoever approved it.
automatictrue/false
True when Remote made it (e.g. a public holiday).
cancel_reasontext
Why it was cancelled.
cancelled_attext
When it was cancelled.
employment_idtext
The employment it belongs to.
end_datetext
The last day (YYYY-MM-DD).
idtext
The time off's id.
leave_policyobject
The leave policy it is booked against.
leave_policy_variant_idtext
The leave policy's id.
notestext
Notes on it.
start_datetext
The first day (YYYY-MM-DD).
statustext
requested, approved, taken, declined, cancelled or cancel_requested.
timeoff_dayslist
Each day, with the time taken that day.
timeoff_typetext
The kind of leave, e.g. paid_time_off, sick_leave.
timezonetext
The time zone the dates are in.
total_minutesnumber
The total time off, in minutes.
Example output
{
  "approved_at": "2026-09-28T10:00:00Z",
  "approver_id": "7b2d4f6a-1c3e-4a5b-8d9f-0e1a2b3c4d5e",
  "automatic": false,
  "cancel_reason": null,
  "cancelled_at": null,
  "employment_id": "3f9a1c2e-5b7d-4e8f-a1b2-c3d4e5f6a7b8",
  "end_date": "2026-10-05",
  "id": "9d8c7b6a-5f4e-4d3c-b2a1-0f9e8d7c6b5a",
  "leave_policy": {
    "leave_policy_variant_slug": "paid-time-off",
    "leave_type": "paid_time_off",
    "name": "Paid time off"
  },
  "leave_policy_variant_id": "5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c1d",
  "notes": "Dentist",
  "start_date": "2026-10-05",
  "status": "approved",
  "timeoff_days": [
    {
      "day": "2026-10-05",
      "hours": 8,
      "minutes": 480
    }
  ],
  "timeoff_type": "paid_time_off",
  "timezone": "Etc/UTC",
  "total_minutes": 480
}

Cancel time off

Cancel time off that was already approved.

Inputs

Time offtimeoff_idtextRequired
The approved time off. Use one from an earlier step or List time off.
Reasoncancel_reasontextRequired
Why it is cancelled.

Outputs

approved_attext
When it was approved (ISO 8601).
approver_idtext
The user id of whoever approved it.
automatictrue/false
True when Remote made it (e.g. a public holiday).
cancel_reasontext
Why it was cancelled.
cancelled_attext
When it was cancelled.
employment_idtext
The employment it belongs to.
end_datetext
The last day (YYYY-MM-DD).
idtext
The time off's id.
leave_policyobject
The leave policy it is booked against.
leave_policy_variant_idtext
The leave policy's id.
notestext
Notes on it.
start_datetext
The first day (YYYY-MM-DD).
statustext
requested, approved, taken, declined, cancelled or cancel_requested.
timeoff_dayslist
Each day, with the time taken that day.
timeoff_typetext
The kind of leave, e.g. paid_time_off, sick_leave.
timezonetext
The time zone the dates are in.
total_minutesnumber
The total time off, in minutes.
Example output
{
  "approved_at": "2026-09-28T10:00:00Z",
  "approver_id": "7b2d4f6a-1c3e-4a5b-8d9f-0e1a2b3c4d5e",
  "automatic": false,
  "cancel_reason": "Plans changed",
  "cancelled_at": "2026-09-29T09:00:00",
  "employment_id": "3f9a1c2e-5b7d-4e8f-a1b2-c3d4e5f6a7b8",
  "end_date": "2026-10-05",
  "id": "9d8c7b6a-5f4e-4d3c-b2a1-0f9e8d7c6b5a",
  "leave_policy": {
    "leave_policy_variant_slug": "paid-time-off",
    "leave_type": "paid_time_off",
    "name": "Paid time off"
  },
  "leave_policy_variant_id": "5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c1d",
  "notes": "Dentist",
  "start_date": "2026-10-05",
  "status": "cancelled",
  "timeoff_days": [
    {
      "day": "2026-10-05",
      "hours": 8,
      "minutes": 480
    }
  ],
  "timeoff_type": "paid_time_off",
  "timezone": "Etc/UTC",
  "total_minutes": 480
}

Create department

Add a department to the company. Remote allows two departments with the same name, and departments can't be renamed or deleted through the API, so check List departments first.

Inputs

NamenametextRequired
The department's name, up to 255 characters.

Outputs

company_idtext
The company's id.
idtext
The department's id.
nametext
The department's name.
Example output
{
  "company_id": "0c8b9a3e-7d1f-4b2a-9e6c-5f4d3c2b1a00",
  "id": "2e4f6a8c-0b1d-4c3e-9f5a-7b9d1e3f5a7c",
  "name": "Engineering"
}

Decline time off

Decline a time off request an employee made in Remote. Only requests waiting for approval (status Requested) can be declined.

Inputs

Time offtimeoff_idtextRequired
The time off request. Use one from an earlier step or List time off.
Reasondecline_reasontext
Why, shown to the employee.

Outputs

approved_attext
When it was approved (ISO 8601).
approver_idtext
The user id of whoever approved it.
automatictrue/false
True when Remote made it (e.g. a public holiday).
cancel_reasontext
Why it was cancelled.
cancelled_attext
When it was cancelled.
employment_idtext
The employment it belongs to.
end_datetext
The last day (YYYY-MM-DD).
idtext
The time off's id.
leave_policyobject
The leave policy it is booked against.
leave_policy_variant_idtext
The leave policy's id.
notestext
Notes on it.
start_datetext
The first day (YYYY-MM-DD).
statustext
requested, approved, taken, declined, cancelled or cancel_requested.
timeoff_dayslist
Each day, with the time taken that day.
timeoff_typetext
The kind of leave, e.g. paid_time_off, sick_leave.
timezonetext
The time zone the dates are in.
total_minutesnumber
The total time off, in minutes.
Example output
{
  "approved_at": "2026-09-28T10:00:00Z",
  "approver_id": "7b2d4f6a-1c3e-4a5b-8d9f-0e1a2b3c4d5e",
  "automatic": false,
  "cancel_reason": null,
  "cancelled_at": null,
  "employment_id": "3f9a1c2e-5b7d-4e8f-a1b2-c3d4e5f6a7b8",
  "end_date": "2026-10-05",
  "id": "9d8c7b6a-5f4e-4d3c-b2a1-0f9e8d7c6b5a",
  "leave_policy": {
    "leave_policy_variant_slug": "paid-time-off",
    "leave_type": "paid_time_off",
    "name": "Paid time off"
  },
  "leave_policy_variant_id": "5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c1d",
  "notes": "Dentist",
  "start_date": "2026-10-05",
  "status": "declined",
  "timeoff_days": [
    {
      "day": "2026-10-05",
      "hours": 8,
      "minutes": 480
    }
  ],
  "timeoff_type": "paid_time_off",
  "timezone": "Etc/UTC",
  "total_minutes": 480
}

Get connected account

Get the company this connection belongs to and the admin whose API token it uses, and whether it is a sandbox.

Inputs

None.

Outputs

companyobject
The company the token belongs to.
company_idtext
The company's id.
environmenttext
sandbox for a sandbox token, live otherwise.
userobject
The admin who generated the token.
user_idtext
The token owner's user id.
Example output
{
  "company": {
    "id": "0c8b9a3e-7d1f-4b2a-9e6c-5f4d3c2b1a00",
    "name": "Acme Ltd"
  },
  "company_id": "0c8b9a3e-7d1f-4b2a-9e6c-5f4d3c2b1a00",
  "environment": "live",
  "user": {
    "email": "jo@example.com",
    "id": "7b2d4f6a-1c3e-4a5b-8d9f-0e1a2b3c4d5e",
    "name": "Jo Admin",
    "status": "active"
  },
  "user_id": "7b2d4f6a-1c3e-4a5b-8d9f-0e1a2b3c4d5e"
}

Get employment

Get one person's employment in full: job, manager, start date, status, and the personal, address and contract details Remote holds (which fields there are depends on the country).

Inputs

Employeeemployment_idtextRequired
The person. Pick one, or use an employment id from an earlier step or a Remote link.
Include filesinclude_filestrue/false
Also list their files (contracts, IDs, ...).Default: false.

Outputs

address_detailsobject
Home address; fields vary by country.
company_idtext
The company's id.
contract_detailsobject
Contract terms; fields vary by country.
countryobject
The country they work in.
created_attext
When the employment was created (ISO 8601).
departmentobject
Their department.
department_idtext
Their department's id.
employment_lifecycle_stagetext
e.g. onboarded, contract_signing.
employment_modeltext
eor, peo or global_payroll.
external_idtext
Your own id for them, if set.
full_nametext
The person's name.
idtext
The employment's id, which the time off and leave actions take.
job_titletext
Their job title.
login_emailtext
The email address they sign in to Remote with.
managertext
Their manager's name.
manager_emailtext
Their manager's email address.
manager_employment_idtext
Their manager's employment id.
personal_detailsobject
Personal details; fields vary by country.
personal_emailtext
Their personal email address.
probation_period_end_datetext
When their probation ends.
provisional_start_datetext
Their planned start date.
seniority_datetext
The date their seniority counts from.
short_idtext
Remote's short reference for them.
statustext
e.g. active, invited, offboarding, archived.
termination_datetext
Their last day, once offboarded.
typetext
employee, contractor, direct_employee or global_payroll_employee.
updated_attext
When it last changed (ISO 8601).
user_statustext
Their Remote account: active, invited, inactive, ...
work_emailtext
Their work email address.
Example output
{
  "address_details": {},
  "company_id": "0c8b9a3e-7d1f-4b2a-9e6c-5f4d3c2b1a00",
  "contract_details": {},
  "country": {
    "code": "PRT",
    "name": "Portugal"
  },
  "created_at": "2025-01-10T09:00:00Z",
  "department": null,
  "department_id": null,
  "employment_lifecycle_stage": "onboarded",
  "employment_model": "eor",
  "external_id": null,
  "full_name": "Ana Silva",
  "id": "3f9a1c2e-5b7d-4e8f-a1b2-c3d4e5f6a7b8",
  "job_title": "Senior Engineer",
  "login_email": "ana.silva@example.com",
  "manager": "Jo Admin",
  "manager_email": "jo@example.com",
  "manager_employment_id": null,
  "personal_details": {},
  "personal_email": "ana@example.org",
  "probation_period_end_date": "2025-08-03",
  "provisional_start_date": "2025-02-03",
  "seniority_date": "2025-02-03",
  "short_id": "AB12CD",
  "status": "active",
  "termination_date": null,
  "type": "employee",
  "updated_at": "2026-09-01T12:00:00Z",
  "user_status": "active",
  "work_email": "ana.silva@example.com"
}

Get expense

Get one expense: who, what for, how much and its status.

Inputs

Expenseexpense_idtextRequired
The expense. Use one from an earlier step or List expenses.

Outputs

amountnumber
The amount, in cents.
amount_decimalnumber
The amount in the currency's main unit, e.g. 12.5.
categorytext
The legacy category, kept for old expenses.
converted_amountnumber
The amount in the company's billing currency, in cents.
converted_amount_decimalnumber
The amount in the billing currency's main unit.
converted_currencyobject
The currency.
currencyobject
The currency.
employment_idtext
The employment it belongs to.
expense_categoryobject
Its category.
expense_datetext
When it was spent (YYYY-MM-DD).
idtext
The expense's id.
invoice_periodtext
The payroll period it is paid in (YYYY-MM).
notestext
Notes.
reasontext
Why it was declined.
reviewed_attext
When it was reviewed.
reviewerobject
Who reviewed it.
statustext
pending, approved, declined, processing, reimbursed, canceled, draft or archived.
tax_amountnumber
The tax part, in cents.
tax_amount_decimalnumber
The tax part in the currency's main unit.
titletext
What it was for.
Example output
{
  "amount": 4250,
  "amount_decimal": 42.5,
  "category": null,
  "converted_amount": 4600,
  "converted_amount_decimal": 46.0,
  "converted_currency": {
    "code": "USD",
    "name": "US Dollar",
    "symbol": "$"
  },
  "currency": {
    "code": "EUR",
    "name": "Euro",
    "symbol": "\u20ac"
  },
  "employment_id": "3f9a1c2e-5b7d-4e8f-a1b2-c3d4e5f6a7b8",
  "expense_category": {
    "code": "travel.transport",
    "slug": "transport",
    "title": "Transport"
  },
  "expense_date": "2026-09-20",
  "id": "e1d2c3b4-a5f6-4e7d-8c9b-0a1b2c3d4e5f",
  "invoice_period": null,
  "notes": null,
  "reason": null,
  "reviewed_at": null,
  "reviewer": null,
  "status": "pending",
  "tax_amount": 0,
  "tax_amount_decimal": 0.0,
  "title": "Train to client office"
}

Get leave balances

Get how much leave an employee has left, has booked and has taken, for each of their leave policies.

Inputs

Employeeemployment_idtextRequired
The employee. Pick one, or use an employment id from an earlier step.

Outputs

balanceslist
The balances, one per policy.
countnumber
How many balances, one per policy came back.
employment_idtext
The employment.
Example output
{
  "balances": [
    {
      "annual_balance": {
        "days": 18,
        "hours": 0,
        "type": "limited"
      },
      "annual_entitlement": {
        "days": 22,
        "hours": 0,
        "type": "limited"
      },
      "balance": {
        "days": 18,
        "hours": 0,
        "type": "limited"
      },
      "booked": {
        "days": 4,
        "hours": 0,
        "type": "limited"
      },
      "current_entitlement": {
        "days": 22,
        "hours": 0,
        "type": "limited"
      },
      "leave_policy": {
        "leave_policy_variant_id": "5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c1d",
        "leave_type": "paid_time_off",
        "name": "Paid time off",
        "unit": "days"
      },
      "pending_approval": {
        "days": 0,
        "hours": 0,
        "type": "limited"
      },
      "taken": {
        "days": 3,
        "hours": 0,
        "type": "limited"
      },
      "upcoming_approved": {
        "days": 1,
        "hours": 0,
        "type": "limited"
      },
      "upcoming_requested": {
        "days": 0,
        "hours": 0,
        "type": "limited"
      },
      "used": {
        "days": 4,
        "hours": 0,
        "type": "limited"
      },
      "working_hours_per_day": 8
    },
    {
      "annual_balance": {
        "type": "unlimited"
      },
      "annual_entitlement": {
        "type": "unlimited"
      },
      "balance": {
        "type": "unlimited"
      },
      "booked": {
        "days": 0,
        "hours": 0,
        "type": "limited"
      },
      "current_entitlement": {
        "type": "unlimited"
      },
      "leave_policy": {
        "leave_policy_variant_id": "sick_leave",
        "leave_type": "sick_leave",
        "name": "Sick leave",
        "unit": "unlimited"
      },
      "pending_approval": {
        "days": 0,
        "hours": 0,
        "type": "limited"
      },
      "taken": {
        "days": 0,
        "hours": 0,
        "type": "limited"
      },
      "upcoming_approved": {
        "days": 0,
        "hours": 0,
        "type": "limited"
      },
      "upcoming_requested": {
        "days": 0,
        "hours": 0,
        "type": "limited"
      },
      "used": {
        "days": 0,
        "hours": 0,
        "type": "limited"
      },
      "working_hours_per_day": 8
    }
  ],
  "count": 2,
  "employment_id": "3f9a1c2e-5b7d-4e8f-a1b2-c3d4e5f6a7b8"
}

Get time off

Get one time off: who, when, what kind and its status.

Inputs

Time offtimeoff_idtextRequired
The time off. Use one from an earlier step or List time off.

Outputs

approved_attext
When it was approved (ISO 8601).
approver_idtext
The user id of whoever approved it.
automatictrue/false
True when Remote made it (e.g. a public holiday).
cancel_reasontext
Why it was cancelled.
cancelled_attext
When it was cancelled.
employment_idtext
The employment it belongs to.
end_datetext
The last day (YYYY-MM-DD).
idtext
The time off's id.
leave_policyobject
The leave policy it is booked against.
leave_policy_variant_idtext
The leave policy's id.
notestext
Notes on it.
start_datetext
The first day (YYYY-MM-DD).
statustext
requested, approved, taken, declined, cancelled or cancel_requested.
timeoff_dayslist
Each day, with the time taken that day.
timeoff_typetext
The kind of leave, e.g. paid_time_off, sick_leave.
timezonetext
The time zone the dates are in.
total_minutesnumber
The total time off, in minutes.
Example output
{
  "approved_at": "2026-09-28T10:00:00Z",
  "approver_id": "7b2d4f6a-1c3e-4a5b-8d9f-0e1a2b3c4d5e",
  "automatic": false,
  "cancel_reason": null,
  "cancelled_at": null,
  "employment_id": "3f9a1c2e-5b7d-4e8f-a1b2-c3d4e5f6a7b8",
  "end_date": "2026-10-05",
  "id": "9d8c7b6a-5f4e-4d3c-b2a1-0f9e8d7c6b5a",
  "leave_policy": {
    "leave_policy_variant_slug": "paid-time-off",
    "leave_type": "paid_time_off",
    "name": "Paid time off"
  },
  "leave_policy_variant_id": "5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c1d",
  "notes": "Dentist",
  "start_date": "2026-10-05",
  "status": "approved",
  "timeoff_days": [
    {
      "day": "2026-10-05",
      "hours": 8,
      "minutes": 480
    }
  ],
  "timeoff_type": "paid_time_off",
  "timezone": "Etc/UTC",
  "total_minutes": 480
}

List company managers

Get everyone who manages the company in Remote (owners, admins and managers) with their user ids, which approvals are recorded under.

Inputs

None.

Outputs

countnumber
How many managers came back.
managerslist
The managers.
Example output
{
  "count": 1,
  "managers": [
    {
      "company_id": "0c8b9a3e-7d1f-4b2a-9e6c-5f4d3c2b1a00",
      "role": "admin",
      "user_email": "jo@example.com",
      "user_id": "7b2d4f6a-1c3e-4a5b-8d9f-0e1a2b3c4d5e",
      "user_name": "Jo Admin"
    }
  ]
}

List countries

Get every country Remote works in, with its three-letter code (what List country holidays takes), region and states or provinces.

Inputs

None.

Outputs

countnumber
How many countries came back.
countrieslist
The countries.
Example output
{
  "count": 1,
  "countries": [
    {
      "alpha_2_code": "PT",
      "code": "PRT",
      "country_subdivisions": [],
      "eor_onboarding": true,
      "name": "Portugal",
      "region": "Europe",
      "subregion": "Southern Europe"
    }
  ]
}

List country holidays

Get a country's public holidays in a year, optionally for one state or province.

Inputs

Countrycountry_codetextRequired
The country. Pick one, or give its three-letter code, e.g. PRT or USA.
Yearyearnumber
The year. Leave it empty for this year.From 1900 to 2100.
State or provincecountry_subdivision_codetext
Only for this state or province, by its ISO 3166-2 code, e.g. US-CA. List countries gives the codes.

Outputs

countnumber
How many holidays came back.
country_codetext
The country's three-letter code.
holidayslist
The holidays.
yearnumber
The year.
Example output
{
  "count": 1,
  "country_code": "PRT",
  "holidays": [
    {
      "day": "2026-12-25",
      "name": "Christmas Day",
      "note": null,
      "observed_day": null
    }
  ],
  "year": 2026
}

List departments

Get every department in the company.

Inputs

None.

Outputs

countnumber
How many departments came back.
departmentslist
The departments.
Example output
{
  "count": 1,
  "departments": [
    {
      "company_id": "0c8b9a3e-7d1f-4b2a-9e6c-5f4d3c2b1a00",
      "id": "2e4f6a8c-0b1d-4c3e-9f5a-7b9d1e3f5a7c",
      "name": "Engineering"
    }
  ]
}

List employments

Find the company's people (employees and contractors), by name, email, status, type or model, a page at a time.

Inputs

Namenametext
Only people whose name contains these words.
Emailemailtext
Only the person with this email.
Statusesstatuseslist
Only people in these statuses. Leave empty for all.One or more of: active, created, pre_hire (Pre-hire), created_awaiting_reserve (Created, awaiting reserve), created_reserve_paid (Created, reserve paid), initiated, invited, pending, review (In review), job_title_review (Job title review), and 5 more.
Typeemployment_typetext
Only employees, or only contractors, and so on.One of: employee, contractor, direct_employee (Direct employee), global_payroll_employee (Global Payroll employee).
Employment modelemployment_modeltext
Only people employed this way.One of: eor (Employer of Record (EOR)), peo, global_payroll (Global Payroll).
Pagepagenumber
Which page of people to get. Page 1 is the first.At least 1. Default: 1.
Per pagepage_sizenumber
How many people per page, up to 100.From 1 to 100. Default: 20.

Outputs

countnumber
How many employments came back.
current_pagenumber
This page's number.
employmentslist
The employments.
total_countnumber
How many employments match, on every page.
total_pagesnumber
How many pages there are.
Example output
{
  "count": 1,
  "current_page": 1,
  "employments": [
    {
      "country": {
        "code": "PRT",
        "name": "Portugal"
      },
      "department": null,
      "department_id": null,
      "employment_lifecycle_stage": "onboarded",
      "employment_model": "eor",
      "external_id": null,
      "full_name": "Ana Silva",
      "id": "3f9a1c2e-5b7d-4e8f-a1b2-c3d4e5f6a7b8",
      "job_title": "Senior Engineer",
      "login_email": "ana.silva@example.com",
      "personal_email": "ana@example.org",
      "short_id": "AB12CD",
      "status": "active",
      "type": "employee",
      "work_email": "ana.silva@example.com"
    }
  ],
  "total_count": 1,
  "total_pages": 1
}

List expenses

Find expenses employees submitted, newest first, optionally only those in one status (e.g. Pending, to review) or one person's. Amounts are in cents, with a decimal copy for display.

Inputs

Statusstatustext
Only in this status.One of: pending, approved, declined, processing, reimbursed, canceled, draft, archived.
Employeeemployment_idtext
Only this person's expenses.
Maximum expenseslimitnumber
How many expenses to get, up to 500.From 1 to 500. Default: 50.

Outputs

countnumber
How many expenses came back.
expenseslist
The expenses.
has_moretrue/false
True when more expenses match than came back.
total_countnumber
How many expenses the company has, before filtering.
Example output
{
  "count": 1,
  "expenses": [
    {
      "amount": 4250,
      "amount_decimal": 42.5,
      "category": null,
      "converted_amount": 4600,
      "converted_amount_decimal": 46.0,
      "converted_currency": {
        "code": "USD",
        "name": "US Dollar",
        "symbol": "$"
      },
      "currency": {
        "code": "EUR",
        "name": "Euro",
        "symbol": "\u20ac"
      },
      "employment_id": "3f9a1c2e-5b7d-4e8f-a1b2-c3d4e5f6a7b8",
      "expense_category": {
        "code": "travel.transport",
        "slug": "transport",
        "title": "Transport"
      },
      "expense_date": "2026-09-20",
      "id": "e1d2c3b4-a5f6-4e7d-8c9b-0a1b2c3d4e5f",
      "invoice_period": null,
      "notes": null,
      "reason": null,
      "reviewed_at": null,
      "reviewer": null,
      "status": "pending",
      "tax_amount": 0,
      "tax_amount_decimal": 0.0,
      "title": "Train to client office"
    }
  ],
  "has_more": false,
  "total_count": 1
}

List leave policies

Get the leave policies an employee can book time off against, with the ids Record approved time off takes.

Inputs

Employeeemployment_idtextRequired
The employee. Pick one, or use an employment id from an earlier step.

Outputs

countnumber
How many leave policies came back.
employment_idtext
The employment.
leave_policieslist
The leave policies.
Example output
{
  "count": 1,
  "employment_id": "3f9a1c2e-5b7d-4e8f-a1b2-c3d4e5f6a7b8",
  "leave_policies": [
    {
      "custom": false,
      "leave_policy_variant_id": "5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c1d",
      "name": "Paid time off",
      "uses_accrual_as_balance": false
    }
  ]
}

List time off

Find time off across the company, or one person's, by status, type or dates. With both dates, you get time off that overlaps them.

Inputs

Employeeemployment_idtext
Only this person's time off.
Statusstatustext
Only in this status.One of: requested, approved, taken, declined, cancelled, cancel_requested (Cancellation requested).
Typetimeoff_typetext
Only of this type.One of: time_off (Time off), paid_time_off (Paid time off), sick_leave (Sick leave), public_holiday (Public holiday), unpaid_leave (Unpaid leave), extended_leave (Extended leave), in_lieu_time (In lieu time), maternity_leave (Maternity leave), paternity_leave (Paternity leave), parental_leave (Parental leave), and 38 more.
Fromstart_datedate
From this day.
Toend_datedate
Up to this day.
Sort bysort_bytext
What to sort by.One of: timeoff_type (Type), status.
Orderordertext
Sort order.One of: desc (Newest first), asc (Oldest first).
Pagepagenumber
Which page of time off records to get. Page 1 is the first.At least 1. Default: 1.
Per pagepage_sizenumber
How many time off records per page, up to 100.From 1 to 100. Default: 20.

Outputs

countnumber
How many time off records came back.
current_pagenumber
This page's number.
timeoffslist
The time off records.
total_countnumber
How many time off records match, on every page.
total_pagesnumber
How many pages there are.
Example output
{
  "count": 1,
  "current_page": 1,
  "timeoffs": [
    {
      "approved_at": "2026-09-28T10:00:00Z",
      "approver_id": "7b2d4f6a-1c3e-4a5b-8d9f-0e1a2b3c4d5e",
      "automatic": false,
      "cancel_reason": null,
      "cancelled_at": null,
      "employment_id": "3f9a1c2e-5b7d-4e8f-a1b2-c3d4e5f6a7b8",
      "end_date": "2026-10-05",
      "id": "9d8c7b6a-5f4e-4d3c-b2a1-0f9e8d7c6b5a",
      "leave_policy": {
        "leave_policy_variant_slug": "paid-time-off",
        "leave_type": "paid_time_off",
        "name": "Paid time off"
      },
      "leave_policy_variant_id": "5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c1d",
      "notes": "Dentist",
      "start_date": "2026-10-05",
      "status": "approved",
      "timeoff_days": [
        {
          "day": "2026-10-05",
          "hours": 8,
          "minutes": 480
        }
      ],
      "timeoff_type": "paid_time_off",
      "timezone": "Etc/UTC",
      "total_minutes": 480
    }
  ],
  "total_count": 1,
  "total_pages": 1
}

List time off types

Get the kinds of leave Remote knows, for employees or contractors, with what each is for.

Inputs

Forworker_typetext
Whose types.One of: full_time (Employees), contractor. Default: full_time.

Outputs

countnumber
How many types came back.
timeoff_typeslist
The types.
worker_typetext
full_time or contractor.
Example output
{
  "count": 1,
  "timeoff_types": [
    {
      "description": "Time off when ill.",
      "name": "sick_leave"
    }
  ],
  "worker_type": "full_time"
}

Record approved time off

Book time off for an employee that is already approved, e.g. leave agreed outside Remote. Remote's API can't create a time off request for someone to approve. Book it against one of the employee's leave policies, or by type for employees on older plans.

Inputs

Employeeemployment_idtextRequired
The employee. Pick one, or use an employment id from an earlier step.
First daystart_datedateRequired
The first day off.
Last dayend_datedate
The last day off. Leave it empty for a single day.
Leave policyleave_policytext
The leave policy to book against. Pick one of the employee's, or leave it empty and pick a type.
Typetimeoff_typetext
The kind of leave, for employees without leave policies. Leave it empty when you picked a leave policy.One of: time_off (Time off), paid_time_off (Paid time off), sick_leave (Sick leave), public_holiday (Public holiday), unpaid_leave (Unpaid leave), extended_leave (Extended leave), in_lieu_time (In lieu time), maternity_leave (Maternity leave), paternity_leave (Paternity leave), parental_leave (Parental leave), and 8 more.
Hours per dayhours_per_daynumber
Hours off on each day, e.g. 8 for full days or 4 for half days.From 1 to 24. Default: 8.
Skip weekendsskip_weekendstrue/false
Count Saturdays and Sundays as zero hours.Default: true.
Time zonetimezonetext
The time zone the days are in, e.g. Europe/Lisbon.Default: Etc/UTC.
Notesnotestext
A note on the time off.
Approverapprover_idtext
The company manager the approval is recorded under. Leave it empty for the admin who made the API token.
Approved atapproved_atdate and time
When it was approved. Leave it empty for now.

Outputs

approved_attext
When it was approved (ISO 8601).
approver_idtext
The user id of whoever approved it.
automatictrue/false
True when Remote made it (e.g. a public holiday).
cancel_reasontext
Why it was cancelled.
cancelled_attext
When it was cancelled.
employment_idtext
The employment it belongs to.
end_datetext
The last day (YYYY-MM-DD).
idtext
The time off's id.
leave_policyobject
The leave policy it is booked against.
leave_policy_variant_idtext
The leave policy's id.
notestext
Notes on it.
start_datetext
The first day (YYYY-MM-DD).
statustext
requested, approved, taken, declined, cancelled or cancel_requested.
timeoff_dayslist
Each day, with the time taken that day.
timeoff_typetext
The kind of leave, e.g. paid_time_off, sick_leave.
timezonetext
The time zone the dates are in.
total_minutesnumber
The total time off, in minutes.
Example output
{
  "approved_at": "2026-09-28T10:00:00Z",
  "approver_id": "7b2d4f6a-1c3e-4a5b-8d9f-0e1a2b3c4d5e",
  "automatic": false,
  "cancel_reason": null,
  "cancelled_at": null,
  "employment_id": "3f9a1c2e-5b7d-4e8f-a1b2-c3d4e5f6a7b8",
  "end_date": "2026-10-05",
  "id": "9d8c7b6a-5f4e-4d3c-b2a1-0f9e8d7c6b5a",
  "leave_policy": {
    "leave_policy_variant_slug": "paid-time-off",
    "leave_type": "paid_time_off",
    "name": "Paid time off"
  },
  "leave_policy_variant_id": "5a4b3c2d-1e0f-4a9b-8c7d-6e5f4a3b2c1d",
  "notes": "Dentist",
  "start_date": "2026-10-05",
  "status": "approved",
  "timeoff_days": [
    {
      "day": "2026-10-05",
      "hours": 8,
      "minutes": 480
    }
  ],
  "timeoff_type": "paid_time_off",
  "timezone": "Etc/UTC",
  "total_minutes": 480
}

Review expense

Approve or decline an expense an employee submitted. Only pending expenses can be reviewed; declining needs a reason, which the employee sees.

Inputs

Expenseexpense_idtextRequired
The pending expense. Use one from an earlier step or List expenses.
DecisiondecisiontextRequired
Approve or decline it.One of: approved (Approve), declined (Decline).
Reasonreasontext
Why it is declined. Required when declining.

Outputs

amountnumber
The amount, in cents.
amount_decimalnumber
The amount in the currency's main unit, e.g. 12.5.
categorytext
The legacy category, kept for old expenses.
converted_amountnumber
The amount in the company's billing currency, in cents.
converted_amount_decimalnumber
The amount in the billing currency's main unit.
converted_currencyobject
The currency.
currencyobject
The currency.
employment_idtext
The employment it belongs to.
expense_categoryobject
Its category.
expense_datetext
When it was spent (YYYY-MM-DD).
idtext
The expense's id.
invoice_periodtext
The payroll period it is paid in (YYYY-MM).
notestext
Notes.
reasontext
Why it was declined.
reviewed_attext
When it was reviewed.
reviewerobject
Who reviewed it.
statustext
pending, approved, declined, processing, reimbursed, canceled, draft or archived.
tax_amountnumber
The tax part, in cents.
tax_amount_decimalnumber
The tax part in the currency's main unit.
titletext
What it was for.
Example output
{
  "amount": 4250,
  "amount_decimal": 42.5,
  "category": null,
  "converted_amount": 4600,
  "converted_amount_decimal": 46.0,
  "converted_currency": {
    "code": "USD",
    "name": "US Dollar",
    "symbol": "$"
  },
  "currency": {
    "code": "EUR",
    "name": "Euro",
    "symbol": "\u20ac"
  },
  "employment_id": "3f9a1c2e-5b7d-4e8f-a1b2-c3d4e5f6a7b8",
  "expense_category": {
    "code": "travel.transport",
    "slug": "transport",
    "title": "Transport"
  },
  "expense_date": "2026-09-20",
  "id": "e1d2c3b4-a5f6-4e7d-8c9b-0a1b2c3d4e5f",
  "invoice_period": null,
  "notes": null,
  "reason": null,
  "reviewed_at": "2026-09-28",
  "reviewer": {
    "user_email": "jo@example.com",
    "user_id": "7b2d4f6a-1c3e-4a5b-8d9f-0e1a2b3c4d5e",
    "user_name": "Jo Admin"
  },
  "status": "approved",
  "tax_amount": 0,
  "tax_amount_decimal": 0.0,
  "title": "Train to client office"
}

On this page