GET /v1/attestation/pubkey
Returns the Ed25519 public key Venum uses to sign /v1/swap/build responses. See Response attestation for how to verify.
The pinned key
The production signer key is permanent and published here, out-of-band from the API that it authenticates:
3nAm5sfdxhabL28zzT2HKf7EqVrLWB25jF34oXKadJQ7Pin this key in your integration — hardcode it as a constant. Do not fetch it at request time and trust the result — an attacker who can MITM the swap response can MITM this endpoint too, so runtime fetch-and-trust gives no protection. The endpoint below is a provisioning-time convenience and a way to cross-check the value above.
No rotation. This key will not be rotated. There is no key-rollover protocol to implement and no overlap window to handle — pin the single value and you're done. In the (never-expected) event of a key compromise we would treat it as a breaking security incident and coordinate directly with integrators, not rotate silently.
Always-on. Every production /v1/swap/build response is signed. Treat a null or invalid attestation as an error and refuse to sign the transaction (fail closed) — that is the intended integration, and our own monitoring pages us if responses ever go out unsigned.
Request
GET /v1/attestation/pubkeyNo authentication required.
Response
200 OK
{
"version": "v1",
"domain": "venum-swap-attestation",
"algorithm": "ed25519",
"publicKey": "3nAm5sfdxhabL28zzT2HKf7EqVrLWB25jF34oXKadJQ7"
}| Field | Type | Description |
|---|---|---|
version | string | Attestation format version (matches attestation.version) |
domain | string | Domain-separation tag prefixed to every signed message |
algorithm | string | Always ed25519 |
publicKey | string | Base58 Ed25519 public key — pin this |
The public key is a permanent published constant, so this endpoint always returns it. Production /v1/swap/build responses are always signed — treat a null attestation as an error and fail closed.
