// API REST

Documentación de la API REST

Los endpoints para herramientas usan GET y devuelven JSON con la forma { "status": "success", "data": … }. Autentícate con el parámetro ?api_key= de la página Docs de la API tras iniciar sesión.

Endpoints

URL base: https://mailsmmo.com

GET/api/v1/services

Servicios — precio y stock

Sin ?service= devuelve la lista completa. Con ?service= devuelve el precio y el stock de un servicio. No necesita API key.

Sin autenticación

  • service (opcional) — Déjalo vacío para la lista completa; con un código devuelve un servicio (se aceptan códigos simples como facebook)

Éxito

{ "status": "success", "data": { "services": [
    { "code": "otp_gmail_facebook", "name": "Facebook", "price": 5000, "stock": 42 }
  ] } }

GET/api/v1/me

Información de la cuenta

ID, correo y saldo de la API key que realiza la llamada.

Requiere API key

Éxito

{ "status": "success", "data": { "id": "b7e5...-uuid", "email": "demo@mailsmmo.com", "balance": 1000000, "created_at": "2026-01-15T08:30:00Z" } }

GET/api/v1/orders

Crear pedido

Un solo endpoint para ambos casos: un código de Gmail OTP (otp_gmail_*) emite un buzón OTP; un código de producto de stock (hotmail_*…) compra por cantidad. El saldo se cobra al precio publicado.

Requiere API key

  • service — Código de servicio OTP (otp_gmail_*) o código de producto de stock (p. ej. hotmail_imap_12m_36m)
  • quantity (opcional) — Solo para correos de venta única — cantidad (por defecto 1)
  • unique_key (opcional) — UUID generado por ti — al reenviar no se crea ni se cobra dos veces

Éxito

{ "status": "success", "data": {
    "id": "b7e5a1c2-3d4e-4f60-8a91-2c3d4e5f6a7b", "email": "zurhansuzu@gmail.com",
    "service": "otp_gmail_facebook", "amount": 5000
  } }

GET/api/v1/orders/otp

Obtener OTP por pedido

Lee el OTP de un pedido. No necesita API key: el código de pedido (order_id) es la clave de acceso.

Sin autenticación

  • order_id — Código de pedido (se devuelve al crear el pedido)
  • unique_key (opcional) — Un UUID nuevo generado por ti en cada llamada
  • from (opcional) — Segundos Unix — otp/received_at se omiten salvo que exista un código más reciente

Éxito

{ "status": "success", "data": {
    "otp": "481253", "amount": 5000, "received_at": 1732000000,
    "from": "security@facebookmail.com", "otp_history": [
      { "value": "481253", "received_at": 1732000000 }
    ] } }

GET/api/v1/otp/orders

Lista de pedidos OTP

Pedidos de Gmail OTP alquilados, paginados, con el último OTP de cada pedido.

Requiere API key

  • page (opcional) — Página (por defecto 1)
  • page_size (opcional) — Filas por página (por defecto 20, máx. 200)

Éxito

{ "status": "success", "data": { "orders": [
    { "id": "b7e5a1c2-3d4e-4f60-8a91-2c3d4e5f6a7b", "email": "...", "service": "otp_gmail_facebook",
      "latest_otp": "481253", "latest_link": null }
  ], "page": 1, "page_size": 20, "total": 137 } }

GET/api/v1/mail

Leer todos los mensajes

Todos los mensajes de un buzón, con el OTP/enlace extraído.

Requiere API key

  • order_id — Código de pedido

Éxito

{ "status": "success", "data": { "count": 1, "messages": [
    { "id": 88, "from": "...", "subject": "...", "otp": "481253", "received_at": "..." }
  ] } }

códigos de error comunes

{ "status": "error", "message": "out_of_stock", "retryable": true }
  • unauthorized — La API key no es válida o falta (HTTP 401)
  • invalid_request — Parámetros de la solicitud no válidos (HTTP 400)
  • not_found — Servicio, pedido o endpoint no encontrado (HTTP 404)
  • insufficient_balance — Saldo insuficiente (HTTP 402)
  • out_of_stock — Sin existencias (HTTP 409) — Gmail OTP: retryable, reintenta en unos segundos; correo de venta definitiva: espera la reposición
  • service_unavailable — El servidor no pudo completar el pedido en este momento — reintenta con el mismo unique_key (HTTP 503, retryable)
  • in_progress — El pedido se está finalizando o puede que ya exista en el proveedor — reintenta con el mismo unique_key (HTTP 409, retryable)
  • forbidden — Sin permiso para el recurso (HTTP 403)
  • idempotency_mismatch — El unique_key se usó para otra solicitud — usa un unique_key nuevo (HTTP 422)
  • order_cancelled — El pedido se liberó antes de cobrarse, no se cobró nada — reintenta (HTTP 409, retryable)
  • too_many_requests — Demasiadas solicitudes — espera y reintenta (HTTP 429, retryable)
  • auth_unavailable — No se pudo comprobar la API key en este momento, la clave está bien — reintenta (HTTP 503, retryable)
  • shutting_down — El servidor se está reiniciando — reintenta en unos segundos (HTTP 503, retryable)
  • payload_too_large — El cuerpo de la solicitud es demasiado grande (HTTP 413)
  • internal_server_error — Error del servidor, inténtalo de nuevo más tarde (HTTP 500)

Documentación para IA y herramientas

La documentación completa en Markdown está en https://mailsmmo.com/llms.txt — pégala en Cursor, Claude o ChatGPT para generar el código de integración.

Reintentos seguros con unique_key

Envía un unique_key (un UUID generado por ti) con cada pedido. Si se corta la red, reintenta con el mismo unique_key: obtienes el mismo pedido, sin crear uno nuevo ni cobrar por segunda vez.

Formato de error

En caso de error, la respuesta contiene solo status, message (un código de error en snake_case) y retryable, que indica si debes volver a intentarlo.

Empieza con MailSMMO

Regístrate gratis, recarga tu billetera y alquila tu primer correo en minutos.

Crear cuenta →