Integrate virtual phone numbers and SMS verification directly into your applications.
The QuickSim API provides programmatic access to virtual phone numbers and SMS verification services. All API requests are made over HTTPS to the base URL below.
https://api.quicksim.app/api
All requests must include an authentication token in the Authorization header. Responses are returned in JSON format. Rate limiting is applied at 100 requests per minute per user.
Authorization: Bearer <your_access_token> Content-Type: application/json
QuickSim uses JWT-based authentication. Obtain an access token via Google OAuth or email/password login, then include it in all subsequent requests.
/api/auth/googleAuthenticate using a Google OAuth credential token.
{
"credential": "eyJhbGciOiJSUzI1NiIsInR5cCI6..."
}{
"access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"user": {
"id": 1842,
"email": "user@example.com",
"name": "Jane Developer"
}
}/api/users/loginAuthenticate with email and password credentials.
{
"email": "user@example.com",
"password": "your_password"
}{
"access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}Access tokens expire after 24 hours. Use the refresh token to obtain a new access token by sending a POST request to /api/users/token/refresh with the refresh token in the body.
Retrieve the list of supported countries for virtual number activations.
/api/fivesim/countriesReturns a list of all available countries with their codes and names.
{
"countries": [
{
"name": "United States",
"code": "usa",
"prefix": "+1",
"flag": "🇺🇸"
},
{
"name": "United Kingdom",
"code": "england",
"prefix": "+44",
"flag": "🇬🇧"
},
{
"name": "Germany",
"code": "germany",
"prefix": "+49",
"flag": "🇩🇪"
}
]
}Get a list of available services and their pricing for a specific country.
/api/fivesim/products?country=usaReturns available services with pricing and number availability for the specified country.
country string Country code (e.g., "usa", "england", "germany"){
"products": [
{
"name": "whatsapp",
"display_name": "WhatsApp",
"price": 3500,
"currency": "NGN",
"available": 342
},
{
"name": "google",
"display_name": "Google",
"price": 2500,
"currency": "NGN",
"available": 1205
},
{
"name": "telegram",
"display_name": "Telegram",
"price": 2000,
"currency": "NGN",
"available": 891
}
]
}Purchase a virtual phone number for a specific country and service.
/api/fivesim/activationCreates a new activation, deducts the cost from your wallet, and returns the assigned phone number.
{
"country": "usa",
"product": "whatsapp"
}{
"id": 48291037,
"phone": "+13125550847",
"product": "whatsapp",
"country": "usa",
"price": 3500,
"status": "PENDING",
"expires_at": "2026-02-27T15:30:00Z",
"sms": null,
"created_at": "2026-02-27T15:10:00Z"
}Poll for incoming SMS messages on an active activation. Call this endpoint repeatedly until a message arrives or the activation expires.
/api/fivesim/check?activation_id=48291037Checks for received SMS messages on the specified activation.
activation_id integer The activation ID returned from the activation endpoint{
"id": 48291037,
"phone": "+13125550847",
"status": "RECEIVED",
"sms": [
{
"id": 9102847,
"text": "Your WhatsApp verification code is: 847-291",
"code": "847291",
"received_at": "2026-02-27T15:10:08Z"
}
]
}{
"id": 48291037,
"phone": "+13125550847",
"status": "PENDING",
"sms": []
}Complete or cancel an active activation. Finishing confirms receipt. Cancelling releases the number and refunds your wallet.
/api/fivesim/finishMark an activation as complete after receiving the SMS code.
{
"activation_id": 48291037
}{
"id": 48291037,
"status": "FINISHED",
"message": "Activation completed successfully"
}/api/fivesim/cancelCancel an activation and receive a full refund to your wallet balance.
{
"activation_id": 48291037
}{
"id": 48291037,
"status": "CANCELED",
"refunded": 3500,
"message": "Activation canceled. ₦7,200 refunded to wallet."
}Manage your wallet balance and virtual accounts for funding.
/api/wallet/virtual-accountsRetrieve your wallet balance and list of virtual accounts for funding.
{
"balance": 36750,
"currency": "NGN",
"virtual_accounts": [
{
"id": "va_8k2m9x",
"bank_name": "Wema Bank",
"account_number": "7821034561",
"account_name": "QuickSim/Jane Developer",
"created_at": "2026-01-15T10:30:00Z"
}
]
}/api/wallet/create-virtual-accountCreate a new virtual bank account for depositing funds into your wallet.
{
"bank_code": "035"
}{
"id": "va_9n3p2q",
"bank_name": "Wema Bank",
"account_number": "7821034892",
"account_name": "QuickSim/Jane Developer",
"message": "Virtual account created. Deposits will be credited automatically."
}All errors follow a consistent JSON format. Use the HTTP status code and the error code field to handle errors programmatically.
{
"error": "insufficient_balance",
"message": "Your wallet balance is too low for this activation.",
"status": 402
}invalid_request Missing or malformed request parametersunauthorized Invalid or expired access tokeninsufficient_balance Wallet balance too low for the requested activationnot_found Requested resource does not existactivation_expired The activation has expired and can no longer be usedno_numbers_available No numbers currently available for the selected country and servicerate_limited Too many requests. Wait and retry after the cooldown periodinternal_error Unexpected server error. Contact support if persistent