Base URL is environment-specific and served by the signup-service app-api. Contact
your World ID point of contact for environment endpoints and access.
Credential refresh
POST
/api/v1/refresh
multipart/form-data
Request
Headers
Query parameters
Form fields (always required)
PCP form fields (required only when submitting a PCP)
Include all fields below when refreshing with a Personal Custody Package.Example (credential-only refresh)
Example (refresh with PCP)
Response
Success response
Error responses
If PCP validation fails, the endpoint returns an error status with
PCP_VALIDATION_FAILED.
Credential object format
Thecredential response field is a base64-encoded JSON representation of the World ID Credential object defined in world-id-protocol/crates/primitives/src/credential.rs.
Example (decoded)
Field definitions
Field representations
- FieldElement values (
sub,claims,associated_data_hash) are hex strings with a0xprefix and 64 hex characters. - Issuer public key (
issuer.pk) is serialized as[x, y]decimal strings for BabyJubJub affine coordinates. - Signature is hex-encoded compressed bytes (no
0xprefix).
PoH credential semantics
- The user first obtains an Orb credential (currently a PCP in v2.3 format).
- For a PCP-backed credential,
claims[0]ishash_bytes_to_field_element(ds::CLAIMS_HASH_V1, raw_hashes_json_bytes): the domain-separated Poseidon2 sponge hash of the exact raw PCPhashes.jsonbytes. The Orb’s signature authenticates those same bytes. - When refreshing without a PCP, no claim is supplied and
claims[0]remains the zero field element. - The PoH credential has no associated data, so
associated_data_hashis the zero field element. - The PoH credential subject is blinded and differs from the Orb credential subject.
- The issuer may require a proof for the requested
subto prevent bricking an identity.