Desarrolladores

API v2

Un solo endpoint, solo POST, respuesta JSON. El mismo catálogo y los mismos precios del panel, desde tu propio sitio, bot o hoja de cálculo.

Cuatro cosas que conviene saber primero

01

Tu clave es tu cartera

Genérala en la página de la cuenta. Autoriza el gasto, así que su lugar está en la configuración del servidor. Rótala si alguna vez pasó por un navegador, un chat o una captura de pantalla.

02

Los límites son por servicio

La cantidad mínima y máxima se fija de forma individual: un servicio empieza en 10 unidades y el siguiente en 500 000. Léelos desde services y valídalos antes de enviar un pedido.

03

Los pedidos gastan el saldo

No hay paso de factura. add solo funciona mientras el saldo cubre el pedido, así que consulta balance y detén tu cola antes de que llegue a cero.

04

¿Ya tienes un panel? Sin código

PerfectPanel y la mayoría de scripts de panel leen este formato de forma nativa. En tu admin ve a Providers → Add provider y pega la dirección del sitiohttps://autosmo.com/, solo eso, no el endpoint. Añade tu clave, sincroniza el catálogo y fija tu margen.

Una petición, de principio a fin

ejemplo práctico
haz un pedido y vuelve a leerlo
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"}

El servicio 6758 es un id real del catálogo. Las cantidades por debajo del mínimo de un servicio se rechazan, no se redondean hacia arriba.

Pásaselo a un agente

copiar & pegar

Pega esto en ChatGPT, Claude o Cursor, indica tu lenguaje y obtendrás un cliente funcional. Lleva la lista completa de llamadas más el comportamiento que es fácil de equivocar.

prompt de integración
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.

Lista de verificación antes de salir en producción

La clave no está en nada que un cliente pueda abrir

Ni en el JavaScript del front-end, ni en un paquete móvil, ni en un repositorio público. Cualquiera que la tenga puede hacer pedidos contra tu saldo.

Los tiempos de espera se ponen en cola para un humano, no se reintentan

Como add no tiene clave de idempotencia, un reintento automático es la forma en que un pedido de un cliente se convierte en dos pedidos pagados.

Tu copia del catálogo se actualiza según un calendario

Las tarifas, los límites y la disponibilidad cambian cuando los proveedores cambian los suyos. Una copia local desactualizada vende a precios que ya no tienes.

Los pedidos parciales llegan a tu cliente como parciales

Integra remains en tu propia lógica de reembolsos. Marcar una entrega parcial como completada es la vía más rápida para ganarte un contracargo.

Has seguido un pedido real de principio a fin

Haz el pedido más pequeño que permita el catálogo, consúltalo hasta que se complete y confirma que tu lado coincide con charge al céntimo antes de derivar el tráfico.

Referencia completa, generada por el panel

API

Método HTTP POST
URL de la API https://autosmo.com/api/v2
Formato de respuesta JSON

Service list

Parameters Description
key Your API key
action services

Ejemplo de respuesta

[
    {
        "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

Ejemplo de respuesta

{
    "order": 23501
}

Order status

Parameters Description
key Your API key
action status
order Order ID

Ejemplo de respuesta

{
    "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)

Ejemplo de respuesta

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

Ejemplo de respuesta

{
    "refill": "1"
}

Create multiple refill

Parameters Description
key Your API key
action refill
orders Order IDs (separated by a comma, up to 100 IDs)

Ejemplo de respuesta

[
    {
        "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

Ejemplo de respuesta

{
    "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)

Ejemplo de respuesta

[
    {
        "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)

Ejemplo de respuesta

[
    {
        "order": 9,
        "cancel": {
            "error": "Incorrect order ID"
        }
    },
    {
        "order": 2,
        "cancel": 1
    }
]

User balance

Parameters Description
key Your API key
action balance

Ejemplo de respuesta

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