Skip to main content
This endpoint is called automatically by the SDK when a cached JWT expires. You typically don’t need to call it directly.
Once a device has attested, it should not attest again — Apple’s replay protection rejects reused attestation objects. Instead, the SDK proves possession of the registered key with an assertion (DCAppAttestService.generateAssertion) and receives a new JWT.

Request

Headers

Body

Response

Errors

The SDK self-heals reattest_required automatically: it clears the cached keyId and performs a fresh attestation. You only see this error if the retry also fails.

Notes

  • Each successful refresh advances the assertion counter server-side, so an assertion cannot be replayed.
  • Unlike /validate, this endpoint has no IP rate limit — the assertion is cryptographically signed by the device key — but the per-tenant tier limit still applies (shared attest bucket, see API Conventions).