API Documentation is in beta. Report issues to developers@jump.health
API Reference
Patients

Patients

The Patients API allows you to manage patient records in Jump EHR. Patients are the core resource that other clinical data (consultations, appointments, documents) relates to.

Endpoints

MethodEndpointDescription
GET/patientsList all patients
GET/patients/{id}Retrieve a patient
POST/patientsCreate a patient
PATCH/patients/{id}Update a patient

Required scopes: read_patients for GET requests, write_patients for POST/PATCH requests.

The Patient Object

{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "first_name": "Sarah",
  "last_name": "Johnson",
  "date_of_birth": "1985-03-15",
  "nhs_number": "123 456 7890",
  "email": "sarah.johnson@example.com",
  "phone": "+44 7700 900123",
  "address_line_1": "123 High Street",
  "address_line_2": "Flat 4",
  "city": "London",
  "postcode": "SW1A 1AA",
  "country": "United Kingdom",
  "gender": "female",
  "custom_fields": {
    "preferred_contact": "email",
    "marketing_consent": true
  },
  "created_at": "2024-01-15T10:30:00Z",
  "updated_at": "2024-06-20T14:45:00Z"
}

Attributes

FieldTypeDescription
idstringUnique identifier (UUID)
first_namestringPatient's first name
last_namestringPatient's last name
date_of_birthstringDate of birth (YYYY-MM-DD)
nhs_numberstringNHS number (UK patients)
emailstringEmail address
phonestringPhone number
address_line_1stringPrimary address line
address_line_2stringSecondary address line
citystringCity
postcodestringPostal code
countrystringCountry
genderstringGender (male, female, other)
custom_fieldsobjectOrganization-defined custom fields
created_atstringISO 8601 creation timestamp
updated_atstringISO 8601 last update timestamp

List Patients

GET /patients

Retrieve a paginated list of patients.

Query Parameters

ParameterTypeDefaultDescription
limitinteger100Number of records to return (max 100)
offsetinteger0Number of records to skip
searchstring-Search by name or NHS number

Request

curl -X GET "https://app.usejump.co.uk/functions/v1/api-v1/patients?limit=10&search=sarah" \
  -H "Authorization: Bearer pk_live_your_api_key" \
  -H "Content-Type: application/json"

Response

{
  "data": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "first_name": "Sarah",
      "last_name": "Johnson",
      "date_of_birth": "1985-03-15",
      "nhs_number": "123 456 7890",
      "email": "sarah.johnson@example.com",
      "phone": "+44 7700 900123",
      "created_at": "2024-01-15T10:30:00Z",
      "updated_at": "2024-06-20T14:45:00Z"
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 10,
    "offset": 0,
    "has_more": false
  }
}

Retrieve a Patient

GET /patients/{id}

Retrieve a single patient by ID.

Path Parameters

ParameterTypeDescription
idstringThe patient's UUID

Request

curl -X GET "https://app.usejump.co.uk/functions/v1/api-v1/patients/123e4567-e89b-12d3-a456-426614174000" \
  -H "Authorization: Bearer pk_live_your_api_key" \
  -H "Content-Type: application/json"

Response

{
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "first_name": "Sarah",
    "last_name": "Johnson",
    "date_of_birth": "1985-03-15",
    "nhs_number": "123 456 7890",
    "email": "sarah.johnson@example.com",
    "phone": "+44 7700 900123",
    "address_line_1": "123 High Street",
    "address_line_2": "Flat 4",
    "city": "London",
    "postcode": "SW1A 1AA",
    "country": "United Kingdom",
    "gender": "female",
    "custom_fields": {
      "preferred_contact": "email",
      "marketing_consent": true
    },
    "created_at": "2024-01-15T10:30:00Z",
    "updated_at": "2024-06-20T14:45:00Z"
  }
}

Create a Patient

POST /patients

Create a new patient record.

Request Body

FieldTypeRequiredDescription
first_namestringYesPatient's first name
last_namestringYesPatient's last name
date_of_birthstringYesDate of birth (YYYY-MM-DD)
nhs_numberstringNoNHS number
emailstringNoEmail address
phonestringNoPhone number
address_line_1stringNoPrimary address line
address_line_2stringNoSecondary address line
citystringNoCity
postcodestringNoPostal code
countrystringNoCountry
genderstringNoGender (male, female, other)
custom_fieldsobjectNoCustom field values

Request

curl -X POST "https://app.usejump.co.uk/functions/v1/api-v1/patients" \
  -H "Authorization: Bearer pk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "John",
    "last_name": "Smith",
    "date_of_birth": "1990-07-22",
    "email": "john.smith@example.com",
    "phone": "+44 7700 900456"
  }'

Response

{
  "data": {
    "id": "456e7890-e89b-12d3-a456-426614174111",
    "first_name": "John",
    "last_name": "Smith",
    "date_of_birth": "1990-07-22",
    "nhs_number": null,
    "email": "john.smith@example.com",
    "phone": "+44 7700 900456",
    "address_line_1": null,
    "address_line_2": null,
    "city": null,
    "postcode": null,
    "country": null,
    "gender": null,
    "custom_fields": {},
    "created_at": "2025-01-15T10:30:00Z",
    "updated_at": "2025-01-15T10:30:00Z"
  }
}

Update a Patient

PATCH /patients/{id}

Update an existing patient. Only include fields you want to change.

Path Parameters

ParameterTypeDescription
idstringThe patient's UUID

Request Body

All fields from the create endpoint are accepted. Only provided fields will be updated.

Request

curl -X PATCH "https://app.usejump.co.uk/functions/v1/api-v1/patients/456e7890-e89b-12d3-a456-426614174111" \
  -H "Authorization: Bearer pk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "+44 7700 900789",
    "address_line_1": "456 New Street",
    "city": "Manchester"
  }'

Response

{
  "data": {
    "id": "456e7890-e89b-12d3-a456-426614174111",
    "first_name": "John",
    "last_name": "Smith",
    "date_of_birth": "1990-07-22",
    "nhs_number": null,
    "email": "john.smith@example.com",
    "phone": "+44 7700 900789",
    "address_line_1": "456 New Street",
    "address_line_2": null,
    "city": "Manchester",
    "postcode": null,
    "country": null,
    "gender": null,
    "custom_fields": {},
    "created_at": "2025-01-15T10:30:00Z",
    "updated_at": "2025-01-15T11:00:00Z"
  }
}

Errors

StatusErrorDescription
400Bad RequestInvalid request body or parameters
401UnauthorizedInvalid or missing API key
403ForbiddenMissing required scope
404Not FoundPatient not found
429Too Many RequestsRate limit exceeded

Error Response

{
  "error": "Bad Request",
  "details": "first_name is required",
  "request_id": "req_abc123"
}

Related Resources