Corbado Passkeys API

WebAuthn passkey registration and login ceremonies and verification.

OpenAPI Specification

corbado-passkeys-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Corbado Backend ConnectTokens Passkeys API
  description: The Corbado Backend API is a server-to-server REST API for the Corbado passkey-first authentication platform. It manages users, login identifiers, sessions, passkeys (WebAuthn credentials), passkey events, Connect tokens, and project data exports. Requests authenticate with HTTP Basic auth using the project ID as username and the API secret as password (both obtained from the Corbado Developer Panel).
  termsOfService: https://www.corbado.com/legal/terms
  contact:
    name: Corbado Support
    url: https://docs.corbado.com
    email: support@corbado.com
  version: 2.0.0
servers:
- url: https://backendapi.corbado.io/v2
  description: Corbado Backend API v2
security:
- basicAuth: []
tags:
- name: Passkeys
  description: WebAuthn passkey registration and login ceremonies and verification.
paths:
  /passkey/append/start:
    post:
      operationId: passkeyAppendStart
      tags:
      - Passkeys
      summary: Start creating passkey
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasskeyAppendStartReq'
      responses:
        '200':
          description: WebAuthn credential creation options.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PasskeyStartRsp'
        '400':
          $ref: '#/components/responses/ErrorRsp'
  /passkey/append/finish:
    post:
      operationId: passkeyAppendFinish
      tags:
      - Passkeys
      summary: Finish creating passkey
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasskeyFinishReq'
      responses:
        '200':
          description: The newly registered passkey.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PasskeyData'
        '400':
          $ref: '#/components/responses/ErrorRsp'
  /passkey/login/start:
    post:
      operationId: passkeyLoginStart
      tags:
      - Passkeys
      summary: Start passkey login
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasskeyLoginStartReq'
      responses:
        '200':
          description: WebAuthn credential request options.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PasskeyStartRsp'
        '400':
          $ref: '#/components/responses/ErrorRsp'
  /passkey/login/finish:
    post:
      operationId: passkeyLoginFinish
      tags:
      - Passkeys
      summary: Finish passkey login
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasskeyFinishReq'
      responses:
        '200':
          description: The authenticated passkey and user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PasskeyLoginFinishRsp'
        '400':
          $ref: '#/components/responses/ErrorRsp'
  /passkey/mediation/start:
    post:
      operationId: passkeyMediationStart
      tags:
      - Passkeys
      summary: Start passkey login (Conditional UI)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasskeyLoginStartReq'
      responses:
        '200':
          description: WebAuthn credential request options for conditional UI.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PasskeyStartRsp'
        '400':
          $ref: '#/components/responses/ErrorRsp'
  /passkey/mediation/finish:
    post:
      operationId: passkeyMediationFinish
      tags:
      - Passkeys
      summary: Finish passkey login (Conditional UI)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasskeyFinishReq'
      responses:
        '200':
          description: The authenticated passkey and user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PasskeyLoginFinishRsp'
        '400':
          $ref: '#/components/responses/ErrorRsp'
  /passkey/verifySignedData:
    post:
      operationId: passkeyVerifySignedData
      tags:
      - Passkeys
      summary: Verify signed passkey data
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasskeyVerifySignedDataReq'
      responses:
        '200':
          description: The verification result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PasskeyVerifySignedDataRsp'
        '400':
          $ref: '#/components/responses/ErrorRsp'
components:
  schemas:
    ErrorRsp:
      type: object
      required:
      - httpStatusCode
      - message
      properties:
        httpStatusCode:
          type: integer
          format: int32
        message:
          type: string
        requestData:
          $ref: '#/components/schemas/RequestData'
        runtime:
          type: number
          format: float
        error:
          type: object
          properties:
            type:
              type: string
            details:
              type: string
            validation:
              type: array
              items:
                type: object
                properties:
                  field:
                    type: string
                  message:
                    type: string
    PasskeyVerifySignedDataReq:
      type: object
      required:
      - signedData
      properties:
        userID:
          type: string
        signedData:
          type: string
    PasskeyFinishReq:
      type: object
      required:
      - signedChallenge
      properties:
        signedChallenge:
          type: string
          description: The serialized WebAuthn attestation or assertion response from the browser.
        clientInformation:
          $ref: '#/components/schemas/ClientInformation'
    PasskeyData:
      type: object
      properties:
        credentialID:
          type: string
        userID:
          type: string
        attestationType:
          type: string
        transports:
          type: array
          items:
            type: string
        backupEligible:
          type: boolean
        backupState:
          type: boolean
        aaguid:
          type: string
        created:
          type: string
          format: date-time
    PasskeyVerifySignedDataRsp:
      type: object
      properties:
        valid:
          type: boolean
        userID:
          type: string
    ClientInformation:
      type: object
      description: Client/browser context captured for passkey intelligence and risk analysis.
      properties:
        bluetoothAvailable:
          type: boolean
        userAgent:
          type: string
        clientEnvHandle:
          type: string
        javaScriptHighEntropy:
          type: string
    RequestData:
      type: object
      properties:
        requestID:
          type: string
        link:
          type: string
    PasskeyAppendStartReq:
      type: object
      required:
      - userID
      properties:
        userID:
          type: string
        clientInformation:
          $ref: '#/components/schemas/ClientInformation'
    PasskeyLoginStartReq:
      type: object
      properties:
        identifierValue:
          type: string
        clientInformation:
          $ref: '#/components/schemas/ClientInformation'
    PasskeyStartRsp:
      type: object
      properties:
        challenge:
          type: string
          description: The serialized PublicKeyCredentialCreationOptions or PublicKeyCredentialRequestOptions JSON.
    PasskeyLoginFinishRsp:
      type: object
      properties:
        userID:
          type: string
        passkey:
          $ref: '#/components/schemas/PasskeyData'
  responses:
    ErrorRsp:
      description: An error response.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorRsp'
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic authentication. The username is the project ID (e.g. pro-1234567890) and the password is the API secret, both issued from the Corbado Developer Panel.