- Last Updated
Request Possession Verification Code
This document explains how to use the API that sends a possession verification code to a user via SMS or Email.
Possession verification is provided through the following two APIs.
- Request Possession Verification Code (this document)
- Check Possession Verification Code
Please refer to the Identity Verification Service guide for integration methods and development flow.
Request Possession Verification Code API
Sends a verification code to the verification target (mobile phone number or email address). The number of digits in the verification code depends on the channel. (SMS 6 digits / Email 4 digits)
Precautions
- Prior consultation with the business manager is required before using this API.
- Support for channels (
sms/email) is determined per game. If requested for an unregistered channel, it will respond with70115. - The verification code is valid for 3 minutes for SMS / 10 minutes for Email from the time of the API call.
- Resend limit for the same game and same target (based on the initial request time)
- SMS : 3 times per minute + 20 times per day
- Email : 5 times per hour
- If requested multiple times for the same target, all sent verification codes remain valid until their expiration time.
- If even one verification code is successfully verified, all verification codes for that target will expire.
- This API uses a 5-second timeout value.
When receiving HTTP Status408(Request Timeout),504(Gateway Timeout) responses, please perform retry processing using an exponential backoff strategy (exponentially increasing wait time for each retry - 1, 2, 4, 8 ...).
Message Content Guide
- Please refer to the Sending Templates at the bottom of the document for the actual SMS content and Email templates delivered to the user.
- Content and templates are subject to change.
Basic Information
POST /sms-sender/v3.2/occupancy_auth/send_code
Host:
https://api.gate8.com (SANDBOX)
https://api.onstove.com (LIVE)
Content-Type: application/json
Request
Header
| Name | Type | Required | Default Value | Example | Description |
|---|---|---|---|---|---|
| Authorization | String | Y | - | Bearer | Platform API Access Token (API AccessToken)[Authentication → Server] - Game (service) identification is derived from the sid of the token.- Web usage locations such as the official website also use this token after issuance. |
| Content-Type | String | Y | - | application/json | Resource media type |
| caller-id | String | Y | - | STOVE_GAME_ID | API caller information - Game ID registered in Partners * Not for game (service) identification, but for monitoring / caller identification |
| caller-detail | String | N | - | f248a284-7e61-4dcf-a111-a394050e9555 | API caller UUID, for API call monitoring |
Body
| Name | Type | Required | Default Value | Example | Description |
|---|---|---|---|---|---|
| channel | String | Y | - | sms | Authentication channel - sms : Mobile phone (SMS) possession verification- email : Email possession verification |
| to | String | Y | - | +821012345678 | Verification target (format determined by channel)- channel=sms : Mobile phone number (E.164 format, including + and country code)- Automatic correction if '0' is incorrectly entered for a Korean mobile number (+8201012345678 → +821012345678) - channel=email : Email address (e.g., user@example.com) |
| locale | String | N | en | ko | (channel=email only) Sending language- ko : Korean / en : English- Default value if not specified en- Currently ko / en only 2 languages are supported, and other values are replaced with en (supported languages will be expanded in the future)- channel=sms automatically determines the language based on the number's country code, so locale is ignored |
Response
Body
| Name | Type | Required | Default Value | Example | Description |
|---|---|---|---|---|---|
| code | Integer | Y | - | 0 | Response code |
| message | String | Y | - | OK | Response message |
| value | Object | N | - | - | Response data |
Value
| Name | Type | Required | Default Value | Example | Description |
|---|---|---|---|---|---|
| channel | String | Y | - | Sending channel (reflects the requested channel) | |
| code_length | Integer | Y | - | 4 | Number of digits in the verification code (sms = 6, email = 4) |
| expires_in | Integer | Y | - | 600 | Verification code validity time in seconds (sms = 180, email = 600) |
Sample
Request
// Request possession verification code
curl -L -X POST 'https://api.gate8.com/sms-sender/v3.2/occupancy_auth/send_code' \
-H 'Content-Type: application/json' \
-H "Caller-Id: {{caller-id}}" \
-H 'Caller-Detail: f248a284-7e61-4dcf-a111-a394050e9555' \
-H 'Authorization: Bearer {{API accessToken}}' \
-d '{
"channel":"email",
"to":"user@example.com",
"locale":"ko"
}'
Response
// Success - sms
{
"code": 0,
"message": "OK",
"value": {
"channel": "sms",
"code_length": 6,
"expires_in": 180
}
}
// Success - email
{
"code": 0,
"message": "OK",
"value": {
"channel": "email",
"code_length": 4,
"expires_in": 600
}
}
// Failure - parameter error
{
"code": 70100,
"message": "invalid parameter"
}
Return Code
Please check and handle API errors on the server side
- The front-end should only expose success or verification failure
| HTTP Status code | Code | Message | Description | Responsible Party |
|---|---|---|---|---|
| 200 | 0 | OK | Success (sending request received) | API Caller (Server) |
| 200 | 70100 | invalid parameter | Input parameter error - Check and correct input parameters | API Caller (Server) |
| 200 | 70101 | too many requests | Resend limit exceeded - channel=sms : More than 3 times within 1 minute of the initial request - channel=email : More than 5 times within 1 hour of the initial request - Advise the user to retry after some time | end user |
| 200 | 70105 | too many requests | Daily request limit exceeded, channel=sms only - Returned when called more than 20 times within 24 hours of the initial request - Advise the user to retry after 24 hours | end user |
| 200 | 70107 | unsupported country | Unsupported country (channel=sms) - See Supported Countries for Possession Verification | end user |
| 200 | 70108 | service not registered | Unregistered / Unsupported service (Game not registered) | Platform Manager |
| 200 | 70109 | policy not registered | Unregistered policy | Platform Manager |
| 200 | 70110 | invalid phone number format | Phone number format error (channel=sms) | API Caller (Server) |
| 200 | 70115 | unsupported channel | Unsupported / Non-operating channel - Includes channels not supported by the game | API Caller (Server) |
| 200 | 70116 | invalid email format | Email format error (channel=email) | API Caller (Server) |
| 200 | 70199 | internal server error | Internal server error - Contact the platform manager | Platform Manager |
| 401 | 40100 40101 40102 40103 40104 40106 40302 50000 | - | Common token error - Check and correct the platform authentication token (API AccessToken) | API Caller (Server) |
| 408 | 40800 | - | Request Timeout - Retry API call | API Caller (Server) |
| 429 | 42900 | - | Too Many Requests - Retry API call | API Caller (Server) |
| 504 | 50400 | - | Gateway Timeout - Retry API call | API Caller (Server) |
Supported Countries for Possession Verification
When requesting with channel=sms, messages can only be sent to the countries below.
| No | Country Name | Country Code (ITU) | Country Code (ISO 3166-1 Alpha-2) | Remarks |
|---|---|---|---|---|
| 1 | South Korea | +82 | KR | |
| 2 | Taiwan | +886 | TW | |
| 3 | Hong Kong | +852 | HK | |
| 4 | Macau | +853 | MO | |
| 5 | Japan | +81 | JP | |
| 6 | Thailand | +66 | TH | |
| 7 | Philippines | +63 | PH | |
| 8 | Singapore | +65 | SG | |
| 9 | Indonesia | +62 | ID | |
| 10 | Malaysia | +60 | MY | "RM0" added to the text (Malaysia carrier policy) |
| 11 | Australia | +61 | AU | |
| 12 | Spain | +34 | ES | |
| 13 | Cambodia | +855 | KH | |
| 14 | El Salvador | +503 | SV | |
| 15 | Nigeria | +234 | NG | |
| 16 | South Africa | +27 | ZA | |
| 17 | Myanmar | +95 | MM | |
| 18 | Laos | +856 | LA |
Notice
- The table above is the full list of countries supported by the platform.
- Since the actual countries available for sending are registered differently for each game, please consult with the business manager regarding the countries to be used.
- If you request to an unregistered country, it will respond with
70107.
Sending Templates
These are the phrases and email formats actually delivered to users. Phrases and templates are subject to change.
SMS Phrase
Valid for 3 minutes, and the sending language is automatically determined based on the country code of the number. (Korea = Korean / Others = English)
| Language | Phrase |
|---|---|
| Korean | (게임명) 인증번호 XXXXXX 를 입력해주세요. 유효시간은 3분입니다. |
| English | (GAME) Enter verification code XXXXXX. This code expires in 3 minutes. |
Email Template
Valid for 10 minutes, and the sending language is determined by the locale value (ko / en).
| Item | Content |
|---|---|
| Sender | STOVE <noreply@smilegate.com> |
| Subject | Korean : 스토브 인증 메일 안내 English : STOVE Verification Email Guide |
| Header | STOVE (Link : https://www.onstove.com) |
| Body | 4-digit verification code notice - Korean : 아래 인증 번호를 입력하면 인증이 완료됩니다. (유효시간 : 10 분) / 인증번호 : XXXX - English : Enter the verification code below to complete verification. (valid: 10 minutes) / Verification number: XXXX |
| Footer | Smilegate (Link : https://www.onstove.com) Customer Center (Link : https://cs.onstove.com) |

If a user inquires that they have not received the email, please advise them to check their spam folder first.