← All skills
Tencent SkillHub · Developer Tools

Didit Phone Verification

Verify phone numbers via OTP with Didit using SMS, WhatsApp, Telegram, or voice; supports fraud detection, disposable/VoIP checks, and auto-decline policies.

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Verify phone numbers via OTP with Didit using SMS, WhatsApp, Telegram, or voice; supports fraud detection, disposable/VoIP checks, and auto-decline policies.

⬇ 0 downloads ★ 0 stars Unverified but indexed

Install for OpenClaw

Quick setup
  1. Download the package from Yavira.
  2. Extract the archive and review SKILL.md first.
  3. Import or place the package into your OpenClaw setup.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Yavira redirect
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
SKILL.md, scripts/verify_phone.py

Validation

  • Use the Yavira download entry.
  • Review SKILL.md after the package is downloaded.
  • Confirm the extracted package contains the expected setup assets.

Install with your agent

Agent handoff

Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.

  1. Download the package from Yavira.
  2. Extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the extracted folder.
New install

I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.

Upgrade existing

I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
1.3.0

Documentation

ClawHub primary doc Primary doc: SKILL.md 20 sections Open source page

Overview

Two-step phone verification via one-time code: Send a verification code to a phone number Check the code the user provides Key constraints: Code expires after 5 minutes Maximum 3 verification attempts per code (then must resend) Maximum 2 resend requests within 24 hours Rate limit: 4 sends per hour per phone number Phone must be in E.164 format (e.g. +14155552671) You must call Send before Check Delivery channels: SMS (default fallback), WhatsApp, Telegram, voice call. Falls back to SMS if preferred channel unavailable. Capabilities: Detects disposable/temporary numbers, VoIP numbers, carrier info, and duplicate numbers. Supports fraud signals for risk scoring. API Reference: Send Code | Check Code Feature Guide: https://docs.didit.me/core-technology/phone-verification/overview

Authentication

All requests require an API key via the x-api-key header. How to obtain: Didit Business Console → API & Webhooks → Copy API key, or via programmatic registration (see below). x-api-key: your_api_key_here

Getting Started (No Account Yet?)

If you don't have a Didit API key, create one in 2 API calls: Register: POST https://apx.didit.me/auth/v2/programmatic/register/ with {"email": "you@gmail.com", "password": "MyStr0ng!Pass"} Check email for a 6-character OTP code Verify: POST https://apx.didit.me/auth/v2/programmatic/verify-email/ with {"email": "you@gmail.com", "code": "A3K9F2"} → response includes api_key To add credits: GET /v3/billing/balance/ to check, POST /v3/billing/top-up/ with {"amount_in_dollars": 50} for a Stripe checkout link. See the didit-verification-management skill for full platform management (workflows, sessions, users, billing).

Request

POST https://verification.didit.me/v3/phone/send/

Headers

HeaderValueRequiredx-api-keyYour API keyYesContent-Typeapplication/jsonYes

Body (JSON)

ParameterTypeRequiredDefaultConstraintsDescriptionphone_numberstringYes—E.164 formatPhone number (e.g. +14155552671)options.code_sizeintegerNo6Min: 4, Max: 8Code lengthoptions.localestringNo—Max 5 charsLocale for message. e.g. en-USoptions.preferred_channelstringNo"whatsapp"See channels"sms", "whatsapp", "telegram", "voice"signals.ipstringNo—IPv4/IPv6User's IP for fraud detectionsignals.device_idstringNo—Max 255 charsUnique device identifiersignals.device_platformstringNo—Enum"android", "ios", "ipados", "tvos", "web"signals.device_modelstringNo—Max 255 charse.g. iPhone17,2signals.os_versionstringNo—Max 64 charse.g. 18.0.1signals.app_versionstringNo—Max 64 charse.g. 1.2.34signals.user_agentstringNo—Max 512 charsBrowser user agentvendor_datastringNo——Your identifier for session tracking

Example

import requests response = requests.post( "https://verification.didit.me/v3/phone/send/", headers={"x-api-key": "YOUR_API_KEY", "Content-Type": "application/json"}, json={ "phone_number": "+14155552671", "options": {"preferred_channel": "sms", "code_size": 6}, "vendor_data": "session-abc-123", }, ) const response = await fetch("https://verification.didit.me/v3/phone/send/", { method: "POST", headers: { "x-api-key": "YOUR_API_KEY", "Content-Type": "application/json" }, body: JSON.stringify({ phone_number: "+14155552671", options: { preferred_channel: "sms", code_size: 6 }, }), });

Status Values & Handling

StatusMeaningAction"Success"Code sentWait for user to provide code, then call Check"Retry"Temporary issueWait a few seconds and retry (max 2 retries)"Undeliverable"Number cannot receive messagesInform user. Try a different number"Blocked"Number blocked (spam)Use a different number

Error Responses

CodeMeaningAction400Invalid request bodyCheck phone format (E.164) and parameters401Invalid or missing API keyVerify x-api-key header403Insufficient credits/permissionsCheck credits in Business Console429Rate limited (4/hour/number)Wait for cooldown period

Step 2: Check Phone Code

Must be called after a successful Send. Optionally auto-declines risky numbers.

Request

POST https://verification.didit.me/v3/phone/check/

Body (JSON)

ParameterTypeRequiredDefaultValuesDescriptionphone_numberstringYes—E.164Same phone used in Step 1codestringYes—4-8 charsThe code the user receivedduplicated_phone_number_actionstringNo"NO_ACTION""NO_ACTION" / "DECLINE"Decline if already verified by another userdisposable_number_actionstringNo"NO_ACTION""NO_ACTION" / "DECLINE"Decline disposable/temporary numbersvoip_number_actionstringNo"NO_ACTION""NO_ACTION" / "DECLINE"Decline VoIP numbers

Example

response = requests.post( "https://verification.didit.me/v3/phone/check/", headers={"x-api-key": "YOUR_API_KEY", "Content-Type": "application/json"}, json={ "phone_number": "+14155552671", "code": "123456", "disposable_number_action": "DECLINE", "voip_number_action": "DECLINE", }, )

Response (200 OK)

{ "request_id": "e39cb057-...", "status": "Approved", "message": "The verification code is correct.", "phone": { "status": "Approved", "phone_number_prefix": "+1", "phone_number": "4155552671", "full_number": "+14155552671", "country_code": "US", "country_name": "United States", "carrier": {"name": "ATT", "type": "mobile"}, "is_disposable": false, "is_virtual": false, "verification_method": "sms", "verification_attempts": 1, "verified_at": "2025-08-24T09:12:39.662232Z", "warnings": [], "lifecycle": [...] } }

Status Values & Handling

StatusMeaningAction"Approved"Code correct, no policy violationsPhone verified — proceed"Failed"Code incorrectAsk user to retry (up to 3 attempts)"Declined"Code correct but policy violationCheck phone.warnings for reason"Expired or Not Found"No pending codeResend via Step 1

phone Object

FieldTypeDescriptionstatusstring"Approved", "Failed", "Declined"phone_number_prefixstringCountry prefix (e.g. +1)full_numberstringFull E.164 numbercountry_codestringISO 3166-1 alpha-2carrier.namestringCarrier namecarrier.typestring"mobile", "landline", "voip", "unknown"is_disposablebooleanDisposable/temporary numberis_virtualbooleanVoIP numberverification_methodstring"sms", "whatsapp", "telegram", "voice"verification_attemptsintegerCheck attempts made (max 3)warningsarray{risk, log_type, short_description, long_description}

Warning Tags

TagDescriptionAuto-DeclineVERIFICATION_CODE_ATTEMPTS_EXCEEDEDMax code attempts exceededYesPHONE_NUMBER_IN_BLOCKLISTPhone is in blocklistYesHIGH_RISK_PHONE_NUMBERIdentified as high riskYesDISPOSABLE_NUMBER_DETECTEDTemporary/disposable numberConfigurableVOIP_NUMBER_DETECTEDVoIP number detectedConfigurableDUPLICATED_PHONE_NUMBERAlready verified by another userConfigurable

Basic Phone Verification

1. POST /v3/phone/send/ → {"phone_number": "+14155552671"} 2. Wait for user to provide the code 3. POST /v3/phone/check/ → {"phone_number": "+14155552671", "code": "123456"} 4. If "Approved" → phone is verified If "Failed" → retry (up to 3 attempts) If "Expired or Not Found"→ resend (step 1)

Strict Security Verification

1. POST /v3/phone/send/ → include signals.ip, signals.device_platform, channel: "sms" 2. POST /v3/phone/check/ → set disposable_number_action + voip_number_action to "DECLINE" 3. If "Declined" → check phone.warnings, block or warn user

Utility Scripts

export DIDIT_API_KEY="your_api_key" python scripts/verify_phone.py send +14155552671 --channel sms python scripts/verify_phone.py check +14155552671 123456 --decline-voip

Category context

Code helpers, APIs, CLIs, browser automation, testing, and developer operations.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
1 Docs1 Scripts
  • SKILL.md Primary doc
  • scripts/verify_phone.py Scripts