API v3

Documentos API

Referencia de API para SMM Africa. Verifique saldos, obtenga servicios, realice pedidos y realice un seguimiento del estado desde un punto final.

URL basehttps://smm.africa/api/v3
FormatoPOST · JSON o campos de formulario · Respuesta JSON
Su clave APIEmitido por cuenta. Sáquelo de la cuenta una vez que inicie sesión.
Inicia sesión para obtener tu clave

Comience con una verificación de saldo

Una solicitud de saldo es la forma más rápida de confirmar su clave, el formato de la solicitud y que la integración funcione de ida y vuelta antes de comenzar a realizar pedidos.

POST /api/v3 · balance
curl --fail-with-body --silent --show-error --max-time 60 \
  -X POST https://smm.africa/api/v3 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SMM_AFRICA_KEY" \
  -d '{
  "action": "balance"
}'
HTTP 200 · balance
{
  "balance": "100.84",
  "currency": "USD"
}

Autenticación

Envíe la clave API de su cuenta en Autorización: Bearer YOUR_API_KEY o como campo de solicitud de clave. Elija un método; el campo de clave funciona con los paneles de revendedor comunes. Guarde las claves en variables de entorno del servidor y rote desde Cuenta.

Todas las acciones usan POST https://smm.africa/api/v3.. Cuerpos admitidos: application/json, application/x-www-form-urlencoded y multipart/form-data con campos de texto únicamente. Las respuestas son JSON. El campo de acción selecciona la operación.

curl · form authentication
curl --fail-with-body --silent --show-error --max-time 60 \
  -X POST https://smm.africa/api/v3 \
  --data-urlencode "key=YOUR_API_KEY" \
  --data-urlencode "action=balance"

Todos los saldos, cargos y montos de pedidos en la versión 3 se devuelven en USD para garantizar la compatibilidad.

Referencia

Referencia completa del punto final

Revise los parámetros de solicitud, las respuestas de muestra y el comportamiento exacto de cada acción admitida.

balance

Verifique el saldo de la billetera vinculado a la clave API del revendedor autenticado.

POST
POST /api/v3 · balance
curl --fail-with-body --silent --show-error --max-time 60 \
  -X POST https://smm.africa/api/v3 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SMM_AFRICA_KEY" \
  -d '{
  "action": "balance"
}'

Parámetros de solicitud

ParámetroTipoObligatorioDescripción y restricciones
keystringCondicionalSu clave API, utilizada para autenticar la solicitud. Obligatorio solo cuando Autorización: Portador no está presente.
actionstringbalance Usar el valor de acción exacto que se muestra.

Ejemplo de respuesta

HTTP 200 · balance
{
  "balance": "100.84",
  "currency": "USD"
}

Todos los saldos, cargos y montos de pedidos en la versión 3 se devuelven en USD para garantizar la compatibilidad.

Ejemplo de respuesta de error

HTTP 400 · balance
{
  "error": "Invalid API key"
}

services

Obtenga el catálogo de servicios SMM Africa en vivo con ID de servicio, precios, límites y marcas de recarga o cancelación.

POST
POST /api/v3 · services
curl --fail-with-body --silent --show-error --max-time 60 \
  -X POST https://smm.africa/api/v3 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SMM_AFRICA_KEY" \
  -d '{
  "action": "services"
}'

Parámetros de solicitud

ParámetroTipoObligatorioDescripción y restricciones
keystringCondicionalSu clave API, utilizada para autenticar la solicitud. Obligatorio solo cuando Autorización: Portador no está presente.
actionstringservices Usar el valor de acción exacto que se muestra.

Ejemplo de respuesta

HTTP 200 · services
[
  {
    "service": 1,
    "name": "Service Name",
    "type": "Default",
    "rate": "0.90",
    "min": "50",
    "max": "10000",
    "category": "First Category",
    "description": "Service Description",
    "refill": true,
    "cancel": true,
    "drop_rate": "Almost No",
    "start_time": "2 mins",
    "speed": "12 mins",
    "reliability": "Poor"
  }
]

Obtenga el catálogo en vivo antes de realizar el pedido porque los ID de servicio, las tarifas, los límites y la disponibilidad pueden cambiar.

Ejemplo de respuesta de error

HTTP 400 · services
{
  "error": "Invalid API key"
}

add

Realice un nuevo pedido de crecimiento de redes sociales con ID de servicio, enlace de destino y cantidad.

POST
POST /api/v3 · add
curl --fail-with-body --silent --show-error --max-time 60 \
  -X POST https://smm.africa/api/v3 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SMM_AFRICA_KEY" \
  -d '{
  "action": "add",
  "service": 1234,
  "link": "https://instagram.com/your-profile",
  "quantity": 500,
  "idempotency_key": "order-unique-001"
}'

