Um endpoint, apenas POST, resposta JSON. O mesmo catálogo e os mesmos preços do painel, a partir do seu site, bot ou planilha.
Gere-a na página da conta. Ela autoriza gastos, então seu lugar é na configuração do servidor. Troque-a se ela alguma vez passou por um navegador, um chat ou uma captura de tela.
A quantidade mínima e máxima é definida individualmente — um serviço começa em 10 unidades, o próximo em 500 000. Leia-as de services e valide antes de enviar um pedido.
Não há etapa de fatura. add só tem sucesso enquanto o saldo cobre o pedido, então consulte balance e pare sua fila antes que ele chegue a zero.
O PerfectPanel e a maioria dos scripts de painel leem esse formato nativamente. No seu admin vá em Providers → Add provider e cole o endereço do site — https://autosmo.com/, só isso, não o endpoint. Adicione sua chave, sincronize o catálogo, defina sua margem.
curl -X POST https://autosmo.com/api/v2 \\
-d key=YOUR_KEY \\
-d action=add \\
-d service=6758 \\
-d link=https://instagram.com/yourprofile \\
-d quantity=100
{"order": 8231455}
curl -X POST https://autosmo.com/api/v2 -d key=YOUR_KEY -d action=status -d order=8231455
{"charge": "0.016", "start_count": "2841", "status": "Completed",
"remains": "0", "currency": "USD"}
O serviço 6758 é um id real do catálogo. Quantidades abaixo do mínimo de um serviço são rejeitadas, não arredondadas para cima.
Cole isto no ChatGPT, Claude ou Cursor, informe sua linguagem, e você obtém um cliente funcional. Ele carrega a lista completa de chamadas mais o comportamento em que é fácil errar.
Build me a client for the AutoSMO SMM API (v2), in a language I will name.
ENDPOINT
POST https://autosmo.com/api/v2 — form-encoded body, JSON response, no other verbs.
Authentication is the field `key`, sent with every call. Server-side only.
CALLS
action=services -> array of { service, name, type, category, rate (per 1000),
min, max, refill:bool, cancel:bool }
action=add params: service, link, quantity [, runs, interval] -> { "order": id }
custom comments: service, link, comments
action=status params: order | orders (comma separated, max 100)
-> { charge, start_count, status, remains, currency }
action=refill params: order | orders (max 100) -> { "refill": id }
action=refill_status params: refill | refills -> { "status": ... }
action=cancel params: orders (max 100)
action=balance -> { balance, currency }
BEHAVIOUR THAT COSTS MONEY IF IGNORED
- A timed-out `add` is not a failed `add`. The order may exist and be paid for.
Surface it for a human; do not resend it on a timer.
- Quantity outside a service's own min/max is refused outright, so read those
bounds from the catalogue and check before sending.
- Status is polled with `orders` and up to 100 ids at once. Per-order polling
works in testing and dies in production.
- A 200 response can still contain per-entry errors when several ids were
requested. Walk the entries; do not trust the envelope.
- "Partial" is a delivery that stopped early: `remains` is the shortfall and
`charge` is the real cost. Pass that difference back to your buyer.
- Refill and cancel exist only where the catalogue flags say so.
WHAT I EXPECT FROM YOU
- One function per call, with the response parsed into typed structures.
- My order reference stored next to the id this API returns.
- Two background jobs: refresh the catalogue, and follow orders still open.
- A rehearsal switch that logs calls without sending them, and a single
end-to-end test using the cheapest service in the catalogue.
Não no JavaScript do front-end, não em um bundle mobile, não em um repositório público. Qualquer um que a tenha pode fazer pedidos contra o seu saldo.
Como add não tem chave de idempotência, uma repetição automática é como um pedido de cliente vira dois pedidos pagos.
Preços, limites e disponibilidade mudam quando os fornecedores mudam os deles. Uma cópia local desatualizada vende por preços que você não tem mais.
Mapeie remains na sua própria lógica de reembolso. Marcar uma entrega parcial como concluída é o jeito mais rápido de ganhar um chargeback.
Faça o menor pedido que o catálogo permite, consulte-o até a conclusão e confirme que o seu lado bate com charge até o centavo antes de desviar o tráfego.
| Método HTTP | POST |
| URL da API | https://autosmo.com/api/v2 |
| Formato da resposta | JSON |
| Parameters | Description |
|---|---|
| key | Your API key |
| action | services |
Exemplo de resposta
[
{
"service": 1,
"name": "Followers",
"type": "Default",
"category": "First Category",
"rate": "0.90",
"min": "50",
"max": "10000",
"refill": true,
"cancel": true
},
{
"service": 2,
"name": "Comments",
"type": "Custom Comments",
"category": "Second Category",
"rate": "8",
"min": "10",
"max": "1500",
"refill": false,
"cancel": true
}
]
Exemplo de resposta
{
"order": 23501
}
| Parameters | Description |
|---|---|
| key | Your API key |
| action | status |
| order | Order ID |
Exemplo de resposta
{
"charge": "0.27819",
"start_count": "3572",
"status": "Partial",
"remains": "157",
"currency": "USD"
}
| Parameters | Description |
|---|---|
| key | Your API key |
| action | status |
| orders | Order IDs (separated by a comma, up to 100 IDs) |
Exemplo de resposta
{
"1": {
"charge": "0.27819",
"start_count": "3572",
"status": "Partial",
"remains": "157",
"currency": "USD"
},
"10": {
"error": "Incorrect order ID"
},
"100": {
"charge": "1.44219",
"start_count": "234",
"status": "In progress",
"remains": "10",
"currency": "USD"
}
}
| Parameters | Description |
|---|---|
| key | Your API key |
| action | refill |
| order | Order ID |
Exemplo de resposta
{
"refill": "1"
}
| Parameters | Description |
|---|---|
| key | Your API key |
| action | refill |
| orders | Order IDs (separated by a comma, up to 100 IDs) |
Exemplo de resposta
[
{
"order": 1,
"refill": 1
},
{
"order": 2,
"refill": 2
},
{
"order": 3,
"refill": {
"error": "Incorrect order ID"
}
}
]
| Parameters | Description |
|---|---|
| key | Your API key |
| action | refill_status |
| refill | Refill ID |
Exemplo de resposta
{
"status": "Completed"
}
| Parameters | Description |
|---|---|
| key | Your API key |
| action | refill_status |
| refills | Refill IDs (separated by a comma, up to 100 IDs) |
Exemplo de resposta
[
{
"refill": 1,
"status": "Completed"
},
{
"refill": 2,
"status": "Rejected"
},
{
"refill": 3,
"status": {
"error": "Refill not found"
}
}
]
| Parameters | Description |
|---|---|
| key | Your API key |
| action | cancel |
| orders | Order IDs (separated by a comma, up to 100 IDs) |
Exemplo de resposta
[
{
"order": 9,
"cancel": {
"error": "Incorrect order ID"
}
},
{
"order": 2,
"cancel": 1
}
]
| Parameters | Description |
|---|---|
| key | Your API key |
| action | balance |
Exemplo de resposta
{
"balance": "100.84292",
"currency": "USD"
}
Exemplo de código PHP