Skip to content

List Patient Documents

Lists the documents on a patient's chart — uploads, faxes, discharge letters — newest first.

Endpoint

GET /v2/patients/{patient_id}/documents

Path Parameters

Parameter Type Required Description
patient_id string Yes The patient whose documents to list. Another organisation's patient is reported as not found.

Query Parameters

Parameter Type Required Description
page integer No 1-based page number. Defaults to 1.
page_size integer No Results per page. Defaults to 25.

Request

curl --location '{base_url}/v2/patients/63120/documents' \
  --header 'Authorization: Bearer JWT_TOKEN'

Response

Success Response

Code: 200 OK

{
  "items": [
    {
      "id": "431757",
      "patient_id": "63120",
      "name": "discharge-letter.pdf",
      "document_type": "Discharge Report",
      "document_category": "OTHER",
      "spry_case_id": "SPRY-63120-2",
      "url": "https://example-bucket.s3.us-west-2.amazonaws.com/discharge-letter.pdf?X-Amz-Signature=...",
      "thumbnail_url": "https://example-bucket.s3.us-west-2.amazonaws.com/discharge-letter.png?X-Amz-Signature=...",
      "uploaded_by": "2094",
      "uploaded_by_name": "Morgan Delgado",
      "signature_status": null,
      "signed_at": null,
      "received_at": null,
      "shared_with_patient": false,
      "from_fax": false,
      "notes": null,
      "created_at": "2026-08-27T14:30:00Z",
      "updated_at": "2026-08-27T14:30:00Z"
    }
  ],
  "page": 1,
  "page_size": 25,
  "total": 1,
  "total_pages": 1
}

Response Fields

Field Type Description
items array of object The page of results. See Items.
page integer 1-based page number.
page_size integer Results per page.
total integer Total results matching the query.
total_pages integer Total pages available.

Items

Field Type Description
id string The document id.
patient_id string The patient. Correlate on this — it's a stable id, and there's no external-reference field.
name string or null The file name.
document_type string or null What the document is, as labelled when it was filed.
document_category string or null The chart section it is filed under.
spry_case_id string or null The case's business key.
url string or null The document, as a signed S3 link valid for about 15 minutes. Fetch it rather than storing it.
thumbnail_url string or null A preview image, signed like url.
uploaded_by string or null The user who filed the document.
uploaded_by_name string or null
signature_status string or null Whether the document has been signed, when it needs a signature.
signed_at string (date-time) or null
received_at string (date-time) or null When a faxed document arrived.
shared_with_patient boolean or null Whether the patient can see the document in the patient app.
from_fax boolean or null Whether the document arrived by fax.
notes string or null
created_at string (date-time) or null
updated_at string (date-time) or null

Error Response

Code: 400 Bad Request

{
  "code": "bad_request",
  "message": "Validation failed",
  "errors": [
    {
      "field": "patient_id",
      "message": "must be a string"
    }
  ]
}

Every error has the same shape — a machine-readable code, a message, and an errors[] array that's empty when there's nothing field-specific to report. The HTTP status is authoritative.

Status code Meaning
400 Bad Request bad_request The request body or parameters failed validation. errors[] names the offending fields.
401 Unauthorized unauthorized The access token is missing, malformed or expired.
403 Forbidden forbidden The request references a resource outside the token's organisation or clinic scope.
404 Not Found not_found No such resource, or it's outside your scope.
429 Too Many Requests rate_limited Rate limit exceeded. Back off and retry.
500 Internal Server Error internal_error Unexpected server error.
502 Bad Gateway upstream_error Upstream service failed or timed out.

Notes

  • url and thumbnail_url are signed S3 links valid for about 15 minutes. Fetch them when you need them rather than storing them.
  • A patient outside your organisation is reported as 404, the same as one that doesn't exist.