Login with phone
curl --request POST \
--url https://staging.api.commercengine.io/api/v1/{store_id}/storefront/auth/login/phone \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "<string>",
"country_code": "+91",
"register_if_not_exists": true
}
'import requests
url = "https://staging.api.commercengine.io/api/v1/{store_id}/storefront/auth/login/phone"
payload = {
"phone": "<string>",
"country_code": "+91",
"register_if_not_exists": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({phone: '<string>', country_code: '+91', register_if_not_exists: true})
};
fetch('https://staging.api.commercengine.io/api/v1/{store_id}/storefront/auth/login/phone', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.api.commercengine.io/api/v1/{store_id}/storefront/auth/login/phone",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'phone' => '<string>',
'country_code' => '+91',
'register_if_not_exists' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://staging.api.commercengine.io/api/v1/{store_id}/storefront/auth/login/phone"
payload := strings.NewReader("{\n \"phone\": \"<string>\",\n \"country_code\": \"+91\",\n \"register_if_not_exists\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://staging.api.commercengine.io/api/v1/{store_id}/storefront/auth/login/phone")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"<string>\",\n \"country_code\": \"+91\",\n \"register_if_not_exists\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.api.commercengine.io/api/v1/{store_id}/storefront/auth/login/phone")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone\": \"<string>\",\n \"country_code\": \"+91\",\n \"register_if_not_exists\": true\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"success": true,
"content": {
"otp_token": "<string>",
"otp_action": "<string>"
}
}{
"message": "<string>",
"success": true,
"code": "<string>",
"error": {}
}{
"message": "<string>",
"success": false,
"code": "<string>"
}{
"message": "<string>",
"success": true,
"code": "<string>"
}Auth
Login with phone
Sends an OTP to the userβs phone number. Returns an otp_token to pass to the verify-otp endpoint. Set register_if_not_exists to true to auto-register new users on OTP verification.
POST
/
auth
/
login
/
phone
Login with phone
curl --request POST \
--url https://staging.api.commercengine.io/api/v1/{store_id}/storefront/auth/login/phone \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "<string>",
"country_code": "+91",
"register_if_not_exists": true
}
'import requests
url = "https://staging.api.commercengine.io/api/v1/{store_id}/storefront/auth/login/phone"
payload = {
"phone": "<string>",
"country_code": "+91",
"register_if_not_exists": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({phone: '<string>', country_code: '+91', register_if_not_exists: true})
};
fetch('https://staging.api.commercengine.io/api/v1/{store_id}/storefront/auth/login/phone', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.api.commercengine.io/api/v1/{store_id}/storefront/auth/login/phone",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'phone' => '<string>',
'country_code' => '+91',
'register_if_not_exists' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://staging.api.commercengine.io/api/v1/{store_id}/storefront/auth/login/phone"
payload := strings.NewReader("{\n \"phone\": \"<string>\",\n \"country_code\": \"+91\",\n \"register_if_not_exists\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://staging.api.commercengine.io/api/v1/{store_id}/storefront/auth/login/phone")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"<string>\",\n \"country_code\": \"+91\",\n \"register_if_not_exists\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.api.commercengine.io/api/v1/{store_id}/storefront/auth/login/phone")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone\": \"<string>\",\n \"country_code\": \"+91\",\n \"register_if_not_exists\": true\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"success": true,
"content": {
"otp_token": "<string>",
"otp_action": "<string>"
}
}{
"message": "<string>",
"success": true,
"code": "<string>",
"error": {}
}{
"message": "<string>",
"success": false,
"code": "<string>"
}{
"message": "<string>",
"success": true,
"code": "<string>"
}Authorizations
Access token
Headers
This param is used to enable debug mode. If debug mode is enabled, the API will return OTP as well. This is only for development and testing purposes.
Body
application/json
10 digit phone number without country code.
Required string length:
10Pattern:
^[0-9]{10}$Two-letter code begin with a plus sign prefix that identifies different countries. By default it will be +91 if not provided.
Allowed value:
"+91"When true, auto-registers the user if the phone number is not found. Defaults to false (OTP sent only to registered users).
Was this page helpful?
βI