Hanko mfa API
Represents all objects which are related to MFA in common
Represents all objects which are related to MFA in common
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/hanko-mfa-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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:
version: '1.2'
title: passkey-server Mfa API
description: This API shall represent the private and public endpoints for passkey registration, management and authentication
termsOfService: https://www.hanko.io/terms
contact:
email: developers@hanko.io
url: https://www.hanko.io
name: Hanko Dev Team
license:
url: https://www.gnu.org/licenses/gpl-3.0.de.html
name: GPLv3
servers:
- url: https://passkeys.hanko.io
tags:
- name: mfa
description: Represents all objects which are related to MFA in common
paths:
/{tenant_id}/mfa/registration/initialize:
post:
tags:
- mfa
summary: Start MFA Registration
description: Initialize a registration for mfa credentials
operationId: post-mfa-registration-initialize
parameters:
- $ref: '#/components/parameters/X-API-KEY'
- name: tenant_id
in: path
description: Tenant ID
required: true
schema:
type: string
requestBody:
$ref: '#/components/requestBodies/post-registration-initialize'
responses:
'200':
$ref: '#/components/responses/post-registration-initialize'
'400':
$ref: '#/components/responses/error'
'401':
$ref: '#/components/responses/error'
'500':
$ref: '#/components/responses/error'
security: []
servers:
- url: https://passkeys.hanko.io
/{tenant_id}/mfa/registration/finalize:
post:
tags:
- mfa
summary: Finish MFA Registration
description: Finish credential registration process
operationId: post-mfa-registration-finalize
parameters:
- $ref: '#/components/parameters/X-API-KEY'
- name: tenant_id
in: path
description: Tenant ID
required: true
schema:
type: string
requestBody:
$ref: '#/components/requestBodies/post-registration-finalize'
responses:
'200':
$ref: '#/components/responses/token'
'400':
$ref: '#/components/responses/error'
'401':
$ref: '#/components/responses/error'
'404':
$ref: '#/components/responses/error'
'500':
$ref: '#/components/responses/error'
security: []
servers:
- url: https://passkeys.hanko.io
/{tenant_id}/mfa/login/initialize:
post:
tags:
- mfa
summary: Start MFA Login
description: Initialize a login flow for MFA
operationId: post-mfa-login-initialize
parameters:
- $ref: '#/components/parameters/X-API-KEY'
- name: tenant_id
in: path
description: Tenant ID
required: true
schema:
type: string
requestBody:
$ref: '#/components/requestBodies/post-mfa-login-initialize'
responses:
'200':
$ref: '#/components/responses/post-login-initialize'
'400':
$ref: '#/components/responses/error'
'401':
$ref: '#/components/responses/error'
'404':
$ref: '#/components/responses/error'
'500':
$ref: '#/components/responses/error'
security: []
servers:
- url: https://passkeys.hanko.io
/{tenant_id}/mfa/login/finalize:
post:
tags:
- mfa
summary: Finish MFA Login
description: Finalize the login operation
operationId: post-mfa-login-finalize
parameters:
- $ref: '#/components/parameters/X-API-KEY'
- name: tenant_id
in: path
description: Tenant ID
required: true
schema:
type: string
requestBody:
$ref: '#/components/requestBodies/post-login-finalize'
responses:
'200':
$ref: '#/components/responses/token'
'400':
$ref: '#/components/responses/error'
'401':
$ref: '#/components/responses/error'
'404':
$ref: '#/components/responses/error'
'500':
$ref: '#/components/responses/error'
security: []
servers:
- url: https://passkeys.hanko.io
components:
responses:
token:
description: Example response
content:
application/json:
schema:
type: object
properties:
token:
type: string
minProperties: 1
post-registration-initialize:
description: Example response
content:
application/json:
schema:
type: object
properties:
publicKey:
type: object
properties:
rp:
$ref: '#/components/schemas/relying-party-entity'
user:
$ref: '#/components/schemas/public-key-user'
challenge:
type: string
pubKeyCredParams:
type: array
items:
$ref: '#/components/schemas/credential-parameter-entity'
timeout:
type: integer
excludeCredentials:
type: array
items:
$ref: '#/components/schemas/credential-descriptor-entity'
authenticatorSelection:
$ref: '#/components/schemas/authentication-selection-entity'
attestation:
type: string
enum:
- direct
- enterprise
- indirect
- none
extensions:
type: object
properties:
appid:
type: string
appidExclude:
type: string
credProps:
type: boolean
required:
- rp
- user
- challenge
- pubKeyCredParams
required:
- publicKey
post-login-initialize:
description: Example response
content:
application/json:
schema:
type: object
properties:
publicKey:
type: object
properties:
challenge:
type: string
timeout:
type: integer
rpId:
type: string
allowCredentials:
type: array
items:
$ref: '#/components/schemas/credential-descriptor-entity'
userVerification:
type: string
enum:
- discouraged
- preferred
- required
extensions:
type: object
properties:
appid:
type: boolean
appidExclude:
type: boolean
credProps:
type: object
properties:
rk:
type: boolean
required:
- challenge
mediation:
type: string
enum:
- optional
- required
- silent
error:
description: Error Response with detailed information
content:
application/json:
schema:
type: object
properties:
title:
type: string
example:
- explanatory title
details:
type: string
example:
- Information which helps resolving the problem
status:
type: integer
requestBodies:
post-mfa-login-initialize:
content:
application/json:
schema:
type: object
properties:
user_id:
type: string
required:
- user_id
post-registration-initialize:
description: ''
content:
application/json:
schema:
type: object
properties:
user_id:
type: string
username:
type: string
maxLength: 128
icon:
type: string
display_name:
type: string
maxLength: 128
required:
- user_id
- username
post-login-finalize:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/public-key-credential'
- type: object
properties:
response:
$ref: '#/components/schemas/autenticator-assertion-response'
clientExtensionResults:
type: object
properties:
appid:
type: boolean
appidExclude:
type: boolean
credProps:
type: object
properties:
rk:
type: boolean
required:
- response
- clientExtensionResults
post-registration-finalize:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/public-key-credential'
- type: object
properties:
response:
$ref: '#/components/schemas/authenticator-attestation-response'
transports:
type: array
uniqueItems: true
items:
type: string
required:
- response
schemas:
authenticator-response:
type: object
title: authenticator-response
properties:
clientDataJSON:
type: string
required:
- clientDataJSON
autenticator-assertion-response:
title: autenticator-assertion-response
allOf:
- $ref: '#/components/schemas/authenticator-response'
- type: object
properties:
authenticatorData:
type: string
signature:
type: string
userHandle:
type: string | null
required:
- authenticatorData
- signature
public-key-credential:
title: public-key-credential
allOf:
- $ref: '#/components/schemas/credential'
- type: object
properties:
rawId:
type: string
authenticatorAttachment:
type: string
enum:
- cross-platform
- platform
- null
required:
- rawId
authentication-selection-entity:
type: object
title: authentication-selection-entity
properties:
authenticatorAttachement:
type: string
enum:
- cross-platform
- platform
requireResidentKey:
type: boolean
default: false
residentKey:
type: string
enum:
- discouraged
- preferred
- required
userVerification:
type: string
enum:
- discouraged
- preferred
- required
authenticator-attestation-response:
title: authenticator-attestation-response
allOf:
- $ref: '#/components/schemas/authenticator-response'
- type: object
properties:
attestationObject:
type: string
transports:
type: array
uniqueItems: true
items:
type: string
required:
- attestationObject
credential-descriptor-entity:
type: object
title: credential-descriptor-entity
properties:
type:
enum:
- public-key
id:
type: string
transports:
type: array
uniqueItems: true
items:
type: string
enum:
- ble
- hybrid
- internal
- nfc
- usb
required:
- type
- id
credential-parameter-entity:
type: object
title: credential-parameter-entity
properties:
type:
enum:
- public-key
alg:
type: integer
format: int32
required:
- type
- alg
relying-party-entity:
title: relying-party-entity
allOf:
- type: object
properties:
id:
type: string
- $ref: '#/components/schemas/credential-entity'
public-key-user:
type: object
title: public-key-user
properties:
id:
type: string
displayName:
type: string
name:
type: string
required:
- id
- displayName
- name
credential:
type: object
title: credential
properties:
id:
type: string
type:
enum:
- public-key
required:
- id
- type
credential-entity:
type: object
title: credential-entity
properties:
name:
type: string
required:
- name
parameters:
X-API-KEY:
name: apiKey
in: header
description: Secret API key
required: true
schema:
type: string
minLength: 32