Documentação da API do Cliente
Endpoint da API e Autenticação
Todas as chamadas de API do cliente usam um único endpoint HTTP POST. Autentique com key ou apikey (da página de chave de API do seu perfil) mais action para selecionar a operação. O caminho está na raiz do site como /api/v2 — sem prefixo de idioma (ex.: sem /en/ antes de /api).
Envie parâmetros como application/x-www-form-urlencoded (ex.: curl -d) ou como JSON com Content-Type: application/json.
{
"key": "YOUR_API_KEY",
"action": "categories"
}
Nota: Substitua YOUR_API_KEY pela sua própria chave. Nunca coloque chaves de API em URLs, código do lado do cliente ou repositórios públicos. Valores de action suportados: categories, shops, services, inventory, add, status, balance.
As requisições são limitadas por chave de API. Quando excedido, a API retorna HTTP 429 com um cabeçalho Retry-After. Use paginação em listas grandes de serviços (tamanho de página padrão: 50).
Testar API
Escolha uma ação, insira os parâmetros necessários e clique em Enviar Requisição para chamar a API ao vivo. Se você estiver logado com uma chave de API, ela será preenchida abaixo (mascarada).
Resposta
API do Cliente v2
Obter Categorias
Retorna todas as categorias de nível superior e seus nomes de subcategoria. Use esses nomes exatos para filtrar a Lista de Serviços por category e subcategory.
Parâmetros da Requisição
| Parâmetro | Tipo | Descrição | Obrigatório |
|---|---|---|---|
key / apikey | Cadeia de caracteres | Sua chave de API | Sim |
action | Cadeia de caracteres | categories | Sim |
Exemplo de Requisição
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=categories"
Exemplo de Resposta
{
"categories": [
{
"category": "Social",
"subcategories": ["Premium", "Standard"]
},
{
"category": "Digital goods",
"subcategories": []
}
]
}
Lista de Lojas
Retorna todas as lojas de fornecedores públicas que possuem pelo menos um produto ativo e aprovado. Cada item inclui um identificador de shop (ObjectId do fornecedor de 24 caracteres) — passe-o para a Lista de Serviços como shop para listar apenas produtos dessa loja. page e limit opcionais funcionam como na Lista de Serviços (tamanho padrão da página 50, máximo 500).
Parâmetros da Requisição
| Parâmetro | Tipo | Descrição | Obrigatório |
|---|---|---|---|
key / apikey | Cadeia de caracteres | Sua chave de API | Sim |
action | Cadeia de caracteres | shops | Sim |
page | Número | Número da página (padrão 1) quando limit > 0 | No |
limit | Número | Itens por página; 0 = retornar todos (padrão 0) | No |
Exemplo de Requisição
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=shops"
Exemplo de Resposta
{
"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
}
Lista de Serviços
Retorna produtos (serviços) vendáveis com estoque, preços, métricas de vendas, estatísticas de avaliações, timestamps e uma flag available indicando se cada item pode ser pedido agora (estoque atende à quantidade mínima de compra). Cada item inclui sales_count, rating, review_count, created_at e updated_at. Filtre pelos nomes de categoria / subcategoria de Get Categories, por shop de Shops List, ou passe service para buscar um item pelo seu ID de serviço (o valor service das respostas de lista). Use language para localizar name, description, category e subcategory (veja a tabela abaixo). O entityType opcional limita o tipo de produto; o sort opcional ordena os resultados antes da paginação. Defina limit=0 para retornar todos os itens correspondentes em uma única resposta.
Parâmetros da Requisição
| Parâmetro | Tipo | Descrição | Obrigatório |
|---|---|---|---|
key / apikey | Cadeia de caracteres | Sua chave de API | Sim |
action | Cadeia de caracteres | services | Sim |
page | Número | Número da página (padrão 1) quando limit > 0 | No |
limit | Número | Itens por página; 0 = retornar todos (padrão 0) | No |
shop | Cadeia de caracteres | ID da loja da Lista de Lojas (campo shop — ObjectId do fornecedor com 24 caracteres). Alias: shop_id. Omita para retornar produtos de todas as lojas. | No |
category | Cadeia de caracteres | Nome da categoria pai (de Obter Categorias) | No |
subcategory | Cadeia de caracteres | Nome da subcategoria (de Obter Categorias) | No |
entityType | Cadeia de caracteres | Filtro de tipo de produto: product (padrão, itens de catálogo padrão) ou smm (serviços de crescimento social) | No |
sort | Cadeia de caracteres | Ordem de classificação: created_at (padrão, mais recentes primeiro), price_asc, price_desc, sales, rating | No |
service | Cadeia de caracteres | Retorna um serviço por ID (mesmo valor de service das respostas da lista) | No |
language | Cadeia de caracteres | Idioma da resposta — use um código da lista de códigos de idioma suportados abaixo (padrão en) | No |
Códigos de idioma suportados (language)
Passe um desses valores (sem distinção de maiúsculas/minúsculas). Se omitido ou en, os campos de texto permanecem em Inglês (o idioma de origem armazenado no catálogo). Outros códigos suportados retornam name, description, category e subcategory traduzidos quando as traduções estão disponíveis; caso contrário, o inglês é usado.
| Código | Idioma | Nome 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) | বাংলা |
Também aceito (apelidos)
Essas strings são normalizadas para um código primário acima (mesmo bucket de tradução):
| Você pode enviar | Resolve para |
|---|---|
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 |
Não suportado: qualquer outro valor de language é tratado como inglês (sem tradução). Use os códigos primários exatos ou aliases listados aqui.
Exemplo de Requisição
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.
Exemplo de Resposta
Padrão (limit omitido ou 0): todos os serviços em uma resposta.
{
"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 — o identificador do serviço em cada item da lista: um ID numérico de catálogo quando atribuído, caso contrário, uma string gerada pelo sistema. Use o mesmo valor para Check Inventory (separado por vírgulas para múltiplos IDs) e Add Order. rate é o preço unitário que você paga por esse serviço (inclui qualquer desconto de comprador específico do fornecedor configurado para sua conta; caso contrário, o preço de tabela). available — indica se o serviço pode ser pedido agora (vendável e estoque atende à quantidade mínima de compra). Mesmo significado que em Check Inventory; saldo da carteira e códigos de cupom ainda são validados quando você chama Add Order. category / subcategory correspondem aos nomes de Get Categories (subcategory fica vazio quando o produto pertence apenas a uma categoria de nível superior). description pode conter rich text ou HTML da listagem do produto. sales_count — total de unidades vendidas (acumulado). rating — pontuação média das avaliações visíveis (0.00 quando não há avaliações). review_count — número de avaliações visíveis. created_at / updated_at — data de criação e última atualização do produto (ISO 8601).
Verificar Estoque
Retorna o estoque atual de um ou mais serviços. Passe um único ID de service ou vários IDs separados por vírgulas (ex.: 10054,0665,13541). Use os mesmos valores de service de Services List. O campo available usa as mesmas regras de Services List (vendável e estoque atende à quantidade mínima de compra). Um único ID retorna um objeto; múltiplos IDs retornam um array inventory.
Parâmetros da Requisição
| Parâmetro | Tipo | Descrição | Obrigatório |
|---|---|---|---|
key / apikey | Cadeia de caracteres | Sua chave de API | Sim |
action | Cadeia de caracteres | inventory | Sim |
service | Cadeia de caracteres | Um ou mais IDs de serviço da lista de serviços, separados por vírgula (ex.: 10054,0665,13541; máximo de 50 por requisição) | Sim |
Exemplo de Requisição
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=inventory" \
-d "service=10054,0665,13541"
Exemplo de Resposta
Quando um único ID de service é fornecido, a resposta é um objeto (HTTP 404 se não encontrado):
{
"service": 10042,
"stock": 42,
"available": true,
"entityType": "product",
"autoDelivery": true
}
Quando vários IDs separados por vírgula são fornecidos, a resposta envolve os itens em um array inventory (HTTP 200; serviços ausentes incluem um campo error):
{
"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"
}
]
}
Adicionar Pedido
Cria um pedido e debita do seu saldo da conta. Requer um ID de service válido e quantity.
Parâmetros da Requisição
| Parâmetro | Tipo | Descrição | Obrigatório |
|---|---|---|---|
key / apikey | Cadeia de caracteres | Sua chave de API | Sim |
action | Cadeia de caracteres | add | Sim |
service | Cadeia de caracteres | ID do serviço da lista de serviços (campo service) | Sim |
quantity | Número | Quantidade (padrão 1) | No |
link | Cadeia de caracteres | Campo de URL opcional (aceito para compatibilidade; não armazenado) | No |
coupon_code / coupon | Cadeia de caracteres | Código de cupom opcional (alias: coupon) | No |
Exemplo de Requisição
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=10042" \
-d "quantity=1"
Exemplo de Resposta
Status HTTP 201 Created.
{
"order": "000000000000000000000001",
"charge": "9.99",
"currency": "USD"
}
O campo order é o identificador único do pedido (string). charge é o valor total debitado da sua carteira (após desconto de comprador, desconto de login e cupom, quando aplicável). currency é sempre USD. Passe order para Order Status (action=status).
Status do Pedido
Retorna o progresso da entrega, status da entrega e credenciais entregues (quando aplicável) para um pedido que você fez. Requer o identificador order de Adicionar Pedido.
Parâmetros da Requisição
| Parâmetro | Tipo | Descrição | Obrigatório |
|---|---|---|---|
key / apikey | Cadeia de caracteres | Sua chave de API | Sim |
action | Cadeia de caracteres | status | Sim |
order | Cadeia de caracteres | Identificador do pedido retornado por add | Sim |
Exemplo de Requisição
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=status" \
-d "order=000000000000000000000001"
Exemplo de Resposta
{
"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
Retorna o saldo atual da sua carteira de cliente e a moeda. Nenhum parâmetro adicional é necessário além da autenticação.
Parâmetros da Requisição
| Parâmetro | Tipo | Descrição | Obrigatório |
|---|---|---|---|
key / apikey | Cadeia de caracteres | Sua chave de API | Sim |
action | Cadeia de caracteres | balance | Sim |
Exemplo de Requisição
curl -X POST https://accplanet.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=balance"
Exemplo de Resposta
{
"balance": "100.00",
"currency": "USD"
}
Retorna o saldo disponível na sua carteira de cliente (usado para pagar pedidos).
Respostas de Erro
Erros usam uma única string error. Credenciais de API erradas ou ausentes geralmente retornam HTTP 401 com {"error": "Invalid API key"}; problemas de validação geralmente retornam 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"}