✦ 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:

📱 Number Rentals
Portal 1 · Portal 2 — SMS verification numbers
👤 Social Accounts
Portal 1 · Portal 2 — Purchase aged social profiles
🚀 Social Boosting
Portal 1 · Portal 2 — Likes, followers, views & more
🔑 One API Key
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
Important: Keep your API key secret. Never expose it in client‑side code or public repositories. If compromised, revoke it immediately from the dashboard.

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

CodeMeaning
200Success
400Bad request — missing or invalid parameter
401Unauthorized — invalid or expired API key
402Payment required — insufficient account balance
404Not found — resource does not exist
405Method not allowed — wrong HTTP verb
500Internal server error
502Bad gateway — upstream provider is unreachable

Section 1 — Number Rentals

📱 Portal Overview

Rent temporary virtual phone numbers for SMS verification. Two provider portals are available:

PortalProviderIdentity
portal1Portal 1 (BloomSMS)REST JSON API with Bearer authentication
portal2Portal 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.

GET /api/countries.php?portal=portal1

Query Parameters

ParamTypeRequiredDescription
portalstringYesportal1 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.

GET /api/services.php?portal=portal1&country=12

Query Parameters

ParamTypeRequiredDescription
portalstringYesportal1 or portal2
countrystringPortal 1 onlyCountry 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.

GET /api/rent.php?portal=portal1&country=12&code=wa

Query Parameters

ParamTypeRequiredDescription
portalstringYesportal1 or portal2
countrystringPortal 1 onlyCountry ID
codestringYesService 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
}
⚠️ Important: Save 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).

POST /api/rental_cancel.php

Request Body (JSON)

FieldTypeRequiredDescription
list_idstringYesThe 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

GET /api/status.php?activation_id=ACT123

Query Parameters

ParamTypeRequiredDescription
activation_idstringYesActivation 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

POST /api/status.php

Request Body (JSON)

FieldTypeRequiredDescription
activation_idstringYes*Activation ID. *Or use list_id
list_idstringYes*Alternative: transaction_id
statusstringYescancel 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

CodeServiceCodeService
waWhatsApptgTelegram
igInstagramfbFacebook
twTwitter/XlfTikTok
goGoogleaiOpenAI/ChatGPT
msMicrosoftamazonAmazon
dsDiscordsnSnapchat
siSignaltnLinkedIn
gpGoogle PlayppPayPal
ytYouTubespSpotify
tbTinderddDoorDash
ubUberairbnbAirbnb
vnVenmocbCash App
stStripeapApple

Section 2 — Social Accounts

👤 Portal 1 & Portal 2

Purchase aged or fresh social media accounts across major platforms. Two provider portals for account sourcing:

PortalProviderDescription
portal1Portal 1 (ShopVita)Social media account marketplace — available now
portal2Portal 2Social 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.

GET /api/socials/portal1_products.php

Query Parameters

ParamTypeDefaultDescription
category_idinteger—Filter products by category ID
limitinteger—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
}
Pricing: The 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.

POST /api/socials/portal1_purchase.php

Request Body (JSON)

FieldTypeRequiredDescription
product_idintegerYesProduct ID from GET /socials/portal1_products.php
quantityintegerNoNumber of accounts to buy (default 1, max 100)
couponstringNoOptional 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
}
How it works: The server fetches the real-time product price from Portal 1, applies markup, checks your balance, places the order, deducts payment, and returns the account credentials (username, email, password, recovery email). Each account is parsed from the provider's pipe-delimited format into clean fields.

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.

GET /api/socials/portal2_products.php

Query Parameters

ParamTypeDefaultDescription
category_idinteger—Filter by category ID
countrystring—Filter by account country
limitinteger—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
}
Pricing: Portal 2 prices are in VND on the provider side, converted to NGN using the system's VND/NGN rate. Markup tiers (configured per-portal) are applied automatically. The 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.

POST /api/socials/portal2_purchase.php

Request Body (JSON)

FieldTypeRequiredDescription
product_idintegerYesProduct ID from GET /socials/portal2_products.php
quantityintegerNoNumber 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
}
How it works: The server fetches real-time product info and stock from Portal 2, converts VND to NGN, applies portal-specific markup tiers, checks your balance, places the order, deducts payment atomically, and returns the purchased account credentials.

Section 3 — Social Boosting

🚀 Portal 1 & Portal 2

Boost your social media presence with followers, likes, views, comments, and other engagement services. Two provider portals for boosting:

PortalProviderDescription
portal1Portal 1 (Momo Panel)Social media engagement & growth — available now
portal2Portal 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.

GET /api/boosting/portal1_services.php

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 IDs: Each service has a numeric 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.

POST /api/boosting/portal1_order.php

Request Body (JSON)

FieldTypeRequiredDescription
service_idintegerYesService ID from GET /boosting/portal1_services.php
linkstringYesTarget URL (e.g. Instagram post, TikTok video)
quantityintegerYesQuantity 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
}
How it works: The server fetches the real-time service rate from Portal 1 (USD per 1000 units), converts to NGN per unit, applies percentage markup, validates your quantity against the service's min/max, checks your balance, places the order on Portal 1 via the 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.

GET /api/boosting/portal2_services.php

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
}
Portal 2 pricing: Unlike Portal 1 (which uses USD), Portal 2 returns prices in NGN directly. Platform markup is applied as a percentage to these NGN rates. The 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.

POST /api/boosting/portal2_order.php

Request Body (JSON)

FieldTypeRequiredDescription
service_idintegerYesService ID from GET /boosting/portal2_services.php
linkstringYesTarget URL
quantityintegerYesQuantity (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
}
Portal 2 pricing: Unlike Portal 1, Portal 2 rates are already in NGN per 1000 units. The server divides by 1000 to get the per-unit price, applies percentage markup, and calculates the total. All balance checks and deductions are atomic.

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.

GET /api/boosting/portal1_status.php?order_id=MOMO123456

Query Parameters

ParamTypeRequiredDescription
order_idstringYesThe 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
}
Status sync: When you query the status, the server checks Portal 1 directly and automatically updates your local transaction if the status has changed (e.g. In progress → Completed). If Portal 1 is unreachable, the local DB status is returned with "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