Skip to content

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:

3nAm5sfdxhabL28zzT2HKf7EqVrLWB25jF34oXKadJQ7

Pin 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

http
GET /v1/attestation/pubkey

No authentication required.

Response

200 OK

json
{
  "version": "v1",
  "domain": "venum-swap-attestation",
  "algorithm": "ed25519",
  "publicKey": "3nAm5sfdxhabL28zzT2HKf7EqVrLWB25jF34oXKadJQ7"
}
FieldTypeDescription
versionstringAttestation format version (matches attestation.version)
domainstringDomain-separation tag prefixed to every signed message
algorithmstringAlways ed25519
publicKeystringBase58 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.