---
updatedAt: 2025-11-19T15:03:28.000Z
agentTools:
  projectIndex: https://partner.wirexpaychain.com/llms.txt
---

# Verify SMS code

Exchanges an OTP code send via SMS for an action token that can be used to confirm that the action being executed is approved by end-user

# OpenAPI definition

```json
{
  "openapi": "3.0.1",
  "info": {
    "title": "Wirex BaaS API",
    "description": "The **Wirex BaaS API** enables partners to deliver non-custodial financial services directly to their retail users. Through a single integration, partners can onboard users, verify identities, issue smart wallet–linked cards, and enable crypto-backed bank transfers—without ever handling fiat or taking custody of user funds.</br>All transactions are powered by **user-owned smart wallets**, ensuring security, transparency, and full user control. Wirex acts as the infrastructure provider, so you can focus on building exceptional user experiences while we handle the heavy lifting.",
    "contact": {
      "name": "API Support Team",
      "email": "company@wirexpaychain.com"
    },
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api-baas.wirexapp.tech",
      "description": "Sandbox environment"
    },
    {
      "url": "https://api-baas.wirexapp.com",
      "description": "Production environment"
    }
  ],
  "tags": [
    {
      "name": "Confirmation",
      "description": "The **Confirmation APIs** enable partners to securely validate user actions through OTP-based verification mechanisms. These endpoints support SMS delivery and OTP token exchange, ensuring end-user authorization for sensitive operations.\n\n### Key Features:\n\n- **OTP via SMS**:\n  - Trigger the sending of an OTP code via SMS to the user’s registered phone number.\n  - Designed to support actions such as phone verification or viewing sensitive card details.\n\n- **Secure Verification Flow**:\n  - Verify the submitted OTP code and receive an action token in return.\n  - Ensures that only authorized users can complete critical operations.\n\n- **Action-Based Context**:\n  - Each OTP session is linked to a specific action type (e.g., verifying phone or accessing card data).\n  - Prevents unauthorized use of tokens outside their intended context.\n\n---\n\nWith the Confirmation APIs, partners can implement robust second-factor verification flows that protect sensitive user operations, enhance compliance, and build trust with minimal integration overhead."
    }
  ],
  "paths": {
    "/api/v1/confirmation/sms/verify": {
      "post": {
        "tags": [
          "Confirmation"
        ],
        "summary": "Verify SMS code",
        "description": "Exchanges an OTP code send via SMS for an action token that can be used to confirm that the action being executed is approved by end-user",
        "requestBody": {
          "description": "Body data",
          "content": {
            "*/*": {
              "schema": {
                "$ref": "#/components/schemas/request.ActionConfirmationVerifySmsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/response.TokenResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/response.ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/response.ErrorResponse"
                }
              }
            }
          }
        },
        "x-codegen-request-body-name": "bodyData"
      }
    }
  },
  "components": {
    "schemas": {
      "request.ActionConfirmationVerifySmsRequest": {
        "required": [
          "code",
          "session_id"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Code is the SMS confirmation code entered by the user",
            "example": "123456"
          },
          "session_id": {
            "type": "string",
            "description": "SessionId is the unique identifier for the users session created using **Request Sms Code** endpoint",
            "example": "00000000-0000-0000-0000-000000000001"
          }
        }
      },
      "response.ErrorCategory": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string"
          },
          "grpc_status_code": {
            "type": "integer"
          },
          "http_status_code": {
            "type": "integer"
          }
        }
      },
      "response.ErrorDetails": {
        "type": "object",
        "properties": {
          "details": {
            "type": "string"
          },
          "key": {
            "type": "string"
          }
        }
      },
      "response.ErrorReason": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        }
      },
      "response.ErrorResponse": {
        "type": "object",
        "properties": {
          "error_category": {
            "$ref": "#/components/schemas/response.ErrorCategory"
          },
          "error_description": {
            "type": "string"
          },
          "error_details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/response.ErrorDetails"
            }
          },
          "error_reason": {
            "$ref": "#/components/schemas/response.ErrorReason"
          }
        }
      },
      "response.TokenResponse": {
        "required": [
          "token"
        ],
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Token Signed JWT token",
            "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJLaXdpIjoiV293LCBkaWRuJ3QgdGhpbmsgc29tZW9uZSB3b3VsZCBhY3R1YWxseSBkZWNvZGUgdGhpcy4gUHJvcHMgZm9yIGN1cmlvc2l0eSBtYXRlIiwiaWF0IjoxNzQ0MDAzNjE5fQ.9dtAkgB2NCP5xnAF0xhfqazoL5UOBBw5xji0r-PzGEU"
          }
        }
      }
    },
    "securitySchemes": {
      "Auth0Token": {
        "type": "apiKey",
        "description": "Token obtained using Auth0 client credentials grant flow. Please see [Authorization](#tag/Authorization/Auth0) section",
        "name": "Authorization",
        "in": "header"
      },
      "WirexPayToken": {
        "type": "apiKey",
        "description": "Wirex issued JWT token that can be obtained by using [Login as user](#tag/User/paths/~1user~1authorize/post) endpoint",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "WirexPayToken": []
    },
    {
      "Auth0Token": []
    }
  ],
  "x-readme": {}
}
```