Skip to content

API de otorgamientos

Crea y gestiona otorgamientos de insignias (assertions) — insignias emitidas a destinatarios concretos.

Todos los endpoints requieren autenticación vía la cabecera X-Api-Key. Consulta Autenticación.

Crear otorgamiento

Emite una insignia a un destinatario.

POST /awards

Parámetros

ParámetroTipoObligatorioDescripción
badgeIdstringID de la insignia a otorgar
recipientobjectDatos del destinatario (ver abajo)
recipient.namestringNombre completo del destinatario (mínimo 5 caracteres)
recipient.emailstringCorreo del destinatario
issuedOnstringFecha de emisión en formato ISO 8601 (p. ej. 2025-01-15)
expiresstringNoFecha de caducidad en formato ISO 8601
blockchainstringNoBlockchain para verificación on-chain. Solo se admite matchain. Disponible en el plan Pro.

Ejemplo

bash
curl -X POST https://api.badges.ninja/awards \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "parameters": {
      "badgeId": "b1c2d3e4-f5a6-7890-bcde-f12345678901",
      "recipient": {
        "name": "Jane Smith",
        "email": "jane@example.com"
      },
      "issuedOn": "2025-01-15"
    }
  }'

Respuesta

json
{
  "statusCode": 200,
  "info": {
    "awardId": "https://api.badges.ninja/certify-badge/award/c1d2e3f4-a5b6-7890-cdef-123456789012"
  }
}

Notas

  • Cuenta como un otorgamiento contra tu cuota mensual (Free: 100/mes, Starter: 1.000/mes, Pro: 10.000/mes). La cuota se reinicia cada periodo de facturación.
  • El parámetro blockchain solo está disponible en el plan Pro.

Listar otorgamientos

Recupera otorgamientos con filtrado y paginación opcionales.

GET /awards

Parámetros de query

ParámetroTipoObligatorioDescripción
filterJSON stringNoObjeto de filtro (ver abajo)
lastEvaluatedKeystringNoToken de paginación de una respuesta anterior

Objeto de filtro

El parámetro filter acepta una cadena JSON con estos campos:

CampoTipoDescripción
badgeIdstringFiltra por ID de insignia.
searchstringSubcadena a buscar en nombres o correos de destinatarios (ver searchField).
searchFieldstringBien name (predeterminado) o email — qué columna buscar.

La paginación con lastEvaluatedKey funciona con o sin filtros. El tamaño de página es 50.

Ejemplo — listar todos los otorgamientos

bash
curl -X GET https://api.badges.ninja/awards \
  -H "X-Api-Key: bws_your_api_key_here"

Ejemplo — filtrar por insignia

bash
curl -X GET "https://api.badges.ninja/awards?filter=%7B%22badgeId%22%3A%22b1c2d3e4%22%7D" \
  -H "X-Api-Key: bws_your_api_key_here"

Respuesta

json
{
  "statusCode": 200,
  "info": {
    "awards": [
      {
        "id": "https://api.badges.ninja/certify-badge/award/c1d2e3f4-...",
        "badge": {
          "id": "https://api.badges.ninja/certify-badge/badge/b1c2d3e4-...",
          "name": "JavaScript Fundamentals",
          "image": "https://ipfs.ninja/ipfs/Qm..."
        },
        "recipient": {
          "name": "Jane Smith",
          "email": "jane@example.com"
        },
        "issuedOn": "2025-01-15T00:00:00.000Z",
        "timestamp": "2025-01-15T10:30:00.000Z"
      }
    ],
    "lastEvaluatedKey": "eyJ..."
  }
}

Si lastEvaluatedKey está presente en la respuesta, hay más resultados. Pásalo como query parameter en la próxima solicitud para obtener la página siguiente.


Enviar correo de otorgamiento

Envía una notificación por correo al destinatario sobre su otorgamiento.

POST /awards/{awardId}/send

Parámetros

ParámetroTipoObligatorioDescripción
awardIdstringID del otorgamiento (parámetro de ruta y cuerpo)
emailstringCorreo del destinatario

Ejemplo

bash
curl -X POST https://api.badges.ninja/awards/c1d2e3f4-a5b6-7890-cdef-123456789012/send \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "parameters": {
      "awardId": "c1d2e3f4-a5b6-7890-cdef-123456789012",
      "email": "jane@example.com"
    }
  }'

Respuesta

json
{
  "statusCode": 200,
  "info": {
    "sent": true
  }
}

Compartir otorgamiento

Comparte un otorgamiento con varios destinatarios por correo.

POST /awards/{awardId}/share

Parámetros

ParámetroTipoObligatorioDescripción
awardIdstringID del otorgamiento (parámetro de ruta y cuerpo)
recipientsstringLista de correos separados por comas
subjectstringAsunto del correo
messagestringCuerpo del mensaje

Ejemplo

bash
curl -X POST https://api.badges.ninja/awards/c1d2e3f4-a5b6-7890-cdef-123456789012/share \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "parameters": {
      "awardId": "c1d2e3f4-a5b6-7890-cdef-123456789012",
      "recipients": "manager@example.com,hr@example.com",
      "subject": "Check out my new badge!",
      "message": "I just earned the JavaScript Fundamentals badge."
    }
  }'

Respuesta

json
{
  "statusCode": 200,
  "info": {
    "shared": true
  }
}

Descargar certificado PDF

Genera un certificado PDF A4 listo para imprimir para un otorgamiento.

GET /awards/{awardGuid}/pdf

No requiere autenticación — este endpoint es público para que los destinatarios puedan descargar su propio certificado.

Ejemplo

bash
curl -OJ https://api.badges.ninja/awards/c1d2e3f4-a5b6-7890-cdef-123456789012/pdf

La respuesta es el PDF binario con cabecera Content-Type: application/pdf.


Registrar evento de otorgamiento

Registra un evento de interacción (vista, compartición, descarga, añadir a LinkedIn). Lo usa la página pública de otorgamiento para alimentar las estadísticas de interacción. No requiere autenticación.

POST /awards/{awardGuid}/event

Parámetros

ParámetroTipoObligatorioDescripción
kindstringUno de view, share, download, linkedin_add.
networkstringNoCuando kind=share, la red social: linkedin, twitter, facebook, whatsapp, telegram, email, copy.

Supresión de duplicados por IP: el mismo kind desde la misma IP se cuenta una vez cada 24 horas.

Ejemplo

bash
curl -X POST https://api.badges.ninja/awards/c1d2e3f4-a5b6-7890-cdef-123456789012/event \
  -H "Content-Type: application/json" \
  -d '{"parameters": {"kind": "share", "network": "linkedin"}}'

Obtener estadísticas del otorgamiento

Recupera contadores acumulados de interacción para un otorgamiento.

GET /awards/{awardGuid}/stats

No requiere autenticación.

Respuesta

json
{
  "statusCode": 200,
  "info": {
    "stats": {
      "views": 142,
      "shares": { "linkedin": 8, "twitter": 2, "email": 1, "copy": 5 },
      "downloads": 3,
      "linkedin_adds": 4
    }
  }
}

badges.ninja Documentation