Infobip 2FA API

Infobip's Two Factor Authentication API for OTP (One Time Passcode) delivery and verification. OTPs can be delivered over SMS, Voice or Email. Learn more about the workflow and setup. You can use SDKs and other available tools to help you with integration. — 14 operation path(s) and 0 webhook(s) in Infobip's published OpenAPI.

OpenAPI Specification

infobip-2fa-openapi.json Raw ↑
{
 "openapi":"3.1.0",
 "info":{
  "title":"Infobip OpenAPI Specification",
  "description":"OpenAPI Specification that contains all public endpoints and webhooks.",
  "contact":{
   "name":"Infobip support",
   "email":"support@infobip.com"
  },
  "version":"3.210.0",
  "x-generatedAt":"2026-07-23T15:24:01.295139008Z"
 },
 "tags":[
  {
   "name":"platform",
   "description":"Modular tools to scale and automate your business.\n",
   "x-type":"category",
   "x-displayName":"Platform"
  },
  {
   "name":"2fa",
   "description":"Infobip's Two Factor Authentication API for OTP (One Time Passcode) delivery and verification. OTPs can be delivered over SMS, Voice or Email. [Learn more about the workflow and setup.](https://www.infobip.com/docs/2fa-service/general-2fa-otp-setup) You can use [SDKs and other available tools](https://www.infobip.com/developers/sdks) to help you with integration.\n",
   "x-type":"product",
   "x-displayName":"2FA"
  },
  {
   "name":"2fa-configuration",
   "description":"Before using the 2FA service it is necessary to configure the properties and templates for your use case.  \nConfiguration, such as the number of allowed PIN attempts and PIN time to live are configured by [creating an Application](#channels/sms/2fa/2fa-configuration/create-2fa-application).  \nThe message text that will accompany the PIN and the properties, such as PIN length, are configured by creating either a [message template](#channels/sms/2fa/2fa-configuration/create-2fa-message-template), for SMS and Voice delivery, or an [Email message template](#channels/sms/2fa/2fa-configuration/create-2fa-email-message-template)\n[Learn more about how to create an Email template](https://www.infobip.com/docs/2fa-service/using-2fa-service-with-email) and link it to 2FA API.\n\nThe expected use is to create an Application and apply one or more Message Templates to that Application for a specific authentication scenario. You can create multiple Applications and Message Templates if you have many authentication scenarios, but Application and Message Template creation will be a one-off, infrequent operation.\n",
   "x-type":"module",
   "x-displayName":"2FA Configuration"
  },
  {
   "name":"manage-applications",
   "description":"",
   "x-type":"section",
   "x-displayName":"Manage Applications"
  },
  {
   "name":"manage-message-templates",
   "description":"",
   "x-type":"section",
   "x-displayName":"Manage Message Templates"
  },
  {
   "name":"pin-sending-and-verification",
   "description":"When you have configured at least one [Application](#channels/sms/2fa/2fa-configuration/create-2fa-application) and [Message Template](#channels/sms/2fa/2fa-configuration/create-2fa-message-template), \nyou are ready to trigger PIN generation and its delivery by SMS, Voice or Email.\n",
   "x-type":"module",
   "x-displayName":"PIN Sending and Verification"
  },
  {
   "name":"send-pin-over-sms",
   "description":"",
   "x-type":"section",
   "x-displayName":"Send a PIN over SMS"
  },
  {
   "name":"send-pin-over-voice",
   "description":"",
   "x-type":"section",
   "x-displayName":"Send a PIN over Voice"
  },
  {
   "name":"send-pin-over-email",
   "description":"",
   "x-type":"section",
   "x-displayName":"Send a PIN over Email"
  },
  {
   "name":"verify-pin",
   "description":"",
   "x-type":"section",
   "x-displayName":"Verify a PIN"
  }
 ],
 "paths":{
  "/2fa/2/applications":{
   "get":{
    "tags":[
     "platform",
     "2fa",
     "2fa-configuration",
     "manage-applications"
    ],
    "summary":"Get all 2FA applications",
    "description":"An application is a container for 2FA message templates. Use this method to list your applications.",
    "externalDocs":{
     "description":"Learn more about the workflow and setup",
     "url":"https://www.infobip.com/docs/2fa-service/general-2fa-otp-setup"
    },
    "operationId":"get-2fa-applications",
    "responses":{
     "200":{
      "description":"successful response",
      "content":{
       "application/json":{
        "schema":{
         "type":"array",
         "items":{
          "$ref":"#/components/schemas/17363474057d152577564d8587b079aa7bdd070a3f49746aea3319eb57a5830c.ApplicationResponse"
         }
        },
        "examples":{
         "Multiple applications response":{
          "summary":"Multiple applications response",
          "value":[
           {
            "applicationId":"0933F3BC087D2A617AC6DCB2EF5B8A61",
            "name":"Test application BASIC 1",
            "configuration":{
             "pinAttempts":10,
             "allowMultiplePinVerifications":true,
             "pinTimeToLive":"2h",
             "verifyPinLimit":"1/3s",
             "sendPinPerApplicationLimit":"10000/1d",
             "sendPinPerPhoneNumberLimit":"3/1d"
            },
            "enabled":true
           },
           {
            "applicationId":"5F04FACFAA4978F62FCAEBA97B37E90F",
            "name":"Test application BASIC 2",
            "configuration":{
             "pinAttempts":12,
             "allowMultiplePinVerifications":true,
             "pinTimeToLive":"10m",
             "verifyPinLimit":"2/1s",
             "sendPinPerApplicationLimit":"10000/1d",
             "sendPinPerPhoneNumberLimit":"5/1h"
            },
            "enabled":true
           },
           {
            "applicationId":"B450F966A8EF017180F148AF22C42642",
            "name":"Test application BASIC 3",
            "configuration":{
             "pinAttempts":15,
             "allowMultiplePinVerifications":true,
             "pinTimeToLive":"1h",
             "verifyPinLimit":"30/10s",
             "sendPinPerApplicationLimit":"10000/3d",
             "sendPinPerPhoneNumberLimit":"10/20m"
            },
            "enabled":true
           }
          ]
         }
        }
       },
       "application/xml":{
        "schema":{
         "type":"array",
         "items":{
          "$ref":"#/components/schemas/17363474057d152577564d8587b079aa7bdd070a3f49746aea3319eb57a5830c.ApplicationResponse"
         }
        },
        "examples":{
         "Multiple applications response":{
          "summary":"Multiple applications response",
          "value":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><ApplicationResponses>\n  <item>\n    <applicationId>0933F3BC087D2A617AC6DCB2EF5B8A61</applicationId>\n    <name>Test application BASIC 1</name>\n    <configuration>\n      <pinAttempts>10</pinAttempts>\n      <allowMultiplePinVerifications>true</allowMultiplePinVerifications>\n      <pinTimeToLive>2h</pinTimeToLive>\n      <verifyPinLimit>1/3s</verifyPinLimit>\n      <sendPinPerApplicationLimit>10000/1d</sendPinPerApplicationLimit>\n      <sendPinPerPhoneNumberLimit>3/1d</sendPinPerPhoneNumberLimit>\n    </configuration>\n    <enabled>true</enabled>\n  </item>\n  <item>\n    <applicationId>5F04FACFAA4978F62FCAEBA97B37E90F</applicationId>\n    <name>Test application BASIC 2</name>\n    <configuration>\n      <pinAttempts>12</pinAttempts>\n      <allowMultiplePinVerifications>true</allowMultiplePinVerifications>\n      <pinTimeToLive>10m</pinTimeToLive>\n      <verifyPinLimit>2/1s</verifyPinLimit>\n      <sendPinPerApplicationLimit>10000/1d</sendPinPerApplicationLimit>\n      <sendPinPerPhoneNumberLimit>5/1h</sendPinPerPhoneNumberLimit>\n    </configuration>\n    <enabled>true</enabled>\n  </item>\n  <item>\n    <applicationId>B450F966A8EF017180F148AF22C42642</applicationId>\n    <name>Test application BASIC 3</name>\n    <configuration>\n      <pinAttempts>15</pinAttempts>\n      <allowMultiplePinVerifications>true</allowMultiplePinVerifications>\n      <pinTimeToLive>1h</pinTimeToLive>\n      <verifyPinLimit>30/10s</verifyPinLimit>\n      <sendPinPerApplicationLimit>10000/3d</sendPinPerApplicationLimit>\n      <sendPinPerPhoneNumberLimit>10/20m</sendPinPerPhoneNumberLimit>\n    </configuration>\n    <enabled>true</enabled>\n  </item>\n</ApplicationResponses>\n"
         }
        }
       }
      }
     },
     "401":{
      "$ref":"#/components/responses/ApiException401"
     },
     "403":{
      "$ref":"#/components/responses/ApiException403"
     },
     "429":{
      "$ref":"#/components/responses/ApiException429"
     },
     "4XX":{
      "description":"Error responses",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       },
       "application/xml":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       }
      }
     },
     "500":{
      "$ref":"#/components/responses/ApiException500"
     },
     "5XX":{
      "description":"Error responses",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       },
       "application/xml":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       }
      }
     }
    },
    "security":[
     {
      "Basic":[]
     },
     {
      "APIKeyHeader":[]
     },
     {
      "IBSSOTokenHeader":[]
     },
     {
      "OAuth2":[]
     }
    ],
    "x-scopes":[
     "2fa:manage"
    ],
    "x-throttling-info":[
     {
      "type":"time",
      "numberOfRequests":50,
      "numberOfTimeUnits":10,
      "timeUnit":"m"
     }
    ]
   },
   "post":{
    "tags":[
     "platform",
     "2fa",
     "2fa-configuration",
     "manage-applications"
    ],
    "summary":"Create 2FA application",
    "description":"Create and configure a new 2FA application.",
    "externalDocs":{
     "description":"Learn more about the workflow and setup",
     "url":"https://www.infobip.com/docs/2fa-service/general-2fa-otp-setup"
    },
    "operationId":"create-2fa-application",
    "requestBody":{
     "content":{
      "application/json":{
       "schema":{
        "allOf":[
         {
          "$ref":"#/components/schemas/17363474057d152577564d8587b079aa7bdd070a3f49746aea3319eb57a5830c.ApplicationRequest"
         }
        ]
       },
       "examples":{
        "Application request":{
         "summary":"Application request",
         "value":{
          "name":"2fa application name",
          "enabled":true,
          "configuration":{
           "pinAttempts":5,
           "allowMultiplePinVerifications":true,
           "pinTimeToLive":"10m",
           "verifyPinLimit":"2/4s",
           "sendPinPerApplicationLimit":"5000/12h",
           "sendPinPerPhoneNumberLimit":"2/1d"
          }
         }
        }
       }
      },
      "application/xml":{
       "schema":{
        "allOf":[
         {
          "$ref":"#/components/schemas/17363474057d152577564d8587b079aa7bdd070a3f49746aea3319eb57a5830c.ApplicationRequest"
         }
        ]
       },
       "examples":{
        "Application request":{
         "summary":"Application request",
         "value":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><ApplicationRequest>\n  <name>2fa application name</name>\n  <enabled>true</enabled>\n  <configuration>\n    <pinAttempts>5</pinAttempts>\n    <allowMultiplePinVerifications>true</allowMultiplePinVerifications>\n    <pinTimeToLive>10m</pinTimeToLive>\n    <verifyPinLimit>2/4s</verifyPinLimit>\n    <sendPinPerApplicationLimit>5000/12h</sendPinPerApplicationLimit>\n    <sendPinPerPhoneNumberLimit>2/1d</sendPinPerPhoneNumberLimit>\n  </configuration>\n</ApplicationRequest>\n"
        }
       }
      }
     }
    },
    "responses":{
     "201":{
      "description":"successful response",
      "content":{
       "application/json":{
        "schema":{
         "allOf":[
          {
           "$ref":"#/components/schemas/17363474057d152577564d8587b079aa7bdd070a3f49746aea3319eb57a5830c.ApplicationResponse"
          }
         ]
        },
        "examples":{
         "Creating new application response":{
          "summary":"Creating new application response",
          "value":{
           "applicationId":"1234567",
           "name":"Application name",
           "configuration":{
            "pinAttempts":5,
            "allowMultiplePinVerifications":true,
            "pinTimeToLive":"10m",
            "verifyPinLimit":"2/4s",
            "sendPinPerApplicationLimit":"5000/12h",
            "sendPinPerPhoneNumberLimit":"2/1d"
           },
           "enabled":true
          }
         }
        }
       },
       "application/xml":{
        "schema":{
         "allOf":[
          {
           "$ref":"#/components/schemas/17363474057d152577564d8587b079aa7bdd070a3f49746aea3319eb57a5830c.ApplicationResponse"
          }
         ]
        },
        "examples":{
         "Creating new application response":{
          "summary":"Creating new application response",
          "value":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><ApplicationResponse>\n  <applicationId>1234567</applicationId>\n  <name>Application name</name>\n  <configuration>\n    <pinAttempts>5</pinAttempts>\n    <allowMultiplePinVerifications>true</allowMultiplePinVerifications>\n    <pinTimeToLive>10m</pinTimeToLive>\n    <verifyPinLimit>2/4s</verifyPinLimit>\n    <sendPinPerApplicationLimit>5000/12h</sendPinPerApplicationLimit>\n    <sendPinPerPhoneNumberLimit>2/1d</sendPinPerPhoneNumberLimit>\n  </configuration>\n  <enabled>true</enabled>\n</ApplicationResponse>\n"
         }
        }
       }
      }
     },
     "400":{
      "$ref":"#/components/responses/ApiException400"
     },
     "401":{
      "$ref":"#/components/responses/ApiException401"
     },
     "403":{
      "$ref":"#/components/responses/ApiException403"
     },
     "429":{
      "$ref":"#/components/responses/ApiException429"
     },
     "4XX":{
      "description":"Error responses",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       },
       "application/xml":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       }
      }
     },
     "500":{
      "$ref":"#/components/responses/ApiException500"
     },
     "5XX":{
      "description":"Error responses",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       },
       "application/xml":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       }
      }
     }
    },
    "security":[
     {
      "Basic":[]
     },
     {
      "APIKeyHeader":[]
     },
     {
      "IBSSOTokenHeader":[]
     },
     {
      "OAuth2":[]
     }
    ],
    "x-scopes":[
     "2fa:manage"
    ],
    "x-throttling-info":[
     {
      "type":"time",
      "numberOfRequests":20,
      "numberOfTimeUnits":10,
      "timeUnit":"m"
     }
    ]
   }
  },
  "/2fa/2/applications/{appId}":{
   "get":{
    "tags":[
     "platform",
     "2fa",
     "2fa-configuration",
     "manage-applications"
    ],
    "summary":"Get 2FA application",
    "description":"Get a single 2FA application to see its configuration details.",
    "externalDocs":{
     "description":"Learn more about the workflow and setup",
     "url":"https://www.infobip.com/docs/2fa-service/general-2fa-otp-setup"
    },
    "operationId":"get-2fa-application",
    "parameters":[
     {
      "name":"appId",
      "in":"path",
      "description":"ID of application for which configuration view was requested.",
      "required":true,
      "style":"simple",
      "explode":false,
      "schema":{
       "type":"string"
      },
      "example":"0933F3BC087D2A617AC6DCB2EF5B8A61"
     }
    ],
    "responses":{
     "200":{
      "description":"successful response",
      "content":{
       "application/json":{
        "schema":{
         "allOf":[
          {
           "$ref":"#/components/schemas/17363474057d152577564d8587b079aa7bdd070a3f49746aea3319eb57a5830c.ApplicationResponse"
          }
         ]
        },
        "examples":{
         "Single application response":{
          "summary":"Single application response",
          "value":{
           "applicationId":"1234567",
           "name":"Application name",
           "configuration":{
            "pinAttempts":5,
            "allowMultiplePinVerifications":true,
            "pinTimeToLive":"10m",
            "verifyPinLimit":"2/4s",
            "sendPinPerApplicationLimit":"5000/12h",
            "sendPinPerPhoneNumberLimit":"2/1d"
           },
           "enabled":true
          }
         }
        }
       },
       "application/xml":{
        "schema":{
         "allOf":[
          {
           "$ref":"#/components/schemas/17363474057d152577564d8587b079aa7bdd070a3f49746aea3319eb57a5830c.ApplicationResponse"
          }
         ]
        },
        "examples":{
         "Single application response":{
          "summary":"Single application response",
          "value":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><ApplicationResponse>\n  <applicationId>1234567</applicationId>\n  <name>Application name</name>\n  <configuration>\n    <pinAttempts>5</pinAttempts>\n    <allowMultiplePinVerifications>true</allowMultiplePinVerifications>\n    <pinTimeToLive>10m</pinTimeToLive>\n    <verifyPinLimit>2/4s</verifyPinLimit>\n    <sendPinPerApplicationLimit>5000/12h</sendPinPerApplicationLimit>\n    <sendPinPerPhoneNumberLimit>2/1d</sendPinPerPhoneNumberLimit>\n  </configuration>\n  <enabled>true</enabled>\n</ApplicationResponse>\n"
         }
        }
       }
      }
     },
     "401":{
      "$ref":"#/components/responses/ApiException401"
     },
     "403":{
      "$ref":"#/components/responses/ApiException403"
     },
     "404":{
      "$ref":"#/components/responses/ApiException404"
     },
     "429":{
      "$ref":"#/components/responses/ApiException429"
     },
     "4XX":{
      "description":"Error responses",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       },
       "application/xml":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       }
      }
     },
     "500":{
      "$ref":"#/components/responses/ApiException500"
     },
     "5XX":{
      "description":"Error responses",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       },
       "application/xml":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       }
      }
     }
    },
    "security":[
     {
      "Basic":[]
     },
     {
      "APIKeyHeader":[]
     },
     {
      "IBSSOTokenHeader":[]
     },
     {
      "OAuth2":[]
     }
    ],
    "x-scopes":[
     "2fa:manage"
    ],
    "x-throttling-info":[
     {
      "type":"time",
      "numberOfRequests":100,
      "numberOfTimeUnits":10,
      "timeUnit":"m"
     }
    ]
   },
   "put":{
    "tags":[
     "platform",
     "2fa",
     "2fa-configuration",
     "manage-applications"
    ],
    "summary":"Update 2FA application",
    "description":"Change configuration options for your existing 2FA application.",
    "externalDocs":{
     "description":"Learn more about the workflow and setup",
     "url":"https://www.infobip.com/docs/2fa-service/general-2fa-otp-setup"
    },
    "operationId":"update-2fa-application",
    "parameters":[
     {
      "name":"appId",
      "in":"path",
      "description":"ID of application that should be updated.",
      "required":true,
      "style":"simple",
      "explode":false,
      "schema":{
       "type":"string"
      },
      "example":"0933F3BC087D2A617AC6DCB2EF5B8A61"
     }
    ],
    "requestBody":{
     "content":{
      "application/json":{
       "schema":{
        "allOf":[
         {
          "$ref":"#/components/schemas/17363474057d152577564d8587b079aa7bdd070a3f49746aea3319eb57a5830c.ApplicationRequest"
         }
        ]
       },
       "examples":{
        "Application request":{
         "summary":"Application request",
         "value":{
          "name":"2fa application name",
          "enabled":true,
          "configuration":{
           "pinAttempts":5,
           "allowMultiplePinVerifications":true,
           "pinTimeToLive":"10m",
           "verifyPinLimit":"2/4s",
           "sendPinPerApplicationLimit":"5000/12h",
           "sendPinPerPhoneNumberLimit":"2/1d"
          }
         }
        }
       }
      },
      "application/xml":{
       "schema":{
        "allOf":[
         {
          "$ref":"#/components/schemas/17363474057d152577564d8587b079aa7bdd070a3f49746aea3319eb57a5830c.ApplicationRequest"
         }
        ]
       },
       "examples":{
        "Application request":{
         "summary":"Application request",
         "value":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><ApplicationRequest>\n  <name>2fa application name</name>\n  <enabled>true</enabled>\n  <configuration>\n    <pinAttempts>5</pinAttempts>\n    <allowMultiplePinVerifications>true</allowMultiplePinVerifications>\n    <pinTimeToLive>10m</pinTimeToLive>\n    <verifyPinLimit>2/4s</verifyPinLimit>\n    <sendPinPerApplicationLimit>5000/12h</sendPinPerApplicationLimit>\n    <sendPinPerPhoneNumberLimit>2/1d</sendPinPerPhoneNumberLimit>\n  </configuration>\n</ApplicationRequest>\n"
        }
       }
      }
     }
    },
    "responses":{
     "200":{
      "description":"successful response",
      "content":{
       "application/json":{
        "schema":{
         "allOf":[
          {
           "$ref":"#/components/schemas/17363474057d152577564d8587b079aa7bdd070a3f49746aea3319eb57a5830c.ApplicationResponse"
          }
         ]
        },
        "examples":{
         "Updating application response":{
          "summary":"Updating application response",
          "value":{
           "applicationId":"1234567",
           "name":"Application name",
           "configuration":{
            "pinAttempts":5,
            "allowMultiplePinVerifications":true,
            "pinTimeToLive":"10m",
            "verifyPinLimit":"2/4s",
            "sendPinPerApplicationLimit":"5000/12h",
            "sendPinPerPhoneNumberLimit":"2/1d"
           },
           "enabled":true
          }
         }
        }
       },
       "application/xml":{
        "schema":{
         "allOf":[
          {
           "$ref":"#/components/schemas/17363474057d152577564d8587b079aa7bdd070a3f49746aea3319eb57a5830c.ApplicationResponse"
          }
         ]
        },
        "examples":{
         "Updating application response":{
          "summary":"Updating application response",
          "value":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><ApplicationResponse>\n  <applicationId>1234567</applicationId>\n  <name>Application name</name>\n  <configuration>\n    <pinAttempts>5</pinAttempts>\n    <allowMultiplePinVerifications>true</allowMultiplePinVerifications>\n    <pinTimeToLive>10m</pinTimeToLive>\n    <verifyPinLimit>2/4s</verifyPinLimit>\n    <sendPinPerApplicationLimit>5000/12h</sendPinPerApplicationLimit>\n    <sendPinPerPhoneNumberLimit>2/1d</sendPinPerPhoneNumberLimit>\n  </configuration>\n  <enabled>true</enabled>\n</ApplicationResponse>\n"
         }
        }
       }
      }
     },
     "400":{
      "$ref":"#/components/responses/ApiException400"
     },
     "401":{
      "$ref":"#/components/responses/ApiException401"
     },
     "403":{
      "$ref":"#/components/responses/ApiException403"
     },
     "404":{
      "$ref":"#/components/responses/ApiException404"
     },
     "429":{
      "$ref":"#/components/responses/ApiException429"
     },
     "4XX":{
      "description":"Error responses",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       },
       "application/xml":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       }
      }
     },
     "500":{
      "$ref":"#/components/responses/ApiException500"
     },
     "5XX":{
      "description":"Error responses",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       },
       "application/xml":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       }
      }
     }
    },
    "security":[
     {
      "Basic":[]
     },
     {
      "APIKeyHeader":[]
     },
     {
      "IBSSOTokenHeader":[]
     },
     {
      "OAuth2":[]
     }
    ],
    "x-scopes":[
     "2fa:manage"
    ],
    "x-throttling-info":[
     {
      "type":"time",
      "numberOfRequests":40,
      "numberOfTimeUnits":10,
      "timeUnit":"m"
     }
    ]
   }
  },
  "/2fa/2/applications/{appId}/messages":{
   "get":{
    "tags":[
     "platform",
     "2fa",
     "2fa-configuration",
     "manage-message-templates"
    ],
    "summary":"Get all 2FA message templates",
    "description":"List all message templates in a 2FA application.",
    "externalDocs":{
     "description":"Learn more about the workflow and setup",
     "url":"https://www.infobip.com/docs/2fa-service/general-2fa-otp-setup"
    },
    "operationId":"get-2fa-message-templates",
    "parameters":[
     {
      "name":"appId",
      "in":"path",
      "description":"ID of application for which requested message was created.",
      "required":true,
      "style":"simple",
      "explode":false,
      "schema":{
       "type":"string"
      },
      "example":"0933F3BC087D2A617AC6DCB2EF5B8A61"
     }
    ],
    "responses":{
     "200":{
      "description":"successful response",
      "content":{
       "application/json":{
        "schema":{
         "type":"array",
         "items":{
          "$ref":"#/components/schemas/c3b21d2ffef2552e10577daa67c904ac80618665b001ef386a4faefc515e78f3.Message"
         }
        },
        "examples":{
         "Multiple message template response":{
          "summary":"Multiple message template response",
          "value":[
           {
            "messageId":"A89CE542F3F12",
            "applicationId":"32G5F37A635KJ8BHJ675435E3A6EA434",
            "messageText":"Your pin is {{pin}}",
            "pinLength":4,
            "pinType":"ALPHANUMERIC",
            "senderId":"Infobip 2FA"
           },
           {
            "messageId":"AF33289C815F8",
            "applicationId":"A635KJ8BHJ6754432G5F3735E3A6EA43",
            "messageText":"Your pin is {{pin}}",
            "pinLength":4,
            "pinType":"ALPHANUMERIC",
            "language":"en",
            "voiceName":"Joanna",
            "senderId":"Infobip 2FA",
            "repeatDTMF":"1#",
            "speechRate":1.0
           },
           {
            "messageId":"9C815F8AF3328",
            "applicationId":"HJ675435E3A6EA43432G5F37A635KJ8B",
            "pinLength":4,
            "pinType":"ALPHANUMERIC",
            "from":"company@example.com",
            "emailTemplateId":1234,
            "landingPageId":"1_23456"
           }
          ]
         }
        }
       },
       "application/xml":{
        "schema":{
         "type":"array",
         "items":{
          "$ref":"#/components/schemas/c3b21d2ffef2552e10577daa67c904ac80618665b001ef386a4faefc515e78f3.Message"
         }
        },
        "examples":{
         "Multiple message template response":{
          "summary":"Multiple message template response",
          "value":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><Messages>\n  <item>\n    <messageId>A89CE542F3F12</messageId>\n    <applicationId>32G5F37A635KJ8BHJ675435E3A6EA434</applicationId>\n    <messageText>Your pin is {{pin}}</messageText>\n    <pinLength>4</pinLength>\n    <pinType>ALPHANUMERIC</pinType>\n    <senderId>Infobip 2FA</senderId>\n  </item>\n  <item>\n    <messageId>AF33289C815F8</messageId>\n    <applicationId>A635KJ8BHJ6754432G5F3735E3A6EA43</applicationId>\n    <messageText>Your pin is {{pin}}</messageText>\n    <pinLength>4</pinLength>\n    <pinType>ALPHANUMERIC</pinType>\n    <language>en</language>\n    <voiceName>Joanna</voiceName>\n    <senderId>Infobip 2FA</senderId>\n    <repeatDTMF>1#</repeatDTMF>\n    <speechRate>1.0</speechRate>\n  </item>\n  <item>\n    <messageId>9C815F8AF3328</messageId>\n    <applicationId>HJ675435E3A6EA43432G5F37A635KJ8B</applicationId>\n    <pinLength>4</pinLength>\n    <pinType>ALPHANUMERIC</pinType>\n    <from>company@example.com</from>\n    <emailTemplateId>1234</emailTemplateId>\n    <landingPageId>1_23456</landingPageId>\n  </item>\n</Messages>\n"
         }
        }
       }
      }
     },
     "401":{
      "$ref":"#/components/responses/ApiException401"
     },
     "403":{
      "$ref":"#/components/responses/ApiException403"
     },
     "404":{
      "$ref":"#/components/responses/ApiException404"
     },
     "4XX":{
      "description":"Error responses",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       },
       "application/xml":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       }
      }
     },
     "500":{
      "$ref":"#/components/responses/ApiException500"
     },
     "5XX":{
      "description":"Error responses",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       },
       "application/xml":{
        "schema":{
         "$ref":"#/components/schemas/96ea7b6cea267e43daadde063d93b8799cdb795baa0e9344573e0f63283595e0.ApiException"
        }
       }
      }
     }
    },
    "security":[
     {
      "Basic":[]
     },
     {
      "APIKeyHeader":[]
     },
     {
      "IBSSOTokenHeader":[]
     },
     {
      "OAuth2":[]
     }
    ],
    "x-scopes":[
     "2fa:manage"
    ]
   },
   "post":{
    "tags":[
     "platform",
     "2fa",
     "2fa-configuration",
     "manage-message-templates"
    ],
    "summary":"Create 2FA SMS or Voice message template",
    "description":"Once you have your [2FA application](#channels/sms/2fa/2fa-configuration/create-2fa-application), create one or more [message templates](#channels/sms/2fa/2fa-configuration/create-2fa-message-template) where your PIN will be dynamically included when you send the PIN message over SMS or Voice.",
    "externalDocs":{
     "description":"Learn more about the workflow and setup",
     "url":"https://www.infobip.com/docs/2fa-service/general-2fa-otp-setup"
    },
    "operationId":"create-2fa-message-template",
    "parameters":[
     {
      "name":"appId",
      "in":"path",
      "description":"ID of application for which requested message was created.",
      "required":true,
      "style":"simple",
      "explode":false,
      "schema":{
       "type":"string"
      },
      "example":"0933F3BC087D2A617AC6DCB2EF5B8A61"
     }
    ],
    "requestBody":{
     "content":{
      "application/json":{
       "schema":{
        "allOf":[
         {
          "$ref":"#/components/schemas/c3b21d2ffef2552e10577daa67c904ac80618665b001ef386a4faefc515e78f3.CreateSmsOrVoiceMessageRequest"
         }
        ]
       },
       "examples":{
        "Create message template":{
         "summary":"Create message template",
         "value":{
          "pinType":"NUMERIC",
          "messageText":"Your pin is {{pin}}",
          "pinLength":4,
          "language":"en",
          "voiceName":"Joanna",
          "senderId":"Infobip 2FA",
          "repeatDTMF":"1#",
          "speechRate":1.0
         }
        },
        "Create message template with placeholders":{
         "summary":"Create message template with placeholders",
         "description":"Create a message template w

# --- truncated at 32 KB (154 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/infobip/refs/heads/main/openapi/infobip-2fa-openapi.json