InfraNest Authentication API
The Authentication API from InfraNest — 2 operation(s) for authentication.
The Authentication API from InfraNest — 2 operation(s) for authentication.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/infranest:infranest-authentication-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: InfraNest Authentication API
description: Domains, DNS, cloud servers, certificates and uptime monitoring in one API, across the registrars, DNS hosts and clouds you already use, such as Cloudflare, Route 53, Hetzner and GoDaddy. Start in a free sandbox with sample data, use scoped tokens, try DNS changes as a dry run first, and retry safely with idempotency keys.
version: 1.0.0
x-logo:
url: https://developers.infranest.io/logo.svg
altText: InfraNest
contact:
name: InfraNest
url: https://developers.infranest.io
termsOfService: https://infranest.io/terms
servers:
- url: https://api.infranest.io
security:
- default: []
tags:
- name: Authentication
description: ''
paths:
/api/auth/logout:
post:
summary: Revoke the current token
operationId: postApiAuthLogout
description: Deletes the token that authenticated this request, so it stops working immediately. Other tokens on your account are not affected.
parameters: []
responses:
'200':
description: OK
content:
application/json:
example:
message: Logged out successfully.
'401':
$ref: '#/components/responses/Error401'
'403':
$ref: '#/components/responses/Error403'
'409':
$ref: '#/components/responses/Error409'
'422':
$ref: '#/components/responses/Error422'
'429':
$ref: '#/components/responses/Error429'
tags:
- Authentication
x-infranest-scope: null
x-infranest-token-writable: true
x-infranest-module: account
x-infranest-errors:
- unauthenticated
- write_disabled
- organization_suspended
- idempotency_in_progress
- validation_failed
- idempotency_key_reused
- rate_limited
/api/auth/me:
get:
summary: Get the signed-in user
operationId: getApiAuthMe
description: Your user profile, the organizations you belong to with your role in each, and the state of your account security (two-factor, passkeys, password). A token bound to one organization lists only that organization.
parameters: []
responses:
'200':
description: OK
content:
application/json:
example:
user:
id: 1
name: Alex Rivera
email: demo@example.com
email_verified_at: '2026-01-15T12:00:00.000000Z'
created_at: '2026-01-15T12:00:00.000000Z'
updated_at: '2026-01-15T12:00:00.000000Z'
is_super_admin: false
blocked_at: null
block_reason: null
locked_until: null
notification_preferences:
quiet_hours:
from: '22:00'
to: 07:00
tz: Europe/Amsterdam
two_factor_confirmed_at: null
first_name: null
last_name: null
language: en
avatar_url: http://localhost/storage/avatars/docs-demo-alex.svg
dashboard_layout: null
platform_role: user
email_format: html
onboarding: null
password_changed_at: '2026-01-15T12:00:00.000000Z'
pending_email: null
pending_email_sent_at: null
terms_accepted_at: null
terms_version: null
marketing_consent_at: null
timezone: null
time_format: auto
force_password_reset: false
deleted_at: null
purge_after: null
purge_reminder_sent_at: null
deleted_by_id: null
deleted_by_label: null
deletion_reason: null
anonymized_at: null
analytics_opt_out: false
open_on_dashboard_id: null
default_organization_id: null
analytics_id: api.infranest.io-4200017
organizations:
- id: 1
name: Northwind Cloud
slug: northwind-demo
country: null
avatar_url: null
base_currency: EUR
timezone: null
price_display: net
vat_rate: '21.00'
require_reauth_destructive: false
require_reauth_power: false
require_2fa: false
password_min_length: null
password_require_symbols: null
password_max_age_days: null
dynamic_ip_default_strict: false
dynamic_ip_default_fail_closed: false
snapshot_before_risky: false
recap_cadence: monthly
sso_required: false
sso_required_since: null
is_demo: true
is_sandbox: false
users_count: 4
org_role:
id: 1
organization_id: null
name: Owner
slug: owner
is_system: true
permissions:
dns.read: true
dns.write: true
cloud.read: true
cloud.write: true
billing.read: true
domains.read: true
roles.manage: true
billing.write: true
domains.write: true
domains.delete: true
members.manage: true
monitoring.read: true
monitoring.write: true
created_at: '2026-01-15T12:00:00.000000Z'
updated_at: '2026-01-15T12:00:00.000000Z'
deleted_at: null
purge_after: null
purge_reminder_sent_at: null
deleted_by_id: null
deleted_by_label: null
deletion_reason: null
sso_admitted: true
effective_timezone: UTC
managed_by:
- Sam Okoye
analytics_id: null
pivot:
user_id: 1
organization_id: 1
org_role_id: 1
sso_external: false
created_at: '2026-01-15T12:00:00.000000Z'
updated_at: '2026-01-15T12:00:00.000000Z'
unread_notifications: 3
is_impersonated: false
is_standing_in: false
impersonated_by: null
session_country_code: null
session_region_code: null
two_factor_setup_required: false
password_reset_required: false
email_verification_required: false
email_undeliverable: false
email_security_phrase: null
has_passkeys: false
passkey_count: 0
has_password: true
sso_only: null
can_go_passwordless: false
recovery_codes_left: null
gravatar_enabled: false
gravatar_default: mp
avatar_sources:
- google
- github
oauth_avatars: []
stripe_enabled: false
stripe_publishable_key: null
'401':
$ref: '#/components/responses/Error401'
'429':
$ref: '#/components/responses/Error429'
tags:
- Authentication
x-infranest-scope: null
x-infranest-token-writable: false
x-infranest-module: account
x-infranest-errors:
- unauthenticated
- rate_limited
components:
responses:
Error409:
description: 'A conflict: the same request is still being handled, or the current state does not allow it. The body is an Error; its `code` says which.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Error401:
description: The token is missing, wrong, expired or revoked. The body is an Error; its `code` says which.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Error422:
description: The request was understood but cannot be done as sent. The body is an Error; its `code` says which.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Error429:
description: 'Too many requests: wait the seconds in Retry-After. The body is an Error; its `code` says which.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Error403:
description: The token or your role may not do this here. The body is an Error; its `code` says which.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
type: object
required:
- code
- message
- hint
- retryable
properties:
code:
type: string
enum:
- unauthenticated
- scope_missing
- session_only
- not_token_writable
- write_disabled
- wrong_organization
- token_ip_not_allowed
- test_token_required
- test_token_sandbox_only
- api_token_required
- sandbox_personal
- sandbox_needs_organization
- organization_offline
- permission_denied
- forbidden
- organization_suspended
- read_only_session
- sso_required
- two_factor_setup_required
- password_reset_required
- email_verification_required
- plan_limit
- not_found
- method_not_allowed
- conflict
- validation_failed
- unprocessable
- range_too_large
- rate_limited
- idempotency_key_reused
- idempotency_in_progress
- provider_refused
- provider_rate_limited
- provider_unavailable
- maintenance
- server_error
description: 'What kind of error this is. Stable: codes are added, never renamed or removed.'
message:
type: string
description: A sentence for people. May be reworded.
hint:
type: string
description: What to do about it.
retryable:
type: boolean
description: Whether the same request can succeed later unchanged.
docs_url:
type: string
format: uri
reference:
type: string
description: The request ID; also the X-Request-Id header.
retry_after:
type: integer
description: Seconds to wait before retrying.
required:
type: string
description: The missing token scope (scope_missing).
required_permission:
type: string
description: The missing role permission (permission_denied).
errors:
type: object
additionalProperties:
type: array
items:
type: string
securitySchemes:
default:
type: http
scheme: bearer
description: Create a token in the app under My account → Developer. Tokens are managed in the app only, never through the API.
externalDocs:
description: 'InfraNest: domains, DNS, cloud servers, certificates and uptime monitoring in one place'
url: https://infranest.io