Auth
Start SIWE authentication: returns a single-use challenge
POST
/v1/auth/challengeRequest body
addressstring(required)chain_idinteger
Responses
200SIWE challenge (10-minute, single-use nonce)
messagestring(required)noncestring(required)domainstring(required)uristring(required)version"1"(required)chain_idinteger(required)issued_atobject(required)expiration_timeobject(required)
400Invalid request
Example
curl -X POST https://api.cofferline.com/v1/auth/challenge \
-H "content-type: application/json" \
-d '{"address":"…"}'
Complete SIWE authentication: exchanges a signed challenge for a session
POST
/v1/auth/verifyExchanges a signed SIWE challenge for a bearer session, creating the account row on first sign-in.
On the dev environment only, sending x-cofferline-test-account: 1 marks a NEWLY created account as an automated-test fixture (#227): it is left out of the operator's tenant counts and is the only kind of row the housekeeping sweep deletes. It never changes an account that already exists, and it is ignored entirely in production.
Request body
messagestring(required)signaturestring(required)
Responses
200Bearer session token (returned once)
tokenstring(required)addressstring(required)expires_atobject(required)
401Expired/used nonce or invalid signature
Example
curl -X POST https://api.cofferline.com/v1/auth/verify \
-H "content-type: application/json" \
-d '{"message":"…","signature":"…"}'
Identify the authenticated account
GET
/v1/meResponses
200The wallet address and credential kind
addressstring(required)auth_kind"session" | "api_key" | "cf_access" | "payment"(required)
401Missing or invalid credential
Example
curl -X GET https://api.cofferline.com/v1/me \ -H "authorization: Bearer $TOKEN"