✦ Log Domain API
A unified API for virtual number verification, social media account purchasing, and social media boosting services. Powered by 6 provider portals across three service categories.
Introduction
This API gives you programmatic access to three distinct service categories:
Portal 1 · Portal 2 — SMS verification numbers
Portal 1 · Portal 2 — Purchase aged social profiles
Portal 1 · Portal 2 — Likes, followers, views & more
Single key for all services
All endpoints use JSON request/response bodies. Authenticate with the Authorization: Bearer header.
Authentication
Every request requires an API key in the Authorization header.
Keys are generated from your account dashboard and work across all service categories.
Authorization: Bearer YOUR_API_KEY
A missing or invalid key returns:
HTTP/1.1 401 Unauthorized
{
"status": "error",
"message": "Invalid API key."
}
Base URL
https://api.logdomain.com/v1
All endpoints live under /v1/. For testing, use the staging environment at api.logdomain.com/v1.
Response Format
Every response follows this structure:
{
"status": "success", // "success" or "error"
"data": { … }, // Response payload
"errors": null // null on success; error details otherwise
}
HTTP Status Codes
| Code | Meaning |
|---|---|
200 | Success |
400 | Bad request — missing or invalid parameter |
401 | Unauthorized — invalid or expired API key |
402 | Payment required — insufficient account balance |
404 | Not found — resource does not exist |
405 | Method not allowed — wrong HTTP verb |
500 | Internal server error |
502 | Bad gateway — upstream provider is unreachable |
Section 1 — Number Rentals
Rent temporary virtual phone numbers for SMS verification. Two provider portals are available:
| Portal | Provider | Identity |
|---|---|---|
portal1 | Portal 1 (BloomSMS) | REST JSON API with Bearer authentication |
portal2 | Portal 2 (DaisySMS) | Query-param API with URL-based authentication |
Workflow: List countries → List services → Rent a number → Poll for SMS → Cancel if unused. Both portals are queried transparently — you don't need to know which one owns your activation.
GET /countries.php
Returns a list of countries with available phone numbers for the specified portal.
Query Parameters
| Param | Type | Required | Description |
|---|---|---|---|
portal | string | Yes | portal1 or portal2 |
Example Request
curl -X GET "https://api.logdomain.com/v1/countries.php?portal=portal1" \
-H "Authorization: Bearer YOUR_API_KEY"
Example Response
{
"status": "success",
"data": {
"portal": "portal1",
"provider": "Portal 1",
"count": 45,
"countries": [
{ "id": 12, "name": "United States", "code": "US" },
{ "id": 44, "name": "United Kingdom", "code": "GB" },
…
]
},
"errors": null
}
GET /services.php
Returns available services (apps/platforms) for a given portal and country, with final prices in NGN including platform markup.
Query Parameters
| Param | Type | Required | Description |
|---|---|---|---|
portal | string | Yes | portal1 or portal2 |
country | string | Portal 1 only | Country ID (e.g. 12 for US) |
Example Request
curl -X GET "https://api.logdomain.com/v1/services.php?portal=portal1&country=12" \
-H "Authorization: Bearer YOUR_API_KEY"
Example Response
{
"status": "success",
"data": {
"portal": "portal1",
"provider": "Portal 1",
"country_id": "12",
"count": 28,
"services": [
{ "code": "wa", "name": "WhatsApp", "amount": "270.00", "currency": "NGN" },
{ "code": "tg", "name": "Telegram", "amount": "225.00", "currency": "NGN" },
…
]
},
"errors": null
}
GET /rent.php
Rent a virtual phone number. Your balance is deducted immediately. Save the transaction_id and activation_id — you'll need them to poll status and cancel.
Query Parameters
| Param | Type | Required | Description |
|---|---|---|---|
portal | string | Yes | portal1 or portal2 |
country | string | Portal 1 only | Country ID |
code | string | Yes | Service code (e.g. wa, tg, go) |
Example Request
curl -X GET "https://api.logdomain.com/v1/rent.php?portal=portal1&country=12&code=wa" \
-H "Authorization: Bearer YOUR_API_KEY"
Example Response
{
"status": "success",
"message": "Number rented successfully.",
"data": {
"transaction_id": "TXN20260805_A3F8B2C1_D4E5F6",
"portal": "portal1",
"provider": "Portal 1",
"service": "wa",
"service_name": "WhatsApp",
"country_id": "12",
"activation_id": "ACT12345678",
"phone_number": "+12345678901",
"amount": "270.00",
"currency": "NGN",
"balance_before": "5000.00",
"balance_after": "4730.00",
"expires_at": "2026-08-05T15:00:00Z"
},
"errors": null
}
transaction_id and activation_id.
Use them to poll for SMS codes via GET /status.php and to cancel/refund via POST /status.php or POST /rental_cancel.php.
POST /rental_cancel.php
Cancel a rental and receive an automatic refund. The server checks both portals for the SMS status first — if a code was already received, cancellation is denied (the service was used).
Request Body (JSON)
| Field | Type | Required | Description |
|---|---|---|---|
list_id | string | Yes | The transaction_id returned by GET /rent.php |
Example Request
curl -X POST "https://api.logdomain.com/v1/rental_cancel.php" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"list_id": "TXN20260805_A3F8B2C1_D4E5F6"}'
Success Response
{
"status": "success",
"data": {
"list_id": "TXN…",
"activation_id": "ACT…",
"successful_provider": "Portal 1",
"refund": {
"balance_before": 4730,
"balance_after": 5000,
"refund_amount": 270
},
"transaction": {
"old_status": "pending",
"new_status": "refunded"
}
},
"errors": null
}
Already Cancelled (Idempotent)
{
"status": "success",
"data": {
"list_id": "TXN…",
"status": "refunded",
"message": "Transaction already refunded"
}
}
GET POST /status.php
Dual-method endpoint: Poll for SMS status (GET) or manually update an activation (POST). Auto-detects SMS codes, syncs them to your transaction history, and auto-refunds expired numbers.
GET Check Activation Status
Query Parameters
| Param | Type | Required | Description |
|---|---|---|---|
activation_id | string | Yes | Activation ID from GET /rent.php |
Example Request
curl -X GET "https://api.logdomain.com/v1/status.php?activation_id=ACT12345678" \
-H "Authorization: Bearer YOUR_API_KEY"
Waiting for SMS
{
"data": {
"activation_id": "ACT…",
"portal": "Portal 1",
"status": "waiting",
"phone_number": "+12345678901"
}
}
SMS Received!
{
"data": {
"status": "code_received",
"sms": {
"code": "45678",
"full_text": "Your WhatsApp code is 45678"
}
}
}
Expired (Auto-Refunded)
{
"data": {
"status": "expired",
"refunded": true,
"refund": { "refund_amount": 270, "balance_after": 5000 },
"message": "Number has expired. Refund processed."
}
}
POST Update Activation Status
Request Body (JSON)
| Field | Type | Required | Description |
|---|---|---|---|
activation_id | string | Yes* | Activation ID. *Or use list_id |
list_id | string | Yes* | Alternative: transaction_id |
status | string | Yes | cancel or complete/done |
Cancel + Refund
curl -X POST "https://api.logdomain.com/v1/status.php" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"activation_id": "ACT…", "status": "cancel"}'
Mark as Complete
curl -X POST "https://api.logdomain.com/v1/status.php" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"activation_id": "ACT…", "status": "complete"}'
Common Service Codes
| Code | Service | Code | Service |
|---|---|---|---|
wa | tg | Telegram | |
ig | fb | ||
tw | Twitter/X | lf | TikTok |
go | ai | OpenAI/ChatGPT | |
ms | Microsoft | amazon | Amazon |
ds | Discord | sn | Snapchat |
si | Signal | tn | |
gp | Google Play | pp | PayPal |
yt | YouTube | sp | Spotify |
tb | Tinder | dd | DoorDash |
ub | Uber | airbnb | Airbnb |
vn | Venmo | cb | Cash App |
st | Stripe | ap | Apple |
Section 2 — Social Accounts
Purchase aged or fresh social media accounts across major platforms. Two provider portals for account sourcing:
| Portal | Provider | Description |
|---|---|---|
portal1 | Portal 1 (ShopVita) | Social media account marketplace — available now |
portal2 | Portal 2 | Social media account marketplace — available now |
Workflow: Browse available accounts by category → view details & pricing (with NGN markup) → purchase.
GET /socials/portal1_products.php
Returns available social media accounts from Portal 1, organised by category. Prices are final NGN amounts — markup is applied transparently behind the scenes.
Query Parameters
| Param | Type | Default | Description |
|---|---|---|---|
category_id | integer | — | Filter products by category ID |
limit | integer | — | Max number of products to return |
Example Request
curl -X GET "https://api.logdomain.com/v1/socials/portal1_products.php" \
-H "Authorization: Bearer YOUR_API_KEY"
Example Response
{
"status": "success",
"data": {
"portal": "portal1",
"provider": "Portal 1",
"total_products": 150,
"total_categories": 8,
"categories": [
{
"id": 79,
"name": "RANDOM COUNTRIES Fb",
"icon": "https://...",
"product_count": 6,
"products": [
{
"id": "5",
"name": "Pure Random Country FB (30-1k friends) 2012-2017",
"description": "FILE FORMAT; ID|password|2fa|email|emailpassword",
"amount": 5751,
"currency": "NGN",
"min_order": 1,
"max_order": 1000000
}
]
}
],
"products": [ … ]
},
"errors": null
}
amount shown is the final price in NGN.
Platform markup is already included — what you see is what you pay.
POST /socials/portal1_purchase.php
Purchase social media accounts from Portal 1. Supply a product ID and quantity — balance is deducted, the provider fulfills the order, and the account credentials are returned in the response.
Request Body (JSON)
| Field | Type | Required | Description |
|---|---|---|---|
product_id | integer | Yes | Product ID from GET /socials/portal1_products.php |
quantity | integer | No | Number of accounts to buy (default 1, max 100) |
coupon | string | No | Optional discount coupon code |
Example Request
curl -X POST "https://api.logdomain.com/v1/socials/portal1_purchase.php" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"product_id": 161, "quantity": 2}'
Example Response
{
"status": "success",
"data": {
"transaction_id": "TXN20260805_AB12CD34_EFGH56",
"transaction_ref": "SHOP123456",
"product_id": 161,
"product_name": "Aged Facebook Account (2018)",
"quantity": 2,
"amount": 12390,
"currency": "NGN",
"per_account": 6195,
"balance_before": 50000,
"balance_after": 37610,
"accounts": [
{
"username": "john.doe.123",
"display_name": "John Doe",
"email": "johndoe@gmail.com",
"password": "Pass1234!",
"recovery_email": "backup@mail.com"
},
{
"username": "jane.smith.456",
"display_name": "Jane Smith",
"email": "janesmith@yahoo.com",
"password": "Secure5678@",
"recovery_email": null
}
],
"accounts_count": 2
},
"errors": null
}
GET /socials/portal2_products.php
Returns available social media accounts from Portal 2, organised by category. Prices are in NGN — VND conversion and markup are applied behind the scenes. Certain internal categories are excluded automatically.
Query Parameters
| Param | Type | Default | Description |
|---|---|---|---|
category_id | integer | — | Filter by category ID |
country | string | — | Filter by account country |
limit | integer | — | Max products to return |
Example Request
curl -X GET "https://api.logdomain.com/v1/socials/portal2_products.php" \
-H "Authorization: Bearer YOUR_API_KEY"
Example Response
{
"status": "success",
"data": {
"portal": "portal2",
"provider": "Portal 2",
"categories": [
{
"id": 1,
"name": "Facebook Accounts",
"image": "https://...",
"product_count": 20,
"products": [
{
"id": "45",
"name": "Aged FB Account (2019)",
"description": "Verified, 500+ friends",
"amount": 4200,
"currency": "NGN",
"country": "US"
}
]
}
],
"total_products": 85,
"total_categories": 5
},
"errors": null
}
amount shown is the final price you pay.
POST /socials/portal2_purchase.php
Purchase social media accounts from Portal 2. Supply a product ID and quantity — VND prices are converted to NGN with markup applied transparently. Balance is deducted and accounts are returned.
Request Body (JSON)
| Field | Type | Required | Description |
|---|---|---|---|
product_id | integer | Yes | Product ID from GET /socials/portal2_products.php |
quantity | integer | No | Number of accounts to buy (default 1, max 100) |
Example Request
curl -X POST "https://api.logdomain.com/v1/socials/portal2_purchase.php" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"product_id": 19, "quantity": 2}'
Example Response
{
"status": "success",
"data": {
"transaction_id": "TXN20260805_EF12AB34_GH5678",
"transaction_ref": "AS123456",
"product_id": 19,
"product_name": "Aged FB Account (2019)",
"category": "Facebook Accounts",
"quantity": 2,
"amount": 8400,
"currency": "NGN",
"per_account": 4200,
"balance_before": 50000,
"balance_after": 41600,
"accounts": [ … ],
"accounts_count": 2
},
"errors": null
}
Section 3 — Social Boosting
Boost your social media presence with followers, likes, views, comments, and other engagement services. Two provider portals for boosting:
| Portal | Provider | Description |
|---|---|---|
portal1 | Portal 1 (Momo Panel) | Social media engagement & growth — available now |
portal2 | Portal 2 (ReallySimpleSocial) | Social media engagement & growth — available now |
Workflow: Browse available boost services by category → view pricing per quantity → place an order with target URL.
GET /boosting/portal1_services.php
Returns available social media boosting services from Portal 1 (Momo Panel). Services are categorised and platform-tagged (Instagram, Facebook, TikTok, etc). Prices are in NGN with markup applied transparently.
Example Request
curl -X GET "https://api.logdomain.com/v1/boosting/portal1_services.php" \
-H "Authorization: Bearer YOUR_API_KEY"
Example Response
{
"status": "success",
"data": {
"portal": "portal1",
"provider": "Portal 1",
"total_services": 250,
"total_categories": 12,
"services": [
{
"service": 1234,
"name": "Instagram Followers | High Quality",
"category": "Instagram",
"platform": "instagram",
"amount": 1200,
"currency": "NGN",
"min": 100,
"max": 50000
},
{
"service": 5678,
"name": "TikTok Views | Fast Delivery",
"platform": "tiktok",
"amount": 600,
"currency": "NGN",
"min": 500,
"max": 100000
}
],
"categories": {
"Instagram": [ … ],
"TikTok": [ … ]
}
},
"errors": null
}
service ID — use this when placing orders.
Categories and platform tags help you filter services client-side. The min/max fields
indicate the minimum and maximum quantities you can order.
POST /boosting/portal1_order.php
Place a social media boosting order on Portal 1. Provide a service ID, target link, and quantity — the server fetches real-time pricing, validates quantity limits, and deducts your balance atomically.
Request Body (JSON)
| Field | Type | Required | Description |
|---|---|---|---|
service_id | integer | Yes | Service ID from GET /boosting/portal1_services.php |
link | string | Yes | Target URL (e.g. Instagram post, TikTok video) |
quantity | integer | Yes | Quantity to order (must be within service min/max) |
Example Request
curl -X POST "https://api.logdomain.com/v1/boosting/portal1_order.php" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"service_id": 1234, "link": "https://instagram.com/p/abc123", "quantity": 500}'
Example Response
{
"status": "success",
"data": {
"transaction_id": "TXN20260805_AB12CD34_EFGH56",
"order_id": "MOMO123456",
"service_id": 1234,
"service_name": "Instagram Followers | High Quality",
"link": "https://instagram.com/p/abc123",
"quantity": 500,
"amount": 600,
"currency": "NGN",
"balance_before": 5000,
"balance_after": 4400
},
"errors": null
}
add action, deducts payment atomically,
and returns the order ID for tracking.
GET /boosting/portal2_services.php
Returns available social media boosting services from Portal 2 (ReallySimpleSocial). Portal 2 returns Naira prices directly — no currency conversion needed, only percentage markup applied. Services are categorised and platform-tagged.
Example Request
curl -X GET "https://api.logdomain.com/v1/boosting/portal2_services.php" \
-H "Authorization: Bearer YOUR_API_KEY"
Example Response
{
"status": "success",
"data": {
"portal": "portal2",
"provider": "Portal 2",
"total_services": 180,
"total_categories": 10,
"services": [
{
"service": 2001,
"name": "YouTube Views | Worldwide",
"category": "YouTube",
"platform": "youtube",
"amount": 850,
"currency": "NGN",
"min": 100,
"max": 50000
}
],
"categories": { "YouTube": [ … ] }
},
"errors": null
}
amount shown is the final price.
POST /boosting/portal2_order.php
Place a social media boosting order on Portal 2. Provide a service ID, target link, and quantity — Portal 2 prices are already in NGN per 1000 units, only percentage markup is applied. Balance is deducted atomically.
Request Body (JSON)
| Field | Type | Required | Description |
|---|---|---|---|
service_id | integer | Yes | Service ID from GET /boosting/portal2_services.php |
link | string | Yes | Target URL |
quantity | integer | Yes | Quantity (within service min/max) |
Example Request
curl -X POST "https://api.logdomain.com/v1/boosting/portal2_order.php" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"service_id": 2001, "link": "https://youtube.com/watch?v=abc", "quantity": 1000}'
Example Response
{
"status": "success",
"data": {
"transaction_id": "TXN20260805_AB12CD34_EFGH56",
"order_id": "RSS123456",
"service_id": 2001,
"service_name": "YouTube Views | Worldwide",
"link": "https://youtube.com/watch?v=abc",
"quantity": 1000,
"amount": 1275,
"currency": "NGN",
"balance_before": 5000,
"balance_after": 3725
},
"errors": null
}
GET /boosting/portal1_status.php
Check the status of a Portal 1 boosting order. Queries both the local database and the upstream provider. Automatically syncs status changes (e.g. processing → completed, cancelled, failed). Falls back to local status if the provider is unreachable.
Query Parameters
| Param | Type | Required | Description |
|---|---|---|---|
order_id | string | Yes | The order ID returned by POST /boosting/portal1_order.php |
Example Request
curl -X GET "https://api.logdomain.com/v1/boosting/portal1_status.php?order_id=MOMO123456" \
-H "Authorization: Bearer YOUR_API_KEY"
Example Response
{
"status": "success",
"data": {
"order_id": "MOMO123456",
"list_id": "TXN20260805_AB12CD34_EFGH56",
"service_name": "Instagram Followers | High Quality",
"amount": 600,
"status": "completed",
"provider_status": "Completed",
"target_url": "https://instagram.com/p/abc123",
"start_count": 0,
"remains": 0,
"balance_before": 5000,
"balance_after": 4400,
"source": "provider"
},
"errors": null
}
"source": "local_db".
The start_count and remains fields track delivery progress.
© 2026 Log Domain — API Documentation last updated August 8, 2026 · Section 1 (Number Rentals) fully available · Section 2 (Social Accounts) & Section 3 (Social Boosting) available