Skip to main content

ASSIGN_PROOF_INVALID

The presence proof did not verify.

HTTP status401
GroupRelay path
RetryableNo — sending it again changes nothing
Re-signNONE — do not ask the user to sign anything

What happened​

Wrong signature, wrong domain string, wrong chain id, or a timestamp too far from server time. A common cause: the message was signed with the MultiversX message prefix (a wallet’s signMessage, or sdk-core Account.signMessage) instead of raw. The proof is a raw Ed25519 signature by the sender’s own key over the UTF-8 bytes of the message, for kind key and sponsor alike.

What to do​

Sign the bytes of the message directly with the sender key (sdk-core UserSigner.sign), read details.serverTimeMs, rebuild the proof for this host’s chain id, and call assign again.

Extra members​

This code carries serverTimeMs in the problem document, on top of the common members.

The problem document​

Every error is application/problem+json (RFC 9457) with the same shape:

{
"type": "https://docs.co-relayer.com/errors/assign-proof-invalid",
"title": "The presence proof did not verify.",
"status": 401,
"detail": "A sentence about this specific occurrence.",
"instance": "req_01JB…",
"code": "ASSIGN_PROOF_INVALID",
"retryable": false,
"resign": "NONE",
"hint": "Sign the bytes of the message directly with the sender key (sdk-core `UserSigner.sign`), read `details.serverTimeMs`, rebuild the proof for this host’s chain id, and call assign again."
}

See the error model for what each member means and how to handle unknown codes.