Parámetros de solicitud

ParámetroTipoObligatorioDescripción y restricciones
keystringCondicionalSu clave API, utilizada para autenticar la solicitud. Obligatorio solo cuando Autorización: Portador no está presente.
actionstringadd Usar el valor de acción exacto que se muestra.
serviceintegerEl ID del servicio que desea solicitar. Usar un ID de la respuesta del servicio actual; su tipo determina los campos siguientes.
linkstringCondicionalLa URL de perfil, publicación o contenido de destino. Obligatorio para el tipo de servicio seleccionado; proporcionar la URL de destino.
quantityintegerCondicionalLa cantidad que desea pedir. Debe cumplir con los valores mínimo y máximo del servicio seleccionado. Omitir cuando su tipo no acepte cantidad.
idempotency_keystringRecomendadoUse one unique value per logical order. If the request times out without a response, retry with the same value so the order cannot be charged twice. Conservar un valor único por orden lógica; reutilizar solo con una carga útil de reintento idéntica.
Campos por tipo de servicio

Seleccione el tipo devuelto por los servicios; no envíe un campo de tipo por separado. Los valores de la lista son texto separado por saltos de línea, incluso en JSON. La API obtiene la cantidad facturable para comentarios, listas personalizadas, paquetes y suscripciones, y luego verifica los límites del servicio.

Tipo de servicioCampos obligatoriosCampos/restricciones opcionales
Defaultlink, quantityURL de destino estándar y cantidad solicitada.
PackagelinkSin cantidad.
SEOlink, quantity, keywordsColoque una palabra clave en cada línea.
Custom Commentslink, commentsUn comentario por línea; el recuento de comentarios es la cantidad del pedido.
Custom Comments Packagelink, commentsUn comentario por línea; sin cantidad.
Comment Replieslink, username, commentsnombre de usuario es el propietario del comentario; ponga una respuesta por línea.
Comment Likeslink, usernamenombre de usuario es el propietario del comentario; sin cantidad.
Mentionslink, quantity, usernamesPon un nombre de usuario por línea.
Mentions with Hashtagslink, quantity, usernames, hashtagsColoque los nombres de usuario y los hashtags en líneas separadas.
Mentions Custom Listlink, usernamesPon un nombre de usuario por línea; sin cantidad.
Mentions Hashtaglink, quantity, hashtagsPon un hashtag por línea.
Mentions User Followerslink, quantity, usernamenombre de usuario es la URL del perfil de origen que se va a extraer.
Mentions Media Likerslink, quantity, mediamedia es la URL del medio de origen que se va a extraer.
Polllink, quantity, answerla respuesta es el texto exacto de la opción de encuesta que espera el proveedor.
Invites from Groupslink, quantity, groupsPon un grupo en cada línea.
Subscriptionsusername, min, max, delaySin vínculo ni cantidad. posts, old_posts y expired son opcionales. el retraso debe ser 0 o un intervalo de 5 minutos hasta 600; utilice DD/MM/AAAA para el vencimiento.
Web Trafficquantity, country, device, type_of_trafficel dispositivo es móvil o de escritorio. type_of_traffic es 1 (requiere google_keyword), 2 (requiere reference_url) o 3.
Campos de atribución opcionales
ParámetroTipoObligatorioDescripción y restricciones
goal_keystringNoClave de objetivo opcional para atribución de crecimiento guiado. Metadatos de atribución opcionales.
recommendation_tierstringNoNivel de recomendación opcional. Metadatos de atribución opcionales.
user_intent_labelstringNoEtiqueta opcional que describe la intención del usuario. Metadatos de atribución opcionales.
source_flowstringNoIdentificador opcional para el flujo que creó el pedido. Metadatos de atribución opcionales.

Ejemplo de respuesta

HTTP 200 · add
{
  "order": 1000000,
  "charged": 5.85,
  "queued": true
}

Almacene el ID del pedido devuelto y verifique el estado antes de volver a intentar una solicitud de adición.

Ejemplo de respuesta de error

HTTP 400 · add
{
  "error": "Invalid API key"
}

status

Sondea un pedido por ID para leer el estado de entrega, el recuento inicial, los restos y los detalles del cargo.

POST
POST /api/v3 · status
curl --fail-with-body --silent --show-error --max-time 60 \
  -X POST https://smm.africa/api/v3 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SMM_AFRICA_KEY" \
  -d '{
  "action": "status",
  "order": 1000000
}'

Parámetros de solicitud

ParámetroTipoObligatorioDescripción y restricciones
keystringCondicionalSu clave API, utilizada para autenticar la solicitud. Obligatorio solo cuando Autorización: Portador no está presente.
actionstringstatus Usar el valor de acción exacto que se muestra.
orderinteger / stringEl ID del pedido SMM Africa devuelto por add. Conservar el ID de orden devuelto por la función de agregar; no sustituir por un ID de orden del proveedor.

