When to use
Use Ed25519 authentication when your integration is a backend service that:- Calls the Zeam API from a server (not a browser or mobile app)
- Has access to a private key stored in a secret manager
- Needs access to Connect endpoints (
/v1/connect-*) or application management
How it works
The gateway issues a cryptographic challenge bound to your application’s public key. Your server signs this challenge with the corresponding Ed25519 private key and submits the signature. The gateway verifies the signature and issues a bearer token.Step by step
Fetch the challenge
Request a challenge for your application’s public key:The response contains a challenge payload that must be signed with your private key.
Sign the challenge
Sign the challenge with your Ed25519 private key. The private key must never leave your server.
Using the Go SDK
The SDK handles the entire flow in a single call:Endpoints
| Method | Path | Purpose |
|---|---|---|
GET | /v1/public/auth-connect?account=<G...> | Fetch a challenge |
POST | /v1/public/auth-connect | Submit the signed challenge |
POST | /v1/public/auth-connect/sign-in | Server-side convenience (single request) |
POST | /v1/public/auth/refresh | Exchange refreshToken for a new idToken |
Server-side sign-in
POST /v1/public/auth-connect/sign-in collapses the flow into a single request by sending both the public key and secret issued during application registration.
Troubleshooting
| Symptom | Likely cause |
|---|---|
400 on submit | Challenge was not signed, or signed with the wrong private key |
401 on /v1/* calls | idToken has expired — refresh via POST /v1/public/auth/refresh |
| Empty response | The authentication service is unreachable — check your network and retry |

