API changelog

Changes to the PlaySpace Partner Platform API. The API is versioned in the path; everything below is additive within /v1 unless explicitly marked otherwise.

Subscribe to release notes at https://developers.playspace.health/changelog.rss, or watch the Deprecation and Sunset headers — every deprecation is announced there and by direct email to every organisation calling the affected endpoint, twelve months ahead.

Nothing on /v1 has ever been deprecated.


Unreleased

Visible in the sandbox, not yet in production.

  • GET /v1/artifacts gains updated_after. Lets a poller find edited artifacts, not only new ones.
  • Session participants may exceed one. Sibling and family sessions. participants already accepts an array; the ceiling rises from one to four.
  • POST /v1/exports gains format: "fhir". A read-only projection of Patient, Practitioner, DocumentReference and QuestionnaireResponse alongside the native bundle, for organisations whose procurement asks for it. The native schema remains the contract.

1.0.0 — 2026-08-12

General availability. /v1 is stable and the compatibility commitments in conventions apply from this date.

Added

  • Practice hierarchy above the clinic — GET /v1/organisation/groups, plus group on clinics and a group filter on GET /v1/clinics.
  • GET /v1/organisation/surfaces, so a partner can render entry points from the licensed set rather than discovering a refusal at mint.
  • can_request_export on caregiver links, and the corresponding standing check on POST /v1/exports.

Changed

  • POST /v1/tokens now validates every origin at mint. An origin no browser will honour as a frame source returns 422 origin-not-allowed naming the value, where it previously minted a token that produced a blank frame.
  • 403 on a scope failure now carries required_scopes and granted_scopes, so the diagnosis is in the response.

0.9.0 — 2026-07-28

Beta. Contract frozen pending general availability.

Added

  • Exports: POST /v1/exports, status, download, and the bundle format with its manifest and human-readable index.
  • Clinical notes, read-only: GET /v1/notes, /{id}, /{id}/versions, /templates. Gated on the notes capability, off by default.
  • GET /v1/usage/by-clinician and GET /v1/usage/history.

Changed

  • Breaking, pre-general-availability. Generation endpoints moved from POST /v1/{resource} with a generate flag to a dedicated POST /v1/{resource}/generate returning 202 and a job. The flag form is gone.
  • Idempotency-Key became required on every mutation. It was optional through 0.8.

0.8.0 — 2026-07-06

Added

  • The change feed: GET /v1/changes, with a monotonic sequence, opaque cursor and thirty-day retention.
  • Generation quota: GET /v1/usage, and 429 quota-exceeded with resets_at on every generation endpoint.
  • POST /v1/forms/extract — build a structured form from an uploaded intake document.

Changed

  • Job payloads gained estimated_seconds.
  • A failed job no longer consumes quota. Retries after a failure are free.

0.7.0 — 2026-06-15

Added

  • The artifact index: GET /v1/artifacts, /{id}, /{id}/download. The attribution triple — created_by, subject, session — is now carried on every produced object.
  • POST /v1/studio/generate and POST /v1/models/generate.
  • Worksheet and form assignment, with route_to_caregiver on forms.

Changed

  • subject became optional on generation. Omitting it produces library content rather than personal content; it was previously required.

0.6.0 — 2026-05-20

Added

  • Content library: playrooms, toolkits, the game catalog, storybooks, worksheets and forms.
  • POST /v1/storybooks/generate with named characters and cross-page visual consistency.
  • Caregiver links: POST /v1/caregivers/link, GET /v1/patients/{id}/caregivers.

0.5.0 — 2026-04-28

Added

  • Sessions as a first-class resource, replacing appointment-link minting as a side effect. POST /v1/sessions returns both role-scoped hosted links; GET /v1/sessions/{id}/summary returns what happened.
  • POST /v1/tokens — short-lived, role-scoped, single-person session tokens.

Changed

  • Breaking, pre-general-availability. POST /v1/appointments/{id}/session-links became POST /v1/sessions/{id}/links. Appointments are no longer a partner-facing resource; your platform is the schedule and PlaySpace holds your identifier for it.

0.4.0 — 2026-03-31

Added

  • ext: identifier addressing on every path that takes an identifier.
  • Upsert semantics on clinics, practitioners and patients, keyed on external_id.
  • POST /v1/patients/search.

Removed

  • Breaking, pre-general-availability. GET /v1/patients?q= is gone with no replacement of that shape. A person's name in a query string is captured by platform request logs before anything at the application layer can act on it, so free-text person search moved to a request body. This is a routing decision, not a redaction one, and it will not be reversed.

0.1.0 — 2026-02-10

First preview. Clinics, practitioners, patients, appointments. Cursor pagination, RFC 9457 problem documents, per-organisation rate limiting, and the per-request audit log.