Ejemplo de respuesta

HTTP 200 · status
{
  "order": 1000000,
  "status": "processing",
  "start_count": 3572,
  "remains": 157,
  "charge": 0.27819
}

Sondea los estados en lotes y deja un breve retraso entre las solicitudes.

Ejemplo de respuesta de error

HTTP 400 · status
{
  "error": "Order not found"
}

refill

Solicite una recarga para un pedido elegible dentro de la ventana de recarga publicada.

POST
POST /api/v3 · refill
curl --fail-with-body --silent --show-error --max-time 60 \
  -X POST https://smm.africa/api/v3 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SMM_AFRICA_KEY" \
  -d '{
  "action": "refill",
  "order": 1000000
}'

Parámetros de solicitud

ParámetroTipoObligatorioDescripción y restricciones
keystringCondicionalSu clave API, utilizada para autenticar la solicitud. Obligatorio solo cuando Autorización: Portador no está presente.
actionstringrefill Usar el valor de acción exacto que se muestra.
orderinteger / stringEl ID del pedido SMM Africa devuelto por add. Conservar el ID de orden devuelto por la función de agregar; no sustituir por un ID de orden del proveedor.

Ejemplo de respuesta

HTTP 200 · refill
{
  "order": 1000000,
  "success": "Refill request accepted."
}

La recarga está disponible solo para pedidos elegibles dentro del período de recarga publicado del servicio.

Ejemplo de respuesta de error

HTTP 400 · refill
{
  "error": "Invalid API key"
}

cancel

Solicitar cancelación para un pedido donde el servicio seleccionado admite la cancelación.

POST
POST /api/v3 · cancel
curl --fail-with-body --silent --show-error --max-time 60 \
  -X POST https://smm.africa/api/v3 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SMM_AFRICA_KEY" \
  -d '{
  "action": "cancel",
  "order": 1000000
}'

Parámetros de solicitud

ParámetroTipoObligatorioDescripción y restricciones
keystringCondicionalSu clave API, utilizada para autenticar la solicitud. Obligatorio solo cuando Autorización: Portador no está presente.
actionstringcancel Usar el valor de acción exacto que se muestra.
orderinteger / stringEl ID del pedido SMM Africa devuelto por add. Conservar el ID de orden devuelto por la función de agregar; no sustituir por un ID de orden del proveedor.

Ejemplo de respuesta

HTTP 200 · cancel
{
  "order": 1000000,
  "success": "Cancellation request accepted."
}

La cancelación está disponible solo cuando el servicio seleccionado la admite.

Ejemplo de respuesta de error

HTTP 400 · cancel
{
  "error": "Invalid API key"
}

Errores y reintentos

Verifique el estado HTTP y el campo de error JSON. Los errores de autenticación utilizan HTTP 400; quienes llaman a la API no son redirigidos al inicio de sesión. Registre los errores técnicos de forma privada y muestre a los clientes un mensaje neutral.

HTTP 400 · application/json
{
  "error": "Invalid API key"
}
HTTPError/CondiciónQué hacer
400Invalid API keyVerifique la clave y los campos obligatorios. Corrija la solicitud antes de volver a intentarlo.
402Insufficient balanceDeposite fondos en la billetera de la cuenta antes de volver a enviar el pedido.
409A matching API order request is already being processedEspere antes de volver a intentar la solicitud idéntica con su clave de idempotencia original.
409This idempotency key was already used for a different API order requestRestaure la carga útil original para volver a intentarlo. Utilice una nueva clave sólo para un nuevo orden lógico.
415Unsupported content typeEnvíe JSON, campos de formulario codificados en URL o campos de texto de varias partes.
423Account suspended (message varies)Resolver la restricción de cuenta con soporte; no lo vuelva a intentar repetidamente.
429Too many requests. Please slow down and try again shortly.Espere el intervalo de reintento después y luego vuelva a intentarlo con retroceso.
500 / 503Server failure or temporary unavailability (message varies)Retrocede. Para envíos de pedidos, mantenga la misma carga útil y clave de idempotencia.

Reintente un pedido sin cobrar dos veces

  1. Cree y guarde una clave de idempotencia única para cada pedido lógico antes de enviar la solicitud. Reemplace la clave de ejemplo con su propio valor único.
  2. Espere hasta 60 segundos para la solicitud del servidor. Después de 20 segundos, muestre un mensaje de espera al cliente mientras continúa la solicitud al servidor.
  3. Si no llega respuesta, reintente la misma carga útil con la misma clave después de un tiempo. No genere una nueva clave. Un reintento completado reproduce la respuesta con X-Idempotent-Replay: true.
  4. Una vez que reciba un ID de pedido, guárdelo y use el estado para realizar el seguimiento de ese pedido. Una respuesta en cola significa que se ha aceptado para su procesamiento, no que la entrega se ha completado.

