---
title: "Get a list of locations"
method: GET
path: "/api/2026-01-01/locations"
tags: ["Locations"]
---

# Get a list of locations

`GET /api/2026-01-01/locations`

## Request

- Base URL: `https://jdpdocsdemo.jane.qa`
- URL: `https://jdpdocsdemo.jane.qa/api/2026-01-01/locations`
- Auth: OAuth 2
  - Authorization code: `https://login.id.janeapp.com/realms/jane_partner_sandbox/protocol/openid-connect/auth?response_type=code&resource=https://jdpdocsdemo.jane.qa&prompt=consent`
  - Token URL: `https://login.id.janeapp.com/realms/jane_partner_sandbox/protocol/openid-connect/token` scopes: `locations:read`

Retrieve a paginated list of locations.

Filtering:
Filter records by field values using the format: field[operator]=value

Available fields:
- `public_id`: string
- `created_at`: ISO 8601 datetime (e.g. 2025-01-01T12:00:00Z)
- `updated_at`: ISO 8601 datetime

Available operators:
- `eq`: Equals
- `gt`: Greater than
- `gte`: Greater than or equal
- `lt`: Less than
- `lte`: Less than or equal

Date-time filters (ex. `created_at`, `updated_at`) must:
- Use [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time format
- Be **precise to the second** (e.g. `2025-01-01T12:00:00Z`)

Examples:
```
/locations?public_id[eq]=abc123
/locations?created_at[gte]=2025-01-01T00:00:00Z&created_at[lt]=2025-01-02T00:00:00Z
```

## Query parameters

- `page[cursor]` string
- `page[limit]` integer
- `sort` string
- `public_id` StringFilterSchema
  - `eq` string: equals. Multiple equal values are comma-separated: ?field[eq]=value1,value2 (maximum 100 values)
  - `ne` string: not equals
  - `co` string: contains. Performs partial match (case-insensitive for string fields). Example: ?field[co]=search_term
  - `gt` string: greater than
  - `gte` string: greater than or equal to
  - `lt` string: less than
  - `lte` string: less than or equal to
  - `sw` string: starts with. Performs case-insensitive partial match for words in a string that begin with search term. Example: ?field[sw]=search_term
- `created_at` DateTimeFilterSchema
  - `eq` string, date-time: equals. Multiple equal values are comma-separated: ?field[eq]=value1,value2
  - `ne` string, date-time: not equals
  - `gt` string, date-time: greater than
  - `gte` string, date-time: greater than or equal to
  - `lt` string, date-time: less than
  - `lte` string, date-time: less than or equal to
- `updated_at` DateTimeFilterSchema
  - `eq` string, date-time: equals. Multiple equal values are comma-separated: ?field[eq]=value1,value2
  - `ne` string, date-time: not equals
  - `gt` string, date-time: greater than
  - `gte` string, date-time: greater than or equal to
  - `lt` string, date-time: less than
  - `lte` string, date-time: less than or equal to

## Response `200`

A list of locations

- Locations: A list of locations.
  - `items` Location[]
    - `id` string, uuid, required: UUIDv7 identifier for the location
    - `name` string: Name of the location
    - `street_address` string: Street address of the location
    - `street_address_2` string: Additional street address information (suite, apt, unit, etc.)
    - `city` string: City where the location is situated
    - `province` string: Province/state where the location is situated
    - `postal` string: Postal/ZIP code
    - `country` string: Country code
    - `email` string, email: Location's email address
    - `phone` string: Location's phone number
    - `fax` string: Location's fax number
    - `hours` string: Operating hours of the location
    - `legal_name` string: Legal name of the location
    - `short_description` string: Short description of the location
    - `long_description` string: Long description of the location
    - `online_bookable` boolean: Whether the location is bookable online
  - `cursor` string, nullable: The Base64 encoded cursor for the next page. null if this is the last page.
  - `limit` integer
  - `links` object
    - `after` string, nullable: URL for the next page of results. null if this is the last page.
  - `hasNextPage` boolean: Whether there is a next page of locations

## Other responses

- `400`: Bad Request
- `401`: Unauthorized - Authentication required
- `403`: Forbidden - Insufficient permissions
- `429`: Rate limit exceeded - 100 requests per minute per endpoint per clinic

## Changes

- **2026-11-03** `01798f613a5e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/jane/apis/jdp-api/changes/api/2026-01-01/locations/get.md)

---

[API](https://skmtc.dev/jane/apis/jdp-api.md) - [All operations](https://skmtc.dev/jane/apis/jdp-api/llms.txt) - [OpenAPI document](https://skmtc.dev/jane/apis/jdp-api/revisions/01798f613a5e?raw)
