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.
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.
Su clave API, utilizada para autenticar la solicitud. Obligatorio solo cuando Autorización: Portador no está presente.
action
string
Sí
add Usar el valor de acción exacto que se muestra.
service
integer
Sí
El ID del servicio que desea solicitar. Usar un ID de la respuesta del servicio actual; su tipo determina los campos siguientes.
link
string
Condicional
La URL de perfil, publicación o contenido de destino. Obligatorio para el tipo de servicio seleccionado; proporcionar la URL de destino.
quantity
integer
Condicional
La 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_key
string
Recomendado
Use 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 servicio
Campos obligatorios
Campos/restricciones opcionales
Default
link, quantity
URL de destino estándar y cantidad solicitada.
Package
link
Sin cantidad.
SEO
link, quantity, keywords
Coloque una palabra clave en cada línea.
Custom Comments
link, comments
Un comentario por línea; el recuento de comentarios es la cantidad del pedido.
Custom Comments Package
link, comments
Un comentario por línea; sin cantidad.
Comment Replies
link, username, comments
nombre de usuario es el propietario del comentario; ponga una respuesta por línea.
Comment Likes
link, username
nombre de usuario es el propietario del comentario; sin cantidad.
Mentions
link, quantity, usernames
Pon un nombre de usuario por línea.
Mentions with Hashtags
link, quantity, usernames, hashtags
Coloque los nombres de usuario y los hashtags en líneas separadas.
Mentions Custom List
link, usernames
Pon un nombre de usuario por línea; sin cantidad.
Mentions Hashtag
link, quantity, hashtags
Pon un hashtag por línea.
Mentions User Followers
link, quantity, username
nombre de usuario es la URL del perfil de origen que se va a extraer.
Mentions Media Likers
link, quantity, media
media es la URL del medio de origen que se va a extraer.
Poll
link, quantity, answer
la respuesta es el texto exacto de la opción de encuesta que espera el proveedor.
Invites from Groups
link, quantity, groups
Pon un grupo en cada línea.
Subscriptions
username, min, max, delay
Sin 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 Traffic
quantity, country, device, type_of_traffic
el 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ámetro
Tipo
Obligatorio
Descripción y restricciones
goal_key
string
No
Clave de objetivo opcional para atribución de crecimiento guiado. Metadatos de atribución opcionales.
recommendation_tier
string
No
Nivel de recomendación opcional. Metadatos de atribución opcionales.
user_intent_label
string
No
Etiqueta opcional que describe la intención del usuario. Metadatos de atribución opcionales.
source_flow
string
No
Identificador opcional para el flujo que creó el pedido. Metadatos de atribución opcionales.
Su clave API, utilizada para autenticar la solicitud. Obligatorio solo cuando Autorización: Portador no está presente.
action
string
Sí
status Usar el valor de acción exacto que se muestra.
order
integer / string
Sí
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.
Su clave API, utilizada para autenticar la solicitud. Obligatorio solo cuando Autorización: Portador no está presente.
action
string
Sí
refill Usar el valor de acción exacto que se muestra.
order
integer / string
Sí
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.
Su clave API, utilizada para autenticar la solicitud. Obligatorio solo cuando Autorización: Portador no está presente.
action
string
Sí
cancel Usar el valor de acción exacto que se muestra.
order
integer / string
Sí
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.
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"
}
HTTP
Error/Condición
Qué hacer
400
Invalid API key
Verifique la clave y los campos obligatorios. Corrija la solicitud antes de volver a intentarlo.
402
Insufficient balance
Deposite fondos en la billetera de la cuenta antes de volver a enviar el pedido.
409
A matching API order request is already being processed
Espere antes de volver a intentar la solicitud idéntica con su clave de idempotencia original.
409
This idempotency key was already used for a different API order request
Restaure la carga útil original para volver a intentarlo. Utilice una nueva clave sólo para un nuevo orden lógico.
415
Unsupported content type
Envíe JSON, campos de formulario codificados en URL o campos de texto de varias partes.
423
Account suspended (message varies)
Resolver la restricción de cuenta con soporte; no lo vuelva a intentar repetidamente.
429
Too many requests. Please slow down and try again shortly.
Espere el intervalo de reintento después y luego vuelva a intentarlo con retroceso.
500 / 503
Server 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
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.
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.
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.
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