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.

Desde la conexión API hasta tu primer pedido

Sigue estos pasos a tu propio ritmo. Esta guía nunca envía un pedido ni carga su billetera.

1 / 6 · Connect your account

Open your account and obtain your API key. Keep it on your server. Use the balance example to check authentication without creating a paid order.

Open connection example

Tu primer pedido de revendedor

¿Por qué los pagos de mis clientes están separados de mi billetera SMM.Africa?

Su cliente paga su negocio según su propio acuerdo. Su billetera SMM.Africa paga los pedidos que envía aquí. Cobrar el pago de un cliente no financia automáticamente esa billetera, y un reembolso de billetera no reembolsa automáticamente a su cliente. Concilie los dos registros por separado, incluidas las tarifas y cualquier reembolso aprobado al cliente.

Abrir esta respuesta
¿Cómo debo realizar mi primer pedido de API de revendedor?

Comience con los ejemplos de autenticación y saldo de API, luego revise el servicio, el formato objetivo, los límites y el precio. Utilice un objetivo que controle y una cantidad dentro de los límites establecidos. La acción de agregar gasta el saldo de la billetera. Guarde el ID del pedido devuelto y verifique su estado. Lea la documentación API actual antes de elegir una estrategia de reintento.

Abrir esta respuesta
¿Debo enviar otro pedido de API si la primera solicitud caduca?

Primero verifique si la solicitud original creó un pedido. Un tiempo de espera puede dejar el resultado incierto incluso cuando el procesamiento se realizó correctamente. Conserve la referencia de la solicitud y cualquier ID del pedido, y utilice el mecanismo de idempotencia documentado cuando sea compatible. No genere una nueva solicitud paga simplemente porque falta la primera respuesta; Póngase en contacto con el servicio de asistencia si el resultado no está claro.

Abrir esta respuesta

Lea la guía completa

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.
actionstringSíbalance 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",
  "code": "INVALID_API_KEY",
  "request_id": "request-123",
  "retryable": false
}

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.
actionstringSíservices 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": "Start: 2 mins | Speed: 1000/day",
    "refill": true,
    "cancel": true,
    "drop_rate": "Almost No",
    "start_time": "2 mins",
    "speed": "1000/day",
    "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",
  "code": "INVALID_API_KEY",
  "request_id": "request-123",
  "retryable": false
}

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,
  "max_charge": 5,
  "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.
actionstringSíadd Usar el valor de acción exacto que se muestra.
serviceintegerSíEl 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.
max_chargenumber / decimal stringNoOptional maximum USD charge, including discounts, with up to six decimal places. PRICE_LIMIT_EXCEEDED (409) creates no order or debit. Changing a ceiling changes request intent. Cargo máximo permitido en USD, con un máximo de seis decimales.
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.
Web Trafficlink, quantity, 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",
  "code": "INVALID_API_KEY",
  "request_id": "request-123",
  "retryable": false
}

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",
  "orders": [
    "1000000",
    "1000001"
  ]
}'

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.
actionstringSístatus Usar el valor de acción exacto que se muestra.
orderinteger / stringSíEl 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.
ordersarray / stringCondicionalFor bulk status, send 1–20 IDs as a JSON array or comma-separated form string instead of order. Inspect each item's http_status and retry_after. Usa order u orders, nunca ambos. Cada elemento del lote tiene su propio http_status.

Ejemplo de respuesta

HTTP 200 · status
{
  "orders": [
    {
      "order": 1000000,
      "status": "processing",
      "start_count": 3572,
      "remains": 157,
      "charge": 0.27819,
      "updated_at": "2026-10-15T12:00:00Z",
      "freshness": "fresh",
      "reason_code": null,
      "retryable": false,
      "automatic_retry": false,
      "can_cancel": false,
      "funds_state": "captured",
      "next_retry_at": null,
      "refund_deadline_at": null,
      "http_status": 200
    },
    {
      "order": "1000001",
      "http_status": 400,
      "error": "Order not found",
      "code": "ORDER_NOT_FOUND",
      "request_id": "request-123",
      "retryable": false
    }
  ]
}

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",
  "code": "ORDER_NOT_FOUND",
  "request_id": "request-123",
  "retryable": false
}

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,
  "idempotency_key": "refill-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.
actionstringSírefill Usar el valor de acción exacto que se muestra.
orderinteger / stringSíEl 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",
  "code": "INVALID_API_KEY",
  "request_id": "request-123",
  "retryable": false
}

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,
  "idempotency_key": "cancel-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.
actionstringSícancel Usar el valor de acción exacto que se muestra.
orderinteger / stringSíEl 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",
  "code": "INVALID_API_KEY",
  "request_id": "request-123",
  "retryable": false
}

Crea y prueba tu integración

