API و همکاری در فروش VPack
API عمده برای توسعهدهندگان و فروشندگان؛ با قیمت قراردادی، Quote امن، Idempotency و قرارداد OpenAPI کامل.
پنل همکاری شما
شروع در کمتر از یک دقیقه
کلید را فقط در سرور نگه دارید. قیمت را بخوانید، Quote بسازید و همان Quote را با Idempotency-Key خرید کنید.
curl -s "https://v-pack.ir/api/v1/virtual-numbers/prices?service=telegram&country=US" \
-H "Authorization: Bearer $VPACK_API_KEY"
curl -s -X POST "https://v-pack.ir/api/v1/virtual-numbers/quotes" \
-H "Authorization: Bearer $VPACK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"service":"telegram","country":"US","maxPriceUsd":0.50}'شروع سریع و قرارداد پاسخ
همه پاسخهای موفق در data قرار میگیرند و requestId برای ردیابی درخواست برگردانده میشود.
{
"ok": true,
"requestId": "6ff2d1d8-...",
"data": { ... }
}Authentication، Scope و نگهداری کلید
روش پیشنهادی Bearer است. X-API-Key نیز پشتیبانی میشود. کلید را هرگز داخل JavaScript مرورگر، اپ موبایل قابل استخراج، Git یا لاگها قرار ندهید.
Authorization: Bearer vpk_live_xxx # Alternative X-API-Key: vpk_live_xxx
services / countries / prices / activation status
create quote / purchase activation
فرآیند صحیح خرید شماره مجازی
Price فقط قیمت جاری را نشان میدهد و خرید را رزرو نمیکند. برای خرید باید Quote بگیرید. Quote حدود ۶۰ ثانیه معتبر است و خرید سرور دوباره قیمت/پروایدر را کنترل میکند.
برای POST /activations الزامی، بین ۱۲ تا ۱۲۰ کاراکتر و برای هر خرید منطقی یکتا باشد. اگر همان خرید را Retry میکنید همان کلید را دوباره استفاده کنید؛ برای Quote دیگر کلید جدید بسازید.
Endpointها با Request و Response واقعی
/virtual-numbers/servicesScope: virtual_numbers:read
{
"ok": true,
"requestId": "...",
"data": {
"services": [
{"key":"telegram","slug":"telegram","name":{"fa":"تلگرام","en":"Telegram"},"popular":true}
]
}
}/virtual-numbers/countries?service=telegramScope: virtual_numbers:read
{
"ok": true,
"requestId": "...",
"data": {
"service":"telegram",
"countries":[{"iso2":"US","key":"US","name":{"fa":"آمریکا","en":"United States"},"offers":12}]
}
}/virtual-numbers/prices?service=telegram&country=USScope: virtual_numbers:read
{
"ok": true,
"requestId": "...",
"data": {
"service":"telegram",
"country":"US",
"currency":"USD",
"price":0.42,
"available":18,
"quoteRequired":true
}
}/virtual-numbers/quotesScope: virtual_numbers:buy · HTTP 201
POST https://v-pack.ir/api/v1/virtual-numbers/quotes
Authorization: Bearer $VPACK_API_KEY
Content-Type: application/json
{"service":"telegram","country":"US","maxPriceUsd":0.50}
# 201
{
"ok":true,
"requestId":"...",
"data":{
"quoteId":"cm...",
"service":"telegram",
"country":"US",
"price":0.42,
"currency":"USD",
"available":18,
"expiresAt":"2026-09-03T08:20:00.000Z"
}
}/activationsScope: virtual_numbers:buy · Idempotency-Key required · HTTP 201
POST https://v-pack.ir/api/v1/activations
Authorization: Bearer $VPACK_API_KEY
Idempotency-Key: my-order-20260903-0001
Content-Type: application/json
{"quoteId":"cm..."}
# 201
{
"ok":true,
"requestId":"...",
"data":{
"quoteId":"cm...",
"orderId":"cm...",
"activationId":"cm...",
"status":"...",
"charged":{"amount":0.42,"currency":"USD"}
}
}/activations/{id}Scope: virtual_numbers:read
{
"ok":true,
"requestId":"...",
"data":{
"id":"cm...",
"status":"...",
"phoneNumber":"+1...",
"service":"telegram",
"country":"US",
"priceToman":12345,
"createdAt":"...",
"updatedAt":"...",
"messages":[{"code":"123456","text":"Your code is 123456","receivedAt":"..."}]
}
}خطاها، Request ID و Rate Limit
برای خطاها فقط به متن پیام وابسته نشوید؛ HTTP status و error.code را بررسی کنید. requestId را در لاگ خود ذخیره کنید تا پشتیبانی بتواند همان درخواست را پیدا کند.
{
"ok": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Quote expired or not found.",
"requestId": "..."
}
}| HTTP | Typical code | Meaning |
|---|---|---|
| 400 | VALIDATION_ERROR | Invalid params/body/idempotency key |
| 401 | UNAUTHORIZED | Missing / invalid / inactive key |
| 403 | FORBIDDEN | Missing scope or unavailable country |
| 404 | NOT_FOUND | Service / country / activation not found |
| 409 | VALIDATION_ERROR | Quote state / idempotency / price conflict |
| 429 | VALIDATION_ERROR | Rate limit exceeded |
| 500 | INTERNAL_ERROR | Unexpected server error |
X-RateLimit-Limit-MinuteX-RateLimit-Remaining-MinuteX-RateLimit-Limit-DayX-RateLimit-Remaining-Dayمستندات آماده برای ChatGPT، Claude، Gemini و Coding Agentها
برای اتصال توسط AI لازم نیست کل این صفحه را کپی کنید. لینک OpenAPI و llms.txt را به Agent بدهید و Secret را فقط از Environment Variable در اختیار Runtime قرار دهید.
Provider، Offer ID داخلی، هزینه خام و Margin جزء قرارداد عمومی API نیستند و Agent نباید به آنها وابسته شود.