Desenvolvedores

API v2

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.

Quatro coisas para saber primeiro

01

Sua chave é sua carteira

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.

02

Os limites são por serviço

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.

03

Os pedidos gastam o saldo

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.

04

Já tem um painel? Sem código

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 sitehttps://autosmo.com/, só isso, não o endpoint. Adicione sua chave, sincronize o catálogo, defina sua margem.

Uma requisição, do início ao fim

exemplo resolvido
faça um pedido e leia-o de volta
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.

Entregue a um agente

copiar & colar

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.

prompt de integração
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.

Checklist antes de entrar no ar

A chave não está em nada que um cliente possa abrir

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.

Os timeouts entram na fila para um humano, não são repetidos

Como add não tem chave de idempotência, uma repetição automática é como um pedido de cliente vira dois pedidos pagos.

Sua cópia do catálogo é atualizada conforme um cronograma

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.

Pedidos parciais chegam ao seu cliente como parciais

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.

Você acompanhou um pedido real do começo ao fim

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.

Referência completa, gerada pelo painel

API

Método HTTP POST
URL da API https://autosmo.com/api/v2
Formato da resposta JSON

Service list

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
    }
]

Add order

Exemplo de resposta

{
    "order": 23501
}

Order status

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"
}

Multiple orders status

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"
    }
}

Create refill

Parameters Description
key Your API key
action refill
order Order ID

Exemplo de resposta

{
    "refill": "1"
}

Create multiple refill

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"
        }
    }
]

Get refill status

Parameters Description
key Your API key
action refill_status
refill Refill ID

Exemplo de resposta

{
    "status": "Completed"
}

Get multiple refill status

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"
        }
    }
]

Create cancel

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
    }
]

User balance

Parameters Description
key Your API key
action balance

Exemplo de resposta

{
    "balance": "100.84292",
    "currency": "USD"
}
Exemplo de código PHP