Versioning

The API uses date-based versioning through request headers. The version format is YYYY-MM-DD. The current version is 2026-03-25.

Sending a version

Pass the version in the X-Api-Version header:

curl -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Api-Version: 2026-03-25" \
  https://api.getcommunal.com/api/parent_programs

If you omit the header, the current default version is used automatically.

Response headers

Every response includes version information:

X-Api-Version: 2026-03-25
X-Api-Version-Source: header

X-Api-Version-Source is header when you sent the version explicitly, or default when the server applied it.

Deprecation and sunset

When a version is deprecated, responses include warning headers:

X-Api-Version-Warning: Requested API version is deprecated. Sunset date: 2027-02-01
Sunset: 2027-02-01

After the sunset date, the version is removed and requests using it return 400 Bad Request with a list of supported versions.

Invalid versions

Requesting an unsupported version returns a 400 error before any authentication or processing occurs:

{
  "message": "Unsupported API version.",
  "supported_versions": ["2026-02-01", "2026-03-25"]
}

Pinning a version

Pin your integration to a specific version so your code is not affected by future changes. When a new version introduces breaking changes, you can migrate on your own schedule before the old version's sunset date.

See the Changelog for a history of API changes across versions.