Customer API Documentation
API Endpoint & Authentication
All customer API calls use a single HTTP POST endpoint. Authenticate with key or apikey (from your profile API key page) plus action to select the operation. Path is at the site root as /api/v2 — no language prefix (e.g. no /en/ before /api).
Send parameters as application/x-www-form-urlencoded (e.g. curl -d) or as JSON with Content-Type: application/json.
{
"key": "YOUR_API_KEY",
"action": "categories"
}
Note: Replace YOUR_API_KEY with your own key. Never put API keys in URLs, client-side code, or public repositories. Supported action values: categories, shops, services, inventory, add, status, balance.
Requests are rate-limited per API key. When exceeded, the API returns HTTP 429 with a Retry-After header. Use pagination on large service lists (default page size: 50).
Test API
Choose an action, enter any required parameters, then click Send Request to call the live API. If you are signed in with an API key, it is filled in below (masked).
Response
Customer API v2
Get Categories
Returns all top-level categories and their subcategory names. Use these exact names to filter Services List by category and subcategory.
Request Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
key / apikey | String | Your API key | Yes |
action | String | categories | Yes |
Example Request
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=categories"
Response Example
{
"categories": [
{
"category": "Social",
"subcategories": ["Premium", "Standard"]
},
{
"category": "Digital goods",
"subcategories": []
}
]
}
Shops List
Returns all public supplier shops that have at least one active, approved product. Each item includes a shop identifier (24-character supplier ObjectId) — pass it to Services List as shop to list products from that shop only. Optional page and limit work like Services List (default page size 50, max 500).
Request Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
key / apikey | String | Your API key | Yes |
action | String | shops | Yes |
page | Number | Page number (default 1) when limit > 0 | No |
limit | Number | Items per page; 0 = return all (default 0) | No |
Example Request
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=shops"
Response Example
{
"shops": [
{
"shop": "507f1f77bcf86cd799439011",
"name": "Example Shop",
"description": "Shop description",
"logo": "https://example.com/logo.webp",
"banner": "https://example.com/banner.webp",
"shopUrl": "example-shop",
"productCount": 42,
"featured": true
}
],
"total": 1,
"page": 1,
"limit": 50,
"total_pages": 1
}
Services List
Returns sellable products (services) with stock, pricing, sales metrics, review stats, timestamps, and an available flag for whether each item can be ordered now (stock meets minimum purchase quantity). Each item includes sales_count, rating, review_count, created_at, and updated_at. Filter by category / subcategory names from Get Categories, by shop from Shops List, or pass service to fetch one item by its service ID (the service value from list responses). Use language to localize name, description, category, and subcategory (see table below). Optional entityType limits the product type; optional sort orders results before pagination. Set limit=0 to return all matching items in one response.
Request Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
key / apikey | String | Your API key | Yes |
action | String | services | Yes |
page | Number | Page number (default 1) when limit > 0 | No |
limit | Number | Items per page; 0 = return all (default 0) | No |
shop | String | Shop ID from Shops List (shop field — 24-character supplier ObjectId). Alias: shop_id. Omit to return products from all shops. | No |
category | String | Parent category name (from Get Categories) | No |
subcategory | String | Subcategory name (from Get Categories) | No |
entityType | String | Product type filter: product (default, standard catalog items) or smm (social growth services) | No |
sort | String | Sort order: created_at (default, newest first), price_asc, price_desc, sales, rating | No |
service | String | Return one service by ID (same service value as in list responses) | No |
language | String | Response language — use a code from Supported language codes below (default en) | No |
Supported language codes (language)
Pass one of these values (case-insensitive). If omitted or en, text fields remain in English (the source language stored in the catalog). Other supported codes return translated name, description, category, and subcategory when translations are available; otherwise English is used.
| Code | Language | Native name |
|---|---|---|
en |
English | English |
zh |
Chinese | 中文 |
es |
Spanish | Español |
fr |
French | Français |
de |
German | Deutsch |
ja |
Japanese | 日本語 |
ko |
Korean | 한국어 |
pt |
Portuguese | Português |
pt-BR |
Portuguese (Brazil) | Português (Brasil) |
ru |
Russian | Русский |
ar |
Arabic | العربية |
hi |
Hindi | हिन्दी |
vi |
Vietnamese | Tiếng Việt |
ur |
Urdu | اردو |
th |
Thai | ไทย |
tr |
Turkish | Türkçe |
bn-BD |
Bengali (Bangladesh) | বাংলা |
Also accepted (aliases)
These strings are normalized to a primary code above (same translation bucket):
| You may send | Resolves to |
|---|---|
zh-hans |
zh |
zh-cn |
zh |
zh-sg |
zh |
zh-hant |
zh |
zh-tw |
zh |
zh-hk |
zh |
zh-mo |
zh |
pt-br |
pt-BR |
pt_br |
pt-BR |
ptbr |
pt-BR |
bn-bd |
bn-BD |
bd |
bn-BD |
en-us |
en |
en-gb |
en |
Not supported: any other language value is treated like English (no translation). Use the exact primary codes or aliases listed here.
Example Request
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services"
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services" \
-d "page=1" \
-d "limit=50"
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services" \
-d "entityType=product" \
-d "sort=price_asc" \
-d "page=1" \
-d "limit=50"
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services" \
-d "category=Instagram"
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services" \
-d "shop=507f1f77bcf86cd799439011"
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services" \
-d "service=10042" \
-d "limit=1" \
-d "language=zh"
Hot-sync single lookup: use action=services with service (business_id or product_id) and limit=1. Products that exist but are inactive, pending approval, or blacklisted return HTTP 200 with available=false and the actual stock; only missing IDs or deleted products return 404. rate is required; price is an optional alias with the same value.
Response Example
Default (limit omitted or 0): all services in one response.
{
"services": [
{
"service": 10042,
"name": "Example product A",
"description": "Product description (may be HTML)",
"type": "Default",
"category": "Social",
"subcategory": "Instagram",
"rate": "9.99",
"min": 1,
"max": 100,
"refill": false,
"cancel": false,
"stock": 100,
"available": true,
"entityType": "product",
"autoDelivery": true,
"sales_count": 128,
"rating": "4.50",
"review_count": 23,
"created_at": "2024-03-01T12:00:00",
"updated_at": "2025-07-10T08:30:00"
}
],
"total": 2,
"page": 1,
"limit": 0,
"total_pages": 1
}
service — the service identifier in each list item: a numeric catalog ID when assigned, otherwise a system-generated string. Use the same value for Check Inventory (comma-separated for multiple IDs) and Add Order. rate is the unit price you pay for that service (includes any supplier-specific buyer discount configured for your account; otherwise the list price). available — whether the service can be ordered now (sellable and stock meets the minimum purchase quantity). Same meaning as in Check Inventory; wallet balance and coupon codes are still validated when you call Add Order. category / subcategory match names from Get Categories (subcategory is empty when the product belongs to a top-level category only). description may contain rich text or HTML from the product listing. sales_count — total units sold (cumulative). rating — average score from visible reviews (0.00 when there are no reviews). review_count — number of visible reviews. created_at / updated_at — product creation and last update time (ISO 8601).
Check Inventory
Returns current stock for one or more services. Pass a single service ID, or several IDs comma-separated (e.g. 10054,0665,13541). Use the same service values as in Services List. The available field uses the same rules as in Services List (sellable and stock meets minimum purchase quantity). A single ID returns one object; multiple IDs return an inventory array.
Request Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
key / apikey | String | Your API key | Yes |
action | String | inventory | Yes |
service | String | One or more service IDs from the services list, comma-separated (e.g. 10054,0665,13541; max 50 per request) | Yes |
Example Request
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=inventory" \
-d "service=10054,0665,13541"
Response Example
When a single service ID is provided, the response is one object (HTTP 404 if not found):
{
"service": 10042,
"stock": 42,
"available": true,
"entityType": "product",
"autoDelivery": true
}
When multiple comma-separated IDs are provided, the response wraps items in an inventory array (HTTP 200; missing services include an error field):
{
"inventory": [
{
"service": 10054,
"stock": 10,
"available": true,
"entityType": "product",
"autoDelivery": true
},
{
"service": 665,
"stock": 0,
"available": false,
"entityType": "product",
"autoDelivery": true
},
{
"service": 13541,
"error": "Service not found"
}
]
}
Add Order
Creates an order and charges your account balance. Requires a valid service ID and quantity.
Request Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
key / apikey | String | Your API key | Yes |
action | String | add | Yes |
service | String | Service ID from the services list (service field) | Yes |
quantity | Number | Quantity (default 1) | No |
link | String | Optional URL field (accepted for compatibility; not stored) | No |
coupon_code / coupon | String | Optional coupon code (alias: coupon) | No |
Example Request
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=10042" \
-d "quantity=1"
Response Example
HTTP status 201 Created.
{
"order": "000000000000000000000001",
"charge": "9.99",
"currency": "USD"
}
The order field is the unique order identifier (string). charge is the total amount debited from your wallet (after buyer discount, login discount, and coupon, when applicable). currency is always USD. Pass order to Order Status (action=status).
Order Status
Returns fulfillment progress, delivery status, and delivered credentials (when applicable) for an order you placed. Requires the order identifier from Add Order.
Request Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
key / apikey | String | Your API key | Yes |
action | String | status | Yes |
order | String | Order identifier returned by add | Yes |
Example Request
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=status" \
-d "order=000000000000000000000001"
Response Example
{
"status": "In progress",
"charge": "75.00",
"start_count": 3,
"remains": 1,
"delivered_units": 2,
"currency": "USD",
"autoDelivery": true,
"entityType": "product"
}
{
"status": "Completed",
"charge": "50.00",
"start_count": 2,
"remains": 0,
"delivered_units": 2,
"currency": "USD",
"autoDelivery": true,
"entityType": "product",
"accounts": ["example_user:redacted", "example_user_2:redacted"]
}
Balance
Returns your current customer wallet balance and currency. No additional parameters are required beyond authentication.
Request Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
key / apikey | String | Your API key | Yes |
action | String | balance | Yes |
Example Request
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=balance"
Response Example
{
"balance": "100.00",
"currency": "USD"
}
Returns the available balance in your customer wallet (used to pay for orders).
Error Responses
Errors use a single error string. Wrong or missing API credentials typically return HTTP 401 with {"error": "Invalid API key"}; validation issues usually return 400.
{"error": "Invalid API key"}
{"error": "Invalid action"}
{"error": "Service ID is required"}
{"error": "Service not found"}
{"error": "Shop not found"}
{"error": "Product not found."}
{"error": "This product is not available for purchase."}
{"error": "Invalid quantity."}
{"error": "Minimum quantity is 2."}
{"error": "Insufficient stock. Available: 10."}
{"error": "Insufficient balance. Please recharge your account."}
{"error": "Order not found"}
{"error": "Category not found"}
{"error": "Subcategory not found"}
{"error": "Subcategory not found in category"}