Fast integration
From API key → number → OTP with copy/paste requests and expandable reference below.
✅ Trusted by 301,310+ users · ⭐ 4.1/5 on Trustpilot · 200+ countries
Read FAQs →
Integrate faster: request numbers, receive OTP SMS, handle errors cleanly, and scale with polling best practices.
Base URL: https://api.pvapins.com/user/api/
Responsible use: Follow local laws and each platform’s terms. PVAPins is not affiliated with third-party apps.
Minimal steps to your first OTP via API.

Predictable responses, clear flows, and practical guidance for production.
From API key → number → OTP with copy/paste requests and expandable reference below.
Separate temporary and rent logic so your code stays easier to debug.
Rate-limit-friendly polling, error mapping, and retry tips.
Replace YOUR_API_KEY, COUNTRY_ID, APP_ID, and NUMBER with your values.
curl -s 'https://api.pvapins.com/user/api/load_countries.php'curl -s 'https://api.pvapins.com/user/api/load_apps.php?country_id=COUNTRY_ID'curl -s 'https://api.pvapins.com/user/api/get_number.php?customer=YOUR_API_KEY&app=APP_NAME&country=COUNTRY_NAME'# Poll every 3–6s with backoff
curl -s 'https://api.pvapins.com/user/api/get_sms.php?customer=YOUR_API_KEY&number=NUMBER&country=COUNTRY_NAME&app=APP_NAME'Integration tip: Use exponential backoff (e.g. 3s → 5s → 8s) and stop after a timeout.
Most action endpoints require your API key as the customer query parameter. Never expose it in client-side code.
Register, open your dashboard, and copy the key. Use it only on your server.
Store keys in environment variables, rotate if leaked, and log requests in production.
One-time verification sessions. See full reference for payloads and errors.
country_idcustomer, country (and app per docs)customer, app, countrycustomer, number, country, appFor repeated OTPs or longer access — keep rent calls separate in your codebase.
Repeat logins, re-verification, or when you may need another code on the same line.
Use rent-specific parameters (e.g. is_rent=1) as in the reference below.
curl -s 'https://api.pvapins.com/user/api/get_number.php?customer=YOUR_API_KEY&app=APP_NAME&country=COUNTRY_NAME&is_rent=1'Treat limits as normal — throttle, backoff, and map errors to clear actions.
Start around 3–6s, then backoff; stop after a max wait; log failures.
Throttle concurrent polls; queue requests under load.
One internal table: message → meaning → action (retry / new number / balance / key).
Pick the right model before you wire up automation.
Quick answers for integrators.
Register, log in, and copy your key from the dashboard. Use it server-side only.
Listing countries/apps is typically public; requesting numbers and fetching SMS requires your key.
Request a number, then poll get_sms with backoff until the code appears or you time out.
Temporary is for a short session; rent keeps the same line for repeated codes over a rental period.
Check the customer parameter matches your API key exactly.
Wait, poll with backoff, then try another route; avoid hammering the API.
Yes — design throttling and exponential backoff into your integration.
Use monitoring, error mapping, and compliance controls; follow platform terms.
Expand each block for parameters, examples, and error messages. Switch tabs for temporary vs rent endpoints.
id: Unique country identifierfull_name: Full country name
country_id: Country ID to get apps for (required)
id: Unique app identifierfull_name: Full app nametimestamp: Last update timestamptrending: Trending status (1 = trending, 0 = not trending)deduct: Cost deduction amount
customer: Your API key (required)country: Country name to check rates for
customer: Your API key (required)app: Application name (e.g., google, whatsapp, telegram)country: Country name (e.g., malaysia, indonesia, philippines)number: Phone number to reuse (optional, for reuse feature only)&number=PHONE_NUMBER parameter to reuse a previously used number?customer=apikey&app=google&country=malaysia&number=112869xxxcustomer: Your API key (required)number: Phone number to check SMS forcountry: Country nameapp: Application name
customer: Your API key (required)number: Phone number to rejectcountry: Country nameapp: Application namecustomer: Your API key (required)
customer: Your API key (required)
API endpoints for renting phone numbers for extended periods. These endpoints include the is_rent=1 parameter to distinguish from temporary numbers.
is_rent: Set to 1 to get countries available for rent (required)id: Unique country identifierfull_name: Full country name
country_id: Country ID to get apps for (required)is_rent: Set to 1 to get apps available for rent (required)id: Unique app identifierfull_name: Full app nametimestamp: Last update timestamptrending: Trending status (1 = trending, 0 = not trending)deduct: Cost deduction amount for rental
customer: Your API key (required)app: Application name (e.g., google, whatsapp, telegram)country: Country name (e.g., malaysia, indonesia, philippines)data: Phone number (success) or error message (failure)code: Response code (100 = success, 200 = error)
customer: Your API key (required)
id: Unique rental IDuser_id: User identifierkey_id: Key identifierapp_id: Application IDnumber: Rented phone numberdeduct: Cost deduction amountduration: Rental duration in dayscountry_id: Country identifieris_released: Release status (0 = active, 1 = released)auto_renew: Auto-renewal status (0 = disabled, 1 = enabled)received_message: Message count receivedapi: API identifiertimestamp: Rental start timestampapp_name: Application namecountry_name: Country nametimestamp_readable: Human-readable timestampdays: Days remaining in rentalexpiry: Rental expiry date and time
days field shows remaining rental daysis_released to see if a number is still activecustomer: Your API key (required)country: Country name (e.g., USA, UK, malaysia)app: Application name (e.g., Rent GPay GPlay GVoice)number: Rented phone number to check SMS for (required)
from: Sender of the SMS messagemessage: Content of the SMS messagetimestamp: Date and time when the SMS was received
customer: Your API key (required)app: Application name (e.g., google, whatsapp, telegram)country: Country name (e.g., malaysia, indonesia, philippines)number: Phone number to reject (required)
data: Response message (success or error)code: Response code (100 = success, 200 = error)
customer: Your API key (required)app: Application name (e.g., google, whatsapp, telegram)country: Country name (e.g., malaysia, indonesia, philippines)number: Phone number to renew (required)
data: Response message (success or error)code: Response code (100 = success, 200 = error)