Versioning

v1 has been generally available since 2026-10-07. Breaking changes only ever arrive in a new version, /v2, with 6 months of overlap.

The version is part of the path: every route starts with https://api.submitator.com/v1. There are no version headers and no dated versions.

v1 is generally available

v1 has been generally available since 2026-10-07, and the policy on this page applies to it. GET /openapi.json reports info.version 1.0.0 and returns the operations the reference shows.

The changelog dates every change since v1 opened on 2026-10-06.

Breaking changes go to /v2

A change that can break working code only ever ships in a new version, such as /v2. When it does:

  • /v1 keeps working for 6 months after /v2 is released.
  • Responses from /v1 carry Deprecation and Sunset headers with the dates.
  • The owner of every account with a key gets an email, and the dated changelog lists each change.

Changes that are not breaking

These can arrive in v1 at any time, so build your integration to accept them:

  • New operations, new optional parameters and new fields in responses.
  • New values in the open lists: listing reason, action.code, readiness.missing, unlocks[].requirement, the badge recipe's platform and language, and a delivery's last_attempt.error.
  • New event types. Answer 2xx to a webhook of a type you do not know.
  • New wording in any message. Branch on code, never on the text.

Ignore the fields you do not use, and handle a value you do not know: for an unknown action.code, show client_message, or a general prompt when it is null.