curl -X POST https://verification.didit.me/v3/phone/send/ \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"phone_number": "+14155552671",
"options": {
"code_size": 6,
"preferred_channel": "whatsapp",
"locale": "en-US"
},
"vendor_data": "user-1234"
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.phone.send_code(
phone_number="+14155552671",
options={
"locale": "en-US",
"preferred_channel": "whatsapp",
},
vendor_data="user-1234",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.phone.sendCode({
phone_number: "+14155552671",
options: {
locale: "en-US",
preferred_channel: "whatsapp",
},
vendor_data: "user-1234",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Phone.SendCode(ctx, didit.PhoneSendCodeParams{
PhoneNumber: "+14155552671",
Options: didit.Some(didit.PhoneSendCodeParamsOptions{
Locale: didit.String("en-US"),
PreferredChannel: didit.Some(didit.PhoneSendCodeParamsOptionsPreferredChannel("whatsapp")),
}),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.PhoneSendCodeParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.phone().sendCode(PhoneSendCodeParams.builder()
.phoneNumber("+14155552671")
.options(PhoneSendCodeParams.Options.builder()
.locale("en-US")
.preferredChannel(PhoneSendCodeParams.Options.PreferredChannel.of("whatsapp"))
.build())
.vendorData("user-1234")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->phone->sendCode([
'phone_number' => '+14155552671',
'options' => [
'locale' => 'en-US',
'preferred_channel' => 'whatsapp',
],
'vendor_data' => 'user-1234',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.phone.send_code(
phone_number: "+14155552671",
options: {
locale: "en-US",
preferred_channel: "whatsapp",
},
vendor_data: "user-1234"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Phone.SendCodeAsync(new PhoneSendCodeParams
{
PhoneNumber = "+14155552671",
Options = new PhoneSendCodeParamsOptions
{
Locale = "en-US",
PreferredChannel = new PhoneSendCodeParamsOptionsPreferredChannel("whatsapp"),
},
VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"request_id": "e39cb057-92fc-4b59-b84e-02fec29a0f24",
"status": "Success",
"reason": null,
"vendor_data": "user-1234",
"metadata": null
}SMS認証コード送信API:電話番号OTPを送信
DiditのPOST /v3/phone/send/でSMSのワンタイムコードを送信できます。ブロックされた番号は自動で再試行され、有効期間は5分です。従量課金制で月額の最低料金はありません。
curl -X POST https://verification.didit.me/v3/phone/send/ \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"phone_number": "+14155552671",
"options": {
"code_size": 6,
"preferred_channel": "whatsapp",
"locale": "en-US"
},
"vendor_data": "user-1234"
}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.phone.send_code(
phone_number="+14155552671",
options={
"locale": "en-US",
"preferred_channel": "whatsapp",
},
vendor_data="user-1234",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.phone.sendCode({
phone_number: "+14155552671",
options: {
locale: "en-US",
preferred_channel: "whatsapp",
},
vendor_data: "user-1234",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Phone.SendCode(ctx, didit.PhoneSendCodeParams{
PhoneNumber: "+14155552671",
Options: didit.Some(didit.PhoneSendCodeParamsOptions{
Locale: didit.String("en-US"),
PreferredChannel: didit.Some(didit.PhoneSendCodeParamsOptionsPreferredChannel("whatsapp")),
}),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.PhoneSendCodeParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.phone().sendCode(PhoneSendCodeParams.builder()
.phoneNumber("+14155552671")
.options(PhoneSendCodeParams.Options.builder()
.locale("en-US")
.preferredChannel(PhoneSendCodeParams.Options.PreferredChannel.of("whatsapp"))
.build())
.vendorData("user-1234")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->phone->sendCode([
'phone_number' => '+14155552671',
'options' => [
'locale' => 'en-US',
'preferred_channel' => 'whatsapp',
],
'vendor_data' => 'user-1234',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.phone.send_code(
phone_number: "+14155552671",
options: {
locale: "en-US",
preferred_channel: "whatsapp",
},
vendor_data: "user-1234"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Phone.SendCodeAsync(new PhoneSendCodeParams
{
PhoneNumber = "+14155552671",
Options = new PhoneSendCodeParamsOptions
{
Locale = "en-US",
PreferredChannel = new PhoneSendCodeParamsOptionsPreferredChannel("whatsapp"),
},
VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"request_id": "e39cb057-92fc-4b59-b84e-02fec29a0f24",
"status": "Success",
"reason": null,
"vendor_data": "user-1234",
"metadata": null
}SMSにブランド名を表示する
SMSのコードには、Business Consoleで設定したアプリケーションのSMS送信者名が追加料金なしで表示されます。Acme Bankの認証コードは123456です特定のコードだけを別の名前で送信するには、
options.sms_sender_nameを指定します(1〜30文字。使用できるのは英字、数字、スペース、’ & - !のみで、数字だけの名前は使用できません)。
{
"phone_number": "+14155552671",
"options": {
"preferred_channel": "sms",
"sms_sender_name": "Acme Bank"
}
}
400が返され、コードは送信されません。
WhatsAppのコードは固定のメッセージを使用するため、ブランド名は表示されません。自社の名前で送信するには、Business Consoleで自社のWhatsApp Business番号を接続してください。詳しくは自社の番号からWhatsAppコードを送信するを参照してください。
コードにどの名前が表示されるか、および新しい名前の1日あたりの上限については、ブランド名入りの認証メッセージを参照してください。
プロバイダー障害への対応
電話サービスプロバイダーが一時的に利用できない場合、このエンドポイントは502と、固定の機械可読コードを返します。
{
"detail": "The phone verification provider is temporarily unavailable.",
"code": "phone_provider_unavailable"
}
承認
お客様のアプリケーションのAPIキーです。Business ConsoleのDevelopers -> API keysで取得できます。プライマリキーはフルアクセス権を持ちます。名前付きキーにはスコープを設定できます。リソースごとのアクセス権(なし、読み取り、書き込み)、一部のワークフローまたは承認済みセッションへの限定、IPアドレスのリストへの限定、有効期限の設定です。401は、キーが誤っている、失効している、または期限切れであることを意味します。403は、キーが送信されていない、キーにこのリソースやアクションへのアクセス権がない、またはIPリスト外のアドレスからリクエストが送信されたことを意味します。セッションのルートでの404は、セッションがキーのワークフローまたはステータスの対象外であることを意味します。メディアへのアクセス権がないキーでは、画像、動画、PDFのURLがnullで返されます。セッションの書き込み権限がないキーでは、セッションのリンクとトークンがnullで返されます。詳細は次を参照してください: https://docs.didit.me/console/api-keys
ボディ
受信者の電話番号。E.164形式で、先頭の+と国番号を含めます(例: +14155552671)。番号は検証されたうえでE.164に正規化されます。解析できない番号や無効な番号の場合は、phone_numberフィールドのエラーとともに400が返されます。
20"+14155552671"
OTP配信のオプション。すべてのフィールドは任意です。
Show child attributes
Show child attributes
エンドユーザーに関するデバイスおよびネットワークの任意のシグナルで、不正利用や自動化されたトラフィックの検出精度を高めるために不正対策レイヤーへ転送されます。すべてのフィールドは任意です。
Show child attributes
Show child attributes
呼び出し側が管理する任意の識別子(社内のユーザーid、メールアドレス、UUIDなど)です。セッションに保存され、送信レスポンス、対応するチェックレスポンス、Webhook、Business Consoleでそのまま返されます。Diditのrequest_idを自社のユーザーレコードと関連付けるために使用してください。
セッションに保存される任意の自由形式のJSONオブジェクトです。送信レスポンス、対応するチェックのレスポンス、Webhook、Business Consoleでそのまま返されます。
レスポンス
送信を受け付けました。statusを確認してください。SuccessとRetryはコードが送信中であることを示し、Blockedは不正防止レイヤーが拒否し、認証がすでにDeclinedとして確定済みであることを示します。request_idは永続化されたセッションIDです(Retryの場合も同じIDです)。
認証のセッションID。Retryによる送信では、元の送信と同じrequest_idが返されます。このIDはBusiness Consoleに表示され、確定済みのPOST /v3/phone/check/でも再度返され、GET /v3/session/{sessionId}/decision/に渡すことができます。
Success:新しい認証にOTPを送信しました。Retry:以前の送信で作成された保留中の認証に対して、OTPを再送信しました。Blocked:不正防止レイヤーが送信を拒否しました。認証は直ちにDeclinedとして確定し、課金は発生しません。
Success, Retry, Blocked 送信がBlockedとなった理由です(例:repeated_attempts、suspicious、spam)。SuccessおよびRetryの場合はnullです。
セッションに保存されているvendor_data(最初の送信時のもの)のエコー。
セッションに保存されているmetadata(最初の送信時のもの)のエコー。