También se admiten los encabezados Idempotency-Key y X-Idempotency-Key. Sin una clave de cliente, aún se puede enviar un pedido, pero reintentar después de un tiempo de espera no permite identificar de forma segura el intento original.

Límites de tarifas

Los límites son específicos de la acción y configurables en la implementación. En HTTP 429, respete Retry-After (segundos). Sin ese encabezado, utilice un retroceso exponencial con fluctuación, por ejemplo, 2, 4, 8 y luego 16 segundos, más un pequeño retraso aleatorio. Limite los reintentos y notifique los fallos persistentes a su operador.

Almacene en caché el catálogo obtenido con POST /api/v3 y action=services. Actualícelo periódicamente y verifique los ID de servicio, las tarifas y las restricciones mínimas/máximas actuales antes de realizar el pedido.

Ciclo de vida del pedido

Envíe action=status con un ID de pedido por solicitud. Como política inicial para el cliente, realice sondeos cada 30 segundos y aumente el intervalo para pedidos de larga duración; respete los límites de velocidad. Distribuya las solicitudes entre los pedidos. Actualmente no se admiten webhooks.

queued → pending → processing
Estados activos: continúe el sondeo. Los pedidos pueden omitir estados intermedios.
completed · partial · refunded · canceled
Estados terminales: detenga el sondeo de entrega rutinario. "Parcial" significa que la entrega fue incompleta; revise el cargo y el saldo restante. Las solicitudes de recarga y cancelación están sujetas a la elegibilidad del servicio y del pedido.
unknown
Estado no reconocido: no lo considere un éxito ni genere un pedido de reemplazo automáticamente. Reintente el estado con retroceso y contacte con soporte si persiste.

Notas de integración para uso en producción

Trate la API como infraestructura. Estas notas cubren las cosas que importan una vez que ejecuta pedidos automatizados, un panel de clientes o una tienda de gran volumen.

Saldo de billetera compartida

Los pedidos directos, los pedidos de tienda y los pedidos de API se obtienen del mismo saldo de billetera. Financialo desde cualquier canal, úsalo desde cualquier canal.

Asegure su clave

Nunca exponga la clave, el nombre de host de API, el nombre del proveedor configurado ni los errores de transporte sin formato en el código del lado del cliente o en los mensajes del escaparate. Llamadas proxy a través de su backend, registra detalles técnicos de forma privada y, después de 20 segundos, muestra a los clientes un texto neutral como: El envío del pedido está tardando más de lo esperado. Revisa tus pedidos antes de volver a intentarlo.

Respuestas rápidas

¿Cómo obtengo una clave API?

Inicie sesión en SMM Africa, abra la cuenta, copie su clave API y gírela desde el mismo lugar en cualquier momento.

¿La API es gratuita?

No hay tarifa API adicional. Sólo paga por los servicios que solicita. La misma billetera financia pedidos directos, pedidos de tienda y pedidos de API.

¿Cuáles son los límites de tarifas?

Los límites son específicos de la acción y pueden cambiar. Espacie las llamadas masivas, las encuestas de estado por lotes y, cuando la API devuelva 429, espere el intervalo de reintento después antes de volver a intentarlo.

¿Cómo debo manejar los reintentos?

Envíe un encabezado Idempotency-Key único o un campo idempotency_key para cada orden de adición lógica. Si la solicitud se agota, vuelva a intentar la carga útil idéntica con la misma clave para que se reproduzca un intento completo sin otro cargo.

¿Existe un webhook?

El sondeo de estado es la ruta admitida actualmente. Presione la acción de estado para los pedidos que está viendo y almacene en caché el resultado en su propio sistema.

¿Qué países son compatibles?

La API está disponible en todo el mundo, con un fuerte soporte para los mercados africanos y financiación de billetera compatible con M-Pesa.

Vocabulario API

Términos que los revendedores deben comprender

API de revendedor
Una interfaz de servidor a servidor que permite que otro panel o flujo de trabajo realice y rastree los pedidos de SMM Africa desde su propia aplicación.
Catálogo de servicios
La lista en vivo de ID de servicio, precios, límites, soporte de recarga y soporte de cancelación utilizados antes de realizar un pedido.
Acción
El campo JSON que elige la operación de API, como saldo, servicios, agregar, estado, recargar o cancelar.
Pedido respaldado por Wallet
Un modelo de pedidos en el que los pedidos directos, de tienda y API se obtienen del mismo saldo financiado de la billetera SMM Africa. URL base