Driftwatch

APIs / Clerk

Clerk API changes

Breaking changes, deprecations and new fields in the Clerk API, as they ship.

ClerkClerk Backend API (2026-05-12) · ddf3c6f81 breaking1 behavioral8 additive
7 new request properties
  • adopt_audience_resource
  • audience_uri
  • token_exchange_enabled
  • aud_claim_refresh_backfill_enabled
  • dynamic_client_allowed_scopes
  • self_serve_directory_sync_enabled
  • second_factor_verification
ClerkClerk Backend API (2026-05-12) · f10fb1791 behavioral7 additive
4 new request properties
  • saml.idp_certificates
  • idp_certificates
  • timezone
  • reassignment_mappings
ClerkClerk Backend API (2026-05-12) · 7fcc98742 behavioral3 additive
ClerkClerk Backend API (2026-05-12) · 5db398382 deprecation2 behavioral10 additive
7 new request properties
  • device_authorization_grant_enabled
  • allowed_subdomains
  • subdomain_allowlist_enabled
  • aud_claim_enabled
  • self_serve_sso_enabled
  • pkce_required
  • skip_restriction_checks
ClerkClerk Backend API (2026-05-12) · 7d9ea9b17 additive
ClerkClerk Backend API (2026-05-12) · 8e1964133 behavioral8 additive
8 new request properties
  • notify_primary_email_address_changed
  • saml.login_hint
  • login_hint
  • client_id_metadata_documents_advertised
  • client_id_metadata_documents_block_implicitly_allowed_clients
  • client_id_metadata_documents_only_allow_pre_registered_clients
  • default_scopes
  • org_id
ClerkClerk Backend API (2026-05-12) · fd0ea0998 additive
ClerkClerk Backend API (2026-05-12) · f631bba92 breaking1 additive
  • Breakingdirection flip: their tools call this safe

    private_metadata is no longer accepted

    Usually ignored rather than rejected, so the call succeeds and does something subtly different.

    PATCH /organizations/{organization_id} · private_metadata
    Code that breaks
    await client.post("/organizations/{organization_id}", {
      // private_metadata is now ignored, not rejected
      private_metadata: value,
    });
  • Breakingdirection flip: their tools call this safe

    public_metadata is no longer accepted

    Usually ignored rather than rejected, so the call succeeds and does something subtly different.

    PATCH /organizations/{organization_id} · public_metadata
    Code that breaks
    await client.post("/organizations/{organization_id}", {
      // public_metadata is now ignored, not rejected
      public_metadata: value,
    });
  • Additive

    PUT /organizations/{organization_id}/metadata added

    No action needed.

    PUT /organizations/{organization_id}/metadata
ClerkClerk Backend API (2026-05-12) · 6a9744ab1 additive
ClerkClerk Backend API (2026-05-12) · fa72ffdf3 breaking1 behavioral9 additive
4 new request properties
  • identification_status
  • CreateBillingPriceRequest.supported_billing_periods
  • email_address_identification_status
  • phone_number_identification_status