Consulta el saldo, obtén los servicios, selecciona el tipo, guarda un identificador de operación, envía el pedido, guarda su identificador y consulta su estado. Los precios son en USD; las tarifas son por 1.000 unidades o por paquete según el servicio. Trata los identificadores como cadenas opacas. Las cadenas decimales y los campos monetarios numéricos conservan sus tipos; los cargos usan seis decimales de USD.

Los clientes de Node.js y PHP 3.3 guardan claves de operación y respuestas correctas, respetan Retry-After y detienen las modificaciones sin resolver antes de que venza el plazo de repetición de 24 horas. Mantén el estado privado, persistente y separado para cada cuenta. Prueba primero con el entorno local, sin conexión a monederos ni proveedores reales.

Node.js 3.3 · PHP 3.3 · Entorno de pruebas · Guía de integración · Verificador de firma del webhook

Local sandbox · Node 22+
node sandbox.mjs
# Endpoint: http://127.0.0.1:4013/api/v3
# Key: sandbox_test_key (never use a live key)

webhook_set

Configura un receptor HTTPS verificado por cuenta. Requiere activación en el despliegue. Genera un secreto base64url aleatorio de 32–128 caracteres. Verifica X-SMM-Signature y devuelve el desafío webhook.verify en JSON. La reconfiguración invalida los eventos pendientes anteriores.

POST /api/v3 · webhook_set
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": "webhook_set",
  "url": "https://example.com/smm-webhook",
  "secret": "REPLACE_WITH_RANDOM_BASE64URL_SECRET"
}'
HTTP 200 · webhook_set
{
  "webhook": {
    "url": "https://example.com/smm-webhook",
    "enabled": true
  }
}

webhook_status

Consulta la URL actual, el estado de activación y la fecha de actualización. El secreto de firma nunca se devuelve.

POST /api/v3 · webhook_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": "webhook_status"
}'
HTTP 200 · webhook_status
{
  "webhook": {
    "url": "https://example.com/smm-webhook",
    "enabled": true,
    "updated_at": "2026-10-15T12:00:00Z"
  }
}

webhook_disable

Desactiva los futuros envíos. Una solicitud HTTP que ya esté en curso puede terminar.

POST /api/v3 · webhook_disable
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": "webhook_disable"
}'
HTTP 200 · webhook_disable
{
  "webhook": {
    "enabled": false
  }
}

webhook_deliveries

Lea hasta 20 entregas, su carga útil, intentos, último estado HTTP y hora del próximo intento. Pase after=next_cursor para las páginas siguientes. El historial se conserva durante 30 días.

POST /api/v3 · webhook_deliveries
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": "webhook_deliveries"
}'
HTTP 200 · webhook_deliveries
{
  "deliveries": [],
  "next_cursor": null
}

webhook_replay

Vuelve a poner en cola un evento entregado o fallido para la misma versión del receptor. Se conserva el identificador del evento. Los consumidores deben eliminar duplicados; la repetición nunca repite un pedido ni una modificación del monedero.

POST /api/v3 · webhook_replay
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": "webhook_replay",
  "event": "evt_123"
}'
HTTP 200 · webhook_replay
{
  "event": "evt_123",
  "queued": true
}

Verifica y concilia los eventos de pedidos

La firma X-SMM contiene t=UNIX_SECONDS,v1=HEX_HMAC_SHA256. Firmar marca de tiempo + "." + el cuerpo exacto de la solicitud sin procesar con su secreto. Utilice la comparación de tiempo constante y rechace las marcas de tiempo de más de cinco minutos de su reloj. Conserve cada ID de evento antes de devolver 2xx. La entrega es al menos una vez y puede llegar fuera de servicio. Los eventos cubren la actividad de los pedidos de la cuenta, incluidos los pedidos del sitio web. Obtener el estado de los detalles actuales de entrega y reembolso; Las encuestas siguen siendo la opción alternativa para la reconciliación. Reintentos de entrega fallidos hasta ocho veces con retroceso; las redirecciones son rechazadas.

order.updated
{
  "id": "evt_123",
  "type": "order.updated",
  "api_version": "3.3",
  "created_at": "2026-10-15T12:00:00Z",
  "data": {
    "order": "1000000",
    "status": "completed"
  }
}

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",
  "code": "INVALID_API_KEY",
  "request_id": "request-123",
  "retryable": false
}

Añadir respuesta de repetición durante 24 horas. Después del vencimiento, la misma clave puede crear otra orden: conciliar primero. REQUEST_IN_PROGRESS permite la misma solicitud/clave después de Reintentar después. IDEMPOTENCY_CONFLICT requiere restaurar la carga útil original. ACTION_OUTCOME_UNCONFIRMED requiere revisión de soporte: nunca cambie las claves para evitarlo. PRICE_LIMIT_EXCEEDED significa que no se realizó ningún débito ni pedido. Registre request_id (también X-Request-Id) para obtener asistencia.

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