Phone Number Verifier
Phone verification

Verify phone numbers using SMS one-time codes via the Didit API. Use when you need to confirm a user owns a phone number, implement SMS-based 2FA, or validate phone during signup/onboarding flows.
---
name: phone-verification
description: Verify phone numbers using SMS one-time codes via the Didit API. Use when you need to confirm a user owns a phone number, implement SMS-based 2FA, or validate phone during signup/onboarding flows.
source: orthogonal
---
# Phone Verification
## Setup
Read your credentials from ~/.gooseworks/credentials.json:
```bash
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
```
If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`Overview
If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login
Manual install (npx, ZIP)
npx skills add gooseworks-ai/goose-skills --skill phone-verification -g -a claude-codemkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \
| tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/research-tools/capabilities/phone-verificationNew-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/cf75f9d335de5b6d340f/phone-verification.zip" -OutFile "$env:TEMP\phone-verification.zip"; Expand-Archive "$env:TEMP\phone-verification.zip" -DestinationPath "$HOME\.claude\skills" -ForceConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md3.3 KBskill.meta.json291 B
Read the files here
gooseworks-ai/
Show the full text129 lines
Phone Verification
Setup
Read your credentials from ~/.gooseworks/credentials.json:
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login
All endpoints use Bearer auth: -H "Authorization: Bearer $GOOSEWORKS_API_KEY"
Verify phone numbers by sending SMS one-time verification codes via Didit.
Quick Start
# Send verification code via SMS
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"didit","path":"/v3/phone/send","body":{"phone_number":"+14155551234"}}'
# Verify the code user provides
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"didit","path":"/v3/phone/check","body":{"phone_number":"+14155551234","code":"123456"}}'
Workflow
1. Send Verification Code
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"didit","path":"/v3/phone/send"}'
-d '{"phone_number": "+14155551234"}'
Request format:
- Phone must be in E.164 format (e.g.,
+14155551234) - Include country code with
+prefix
Response:
{
"success": true,
"message": "Verification code sent"
}
2. Verify Code
When the user provides the code they received:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"didit","path":"/v3/phone/check"}'
-d '{"phone_number": "+14155551234", "code": "123456"}'
Response (success):
{
"success": true,
"verified": true
}
Phone Number Format
Always use E.164 format:
- US:
+14155551234 - UK:
+447911123456 - Germany:
+4915123456789
Use Cases
- User signup: Verify phone before creating account
- SMS 2FA: Add phone-based second factor authentication
- Account recovery: Verify ownership via SMS
- Delivery confirmation: Confirm contact number for orders
Integration Example (TypeScript)
import Orthogonal from "@orth/sdk";
const orthogonal = new Orthogonal({
});
// Send verification code via SMS
const sendResult = await orthogonal.run({
api: "didit",
path: "/v3/phone/send",
body: { phone_number: "+14155551234" }
});
// Verify the code
const verifyResult = await orthogonal.run({
api: "didit",
path: "/v3/phone/check",
body: {
phone_number: "+14155551234",
code: "123456"
}
});
if (verifyResult.data.verified) {
console.log("Phone verified!");
}
| 1 | |
| 2 | name phone-verification |
| 3 | description Verify phone numbers using SMS one-time codes via the Didit API. Use when you need to confirm a user owns a phone number, implement SMS-based 2FA, or validate phone during signup/onboarding flows. |
| 4 | source orthogonal |
| 5 | |
| 6 | |
| 7 | |
| 8 | # Phone Verification |
| 9 | |
| 10 | ## Setup |
| 11 | |
| 12 | Read your credentials from ~/.gooseworks/credentials.json: |
| 13 | |
| 14 | export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])") |
| 15 | export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))") |
| 16 | |
| 17 | |
| 18 | If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login` |
| 19 | |
| 20 | All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"` |
| 21 | |
| 22 | |
| 23 | Verify phone numbers by sending SMS one-time verification codes via Didit. |
| 24 | |
| 25 | ## Quick Start |
| 26 | |
| 27 | |
| 28 | # Send verification code via SMS |
| 29 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 30 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 31 | -H "Content-Type: application/json" \ |
| 32 | -d '{"api":"didit","path":"/v3/phone/send","body":{"phone_number":"+14155551234"}}' |
| 33 | |
| 34 | # Verify the code user provides |
| 35 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 36 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 37 | -H "Content-Type: application/json" \ |
| 38 | -d '{"api":"didit","path":"/v3/phone/check","body":{"phone_number":"+14155551234","code":"123456"}}' |
| 39 | |
| 40 | |
| 41 | ## Workflow |
| 42 | |
| 43 | ### 1. Send Verification Code |
| 44 | |
| 45 | |
| 46 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 47 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 48 | -H "Content-Type: application/json" \ |
| 49 | -d '{"api":"didit","path":"/v3/phone/send"}' |
| 50 | -d '{"phone_number": "+14155551234"}' |
| 51 | |
| 52 | |
| 53 | **Request format:** |
| 54 | Phone must be in E.164 format (e.g., `+14155551234`) |
| 55 | Include country code with `+` prefix |
| 56 | |
| 57 | **Response:** |
| 58 | |
| 59 | { |
| 60 | "success": true, |
| 61 | "message": "Verification code sent" |
| 62 | } |
| 63 | |
| 64 | |
| 65 | ### 2. Verify Code |
| 66 | |
| 67 | When the user provides the code they received: |
| 68 | |
| 69 | |
| 70 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 71 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 72 | -H "Content-Type: application/json" \ |
| 73 | -d '{"api":"didit","path":"/v3/phone/check"}' |
| 74 | -d '{"phone_number": "+14155551234", "code": "123456"}' |
| 75 | |
| 76 | |
| 77 | **Response (success):** |
| 78 | |
| 79 | { |
| 80 | "success": true, |
| 81 | "verified": true |
| 82 | } |
| 83 | |
| 84 | |
| 85 | ## Phone Number Format |
| 86 | |
| 87 | Always use E.164 format: |
| 88 | US: `+14155551234` |
| 89 | UK: `+447911123456` |
| 90 | Germany: `+4915123456789` |
| 91 | |
| 92 | ## Use Cases |
| 93 | |
| 94 | **User signup:** Verify phone before creating account |
| 95 | **SMS 2FA:** Add phone-based second factor authentication |
| 96 | **Account recovery:** Verify ownership via SMS |
| 97 | **Delivery confirmation:** Confirm contact number for orders |
| 98 | |
| 99 | ## Integration Example (TypeScript) |
| 100 | |
| 101 | |
| 102 | import Orthogonal from "@orth/sdk"; |
| 103 | |
| 104 | const orthogonal = new Orthogonal({ |
| 105 | |
| 106 | }); |
| 107 | |
| 108 | // Send verification code via SMS |
| 109 | const sendResult = await orthogonal.run({ |
| 110 | api: "didit", |
| 111 | path: "/v3/phone/send", |
| 112 | body: { phone_number: "+14155551234" } |
| 113 | }); |
| 114 | |
| 115 | // Verify the code |
| 116 | const verifyResult = await orthogonal.run({ |
| 117 | api: "didit", |
| 118 | path: "/v3/phone/check", |
| 119 | body: { |
| 120 | phone_number: "+14155551234", |
| 121 | code: "123456" |
| 122 | } |
| 123 | }); |
| 124 | |
| 125 | if (verifyResult.data.verified) { |
| 126 | console.log("Phone verified!"); |
| 127 | } |
| 128 | |
| 129 |
Details
- Updated
- Sep 21, 2026
- License
- MIT
- Stars on the repo
- ★ 1,220
- Checked
- Source
- gooseworks-ai/goose-skills ↗
- Creator
- gooseworks-ai · 205 listings
Similar skills
See all →
SkillAPI Interface Design
AgentVersion-Specific Docs Lookup
SkillAdaptyv Bio Foundry API
Skill.NET Backend Developer
SkillGemini Agent API Guide
SkillGemini Notebook AutomationMore from gooseworks-ai
SkillAd Angle Miner
SkillAd Campaign Analyzer
SkillLead Quality Analyzer
SkillMessage Match Auditor
SkillAI Search Visibility
SkillAmazon Product Search