RQE Docs
API Reference

Activity

Listar envíos con filtros de estado, tracking y atribución.

Consulta el estado de emails enviados — entregas, aperturas, clicks, rebotes y reclamos — por ID o con filtros.

Si necesitas eventos en tiempo real (no en pull), usa Webhooks en su lugar.

Autenticacion

Authorization: Bearer sk_proj_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Endpoints

GET /v1/activity/:id

Retorna el detalle de un envio especifico. Usa este endpoint cuando ya conoces el activity_id (lo recibes en los webhooks email.* o lo guardas al enviar).

Request:

curl https://api.reallyquickemails.com/v1/activity/e5522dde-33c7-4644-bf0a-28ec73830616 \
  -H "Authorization: Bearer sk_proj_..."

Query params:

ParamValoresDescripcion
includeevents, html, events,htmlIncluye el timeline completo de eventos y/o el HTML renderizado del email

Response (200):

{
  "success": true,
  "data": {
    "id": "e5522dde-33c7-4644-bf0a-28ec73830616",
    "created_at": "2026-04-17T16:40:20.623Z",
    "email_type": "automation",
    "campaign_id": null,
    "automation_run_id": "e42c853c-2e28-40cc-aad8-5de7d5395ede",
    "template_id": "bb164399-3ac3-475f-9acb-dc049a20d0d3",
    "message_id": "0100019d9c5098e5-888cac99-cd05-4882-9442-d293c98631fc-000000",
    "subject": "Test",
    "sender_email": "antonia@capitaria.com",
    "sender_name": "Antonia",
    "recipient_primary": "harold@dropout.cl",
    "current_status": "delivered",
    "delivered_at": "2026-04-17T16:40:21.813Z",
    "bounced_at": null,
    "complained_at": null,
    "opened_first_at": "2026-04-17T16:41:55.099Z",
    "clicked_first_at": "2026-04-17T17:30:17.645Z"
  }
}

Campos:

CampoTipoDescripcion
iduuidactivity_id — usalo para llamadas posteriores
current_statusstringEstado actual: queued, sent, delivered, bounced, complained
delivered_atISO8601 | nullTimestamp de entrega confirmada por SES
opened_first_atISO8601 | nullPrimera apertura (puede haber varias, ver ?include=events)
clicked_first_atISO8601 | nullPrimer click (idem)
bounced_atISO8601 | nullTimestamp del rebote (hard o soft)
complained_atISO8601 | nullTimestamp cuando el destinatario marco como spam
message_idstringSES MessageId — util para correlacionar con SES logs

Con ?include=events — agrega un array events con el timeline completo:

{
  "success": true,
  "data": {
    ... campos base ...,
    "events": [
      {
        "id": "uuid",
        "event_type": "delivered",
        "event_timestamp": "2026-04-17T16:40:21.813Z",
        "user_agent": null,
        "ip_address": null,
        "url_clicked": null,
        "bounce_type": null,
        "bounce_subtype": null,
        "complaint_feedback_type": null,
        "created_at": "2026-04-17T16:40:22.000Z"
      },
      {
        "id": "uuid",
        "event_type": "open",
        "event_timestamp": "2026-04-17T16:41:55.099Z",
        "user_agent": "Mozilla/5.0 ...",
        "ip_address": "66.249.84.135",
        "url_clicked": null,
        ...
      },
      {
        "id": "uuid",
        "event_type": "click",
        "event_timestamp": "2026-04-17T17:30:17.645Z",
        "user_agent": "Mozilla/5.0 ...",
        "ip_address": "190.xx.xx.xx",
        "url_clicked": "https://landing.capitaria.com/masterclass",
        ...
      }
    ]
  }
}

event_type puede ser: send, delivered, bounce, complaint, reject, open, click.

Con ?include=html — agrega el HTML completo renderizado (grande, solo usar cuando se necesite).

Errores:

CodigoCausa
404activity_id no existe o no pertenece al proyecto
401API key invalida

GET /v1/activity

Lista envios con filtros. Util para jalar datasets de entrenamiento (modelo NBA, scoring, etc.).

Request:

curl "https://api.reallyquickemails.com/v1/activity?email=jane@acme.com&status=delivered&since=2026-04-01" \
  -H "Authorization: Bearer sk_proj_..."

Query params:

ParamTipoDescripcion
emailstringFiltra por recipient_primary (se normaliza a lowercase)
statusstringsent, delivered, bounced, complained
automation_run_iduuidTodos los emails generados por un enrollment especifico
campaign_iduuidTodos los emails enviados como parte de una campana
sinceISO8601created_at >= since
untilISO8601created_at <= until
pageintDefault 1
per_pageintDefault 50, max 200

Caso tipico con automation_run_id: despues de llamar POST /v1/automations/:id/enroll, guardas el automation_run_id devuelto. Mas tarde, cuando el flujo haya ejecutado N emails, podes jalarlos todos con:

curl "https://api.reallyquickemails.com/v1/activity?automation_run_id=<RUN_ID>" \
  -H "Authorization: Bearer sk_proj_..."

Response (200):

{
  "success": true,
  "data": [
    { "id": "...", "subject": "...", "current_status": "delivered", ... },
    { "id": "...", "subject": "...", "current_status": "opened", ... }
  ],
  "pagination": {
    "page": 1,
    "per_page": 50,
    "total": 1423,
    "total_pages": 29
  }
}

Orden: created_at DESC (mas reciente primero).


Pull vs Webhook

  • Pull (este endpoint): tu sistema consulta cuando necesite. Simple de integrar, pero con latencia — los opened_first_at pueden tardar hasta ~5s en aparecer despues de que el destinatario abre el email (buffer interno).
  • Webhook: eventos push en tiempo real cuando ocurren. Mejor para triggers reactivos. Ver Webhooks.

Para entrenamiento de modelos (batch), pull es el patron correcto. Para automatizaciones reactivas (NBA en tiempo real), usa webhooks.

Rate limits

  • 10,000 requests/minuto por API key.
  • Max 200 resultados por pagina en GET /v1/activity.

On this page