Documentación de la API del cliente
Endpoint de API y autenticación
Todas las llamadas a la API del cliente utilizan un <strong>único endpoint HTTP POST</strong>. Autentíquese con <code>key</code> o <code>apikey</code> (desde la página de clave API de su perfil) más <code>action</code> para seleccionar la operación. La ruta está en la <strong>raíz del sitio</strong> como <code>/api/v2</code> — sin prefijo de idioma (ej. sin <code>/en/</code> antes de <code>/api</code>).
Envíe los parámetros como <code>application/x-www-form-urlencoded</code> (ej. <code>curl -d</code>) o como JSON con <code>Content-Type: application/json</code>.
{
"key": "YOUR_API_KEY",
"action": "categories"
}
<strong>Nota:</strong> Reemplace <code>YOUR_API_KEY</code> con su propia clave. Nunca coloque claves API en URL, código del lado del cliente o repositorios públicos. Valores de <code>action</code> compatibles: <code>categories</code>, <code>services</code>, <code>inventory</code>, <code>add</code>, <code>status</code>, <code>balance</code>.
Probar API
Elija una acción, ingrese los parámetros requeridos y luego haga clic en <strong>Enviar solicitud</strong> para llamar a la API en vivo. Si ha iniciado sesión con una clave API, se completará a continuación (enmascarada).
Respuesta
API del cliente v2
Obtener categorías
Todas las categorías principales y sus nombres de subcategorías (para filtrar la <strong>Lista de servicios</strong>).
Parámetros de solicitud
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
key / apikey | Cadena | Tu clave de API | Sí |
action | Cadena | categories | Sí |
Ejemplo de solicitud
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=categories"
Ejemplo de respuesta
{
"categories": [
{
"category": "Social",
"subcategories": ["Premium", "Standard"]
},
{
"category": "Digital goods",
"subcategories": []
}
]
}
Lista de servicios
Productos (servicios) disponibles con stock. Los filtros opcionales utilizan <strong>nombres de categoría / subcategoría</strong> según lo devuelto por Obtener categorías, o pase <code>service</code> para obtener un producto por ID (<code>business_id</code> o ID de MongoDB). El parámetro <code>language</code> controla la localización de <code>name</code>, <code>description</code>, <code>category</code> y <code>subcategory</code> (ver tabla a continuación). <code>limit=0</code> devuelve todos los elementos en una sola respuesta.
Parámetros de solicitud
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
key / apikey | Cadena | Tu clave de API | Sí |
action | Cadena | services | Sí |
page | Número | Número de página (predeterminado <code>1</code>) cuando <code>limit</code> > 0 | No |
limit | Número | Elementos por página; <code>0</code> = devolver todos (predeterminado <code>0</code>) | No |
category | Cadena | Nombre de la categoría principal (de Get Categories) | No |
subcategory | Cadena | Nombre de la subcategoría (de Get Categories) | No |
service | Cadena | Devolver solo este id de servicio/producto (mismo id que en los elementos de la lista) | No |
language | Cadena | Idioma de respuesta: use un código de los códigos de idioma admitidos a continuación (predeterminado <code>en</code>) | No |
Códigos de idioma compatibles (language)
Pase uno de estos valores (sin distinción de mayúsculas/minúsculas para la coincidencia). Si se omite o es <code>en</code>, los campos permanecen en <strong>inglés</strong> (texto fuente almacenado). Cualquier otro código a continuación resuelve traducciones a través de Aitranslator cuando <code>AITRANSLATOR_BASE_URL</code> está configurado; las traducciones faltantes vuelven al inglés hasta que se completen las traducciones en cola.
| Código | Idioma | Nombre nativo |
|---|---|---|
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) | বাংলা |
También aceptado (alias)
Estas cadenas se normalizan a un código principal arriba (mismo grupo de traducción):
| Puedes enviar | Resuelve a |
|---|---|
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 |
<strong>No compatible:</strong> cualquier otro valor de <code>language</code> se trata como inglés (sin traducción). Use los códigos primarios exactos o alias listados aquí.
Ejemplo de solicitud
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 "category=Instagram"
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services" \
-d "service=10042" \
-d "language=zh"
Ejemplo de respuesta
<strong>Predeterminado</strong> (<code>limit</code> omitido o <code>0</code>): todos los servicios en una sola respuesta.
{
"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,
"entityType": "product",
"autoDelivery": true
}
],
"total": 2,
"page": 1,
"limit": 0,
"total_pages": 1
}
<strong>service</strong> es el <code>business_id</code> numérico del producto cuando está configurado; de lo contrario, el id de MongoDB como cadena. Use el mismo valor para <strong>Check Inventory</strong> y <strong>Add Order</strong>. <strong>category</strong> / <strong>subcategory</strong> coinciden con los nombres de <strong>Get Categories</strong> (deje <code>subcategory</code> vacío cuando el producto está vinculado solo a una categoría de nivel superior). <strong>description</strong> es la descripción completa del producto (puede contener HTML del editor del proveedor).
Verificar Inventario
Stock para un servicio (mismo id de <code>service</code> que en la lista de servicios).
Parámetros de solicitud
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
key / apikey | Cadena | Tu clave de API | Sí |
action | Cadena | inventory | Sí |
service | Cadena | Id de servicio/producto de la lista de servicios | Sí |
Ejemplo de solicitud
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=inventory" \
-d "service=10042"
Ejemplo de respuesta
{
"service": 10042,
"stock": 42,
"available": true,
"entityType": "product",
"autoDelivery": true
}
Añadir Pedido
Crea un pedido y paga desde el <strong>saldo de la cuenta</strong>. Se acepta un <code>link</code> opcional por compatibilidad, pero no se almacena en el pedido.
Parámetros de solicitud
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
key / apikey | Cadena | Tu clave de API | Sí |
action | Cadena | add | Sí |
service | Cadena | Id de servicio/producto de la lista de servicios | Sí |
quantity | Número | Cantidad (predeterminado <code>1</code>) | No |
link | Cadena | Opcional (reservado/uso futuro) | No |
Ejemplo de solicitud
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=10042" \
-d "quantity=1"
Ejemplo de respuesta
Estado HTTP <code>201 Created</code>.
{
"order": "000000000000000000000001"
}
El valor <code>order</code> es el <code>ObjectId</code> de MongoDB (cadena). Úselo con <strong>Order Status</strong> (<code>action=status</code>).
Estado del pedido
Parámetros de solicitud
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
key / apikey | Cadena | Tu clave de API | Sí |
action | Cadena | status | Sí |
order | Cadena | Id del pedido devuelto por <code>add</code> | Sí |
Ejemplo de solicitud
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=status" \
-d "order=000000000000000000000001"
Ejemplo de respuesta
{
"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"]
}
Saldo
Parámetros de solicitud
| Parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
key / apikey | Cadena | Tu clave de API | Sí |
action | Cadena | balance | Sí |
Ejemplo de solicitud
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=balance"
Ejemplo de respuesta
{
"balance": "100.00",
"currency": "USD"
}
El saldo es su billetera de <strong>usuario</strong> (usada para compras).
Respuestas de error
Los errores usan una sola cadena <code>error</code>. Credenciales API incorrectas o faltantes generalmente devuelven HTTP <code>401</code> con <code>{"error": "Invalid API key"}</code>; problemas de validación suelen devolver <code>400</code>.
{"error": "Invalid API key"}
{"error": "Invalid action"}
{"error": "Service ID is required"}
{"error": "Service 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"}