How many recovery codes are left (session only).
GET
/v1/auth/recovery-codes
const url = 'https://api.opdns.io/v1/auth/recovery-codes';const options = {method: 'GET', headers: {cookie: 'opdns_session=<opdns_session>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.opdns.io/v1/auth/recovery-codes \ --cookie opdns_session=<opdns_session>Returns how many unused recovery codes the account has left (never the codes themselves). Session cookie only.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”Counts.
Media typeapplication/json
object
remaining
required
integer
total
required
integer
created_at
required
string | null format: date-time
Examplegenerated
{ "remaining": 1, "total": 1, "created_at": "2026-04-15T12:00:00Z"}Not authenticated.
Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
code
required
Stable machine code.
string
detail
string
errors
Array<object>
object
field
required
string
message
required
string
request_id
string
retry_after
Seconds, repeating the Retry-After header (rate limits, offline nodes).
integer
Example
{ "type": "https://opdns.io/problems/unauthenticated", "title": "Unauthorized", "status": 401, "code": "unauthenticated", "detail": "authentication required", "request_id": "5f2c9a0e7b1d4c38"}Authenticated but not allowed: insufficient_scope, session_required, csrf_rejected, mfa_enrolment_required (restricted session), mfa_required (an operator action, or an admin-scoped token, from a session signed in with the password alone; not in dev), reauth_required (sign in again within five minutes), account_pending_deletion (the account is in its deletion cooling-off).
Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
code
required
Stable machine code.
string
detail
string
errors
Array<object>
object
field
required
string
message
required
string
request_id
string
retry_after
Seconds, repeating the Retry-After header (rate limits, offline nodes).
integer
Example
{ "type": "https://opdns.io/problems/insufficient_scope", "title": "Forbidden", "status": 403, "code": "insufficient_scope", "detail": "the token lacks the profiles:write scope", "request_id": "5f2c9a0e7b1d4c38"}