Skip to content

API de otorgamientos

Crea y gestiona otorgamientos (assertions) — credenciales entregadas a destinatarios concretos.

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

Crear otorgamiento

Entrega una credencial a un destinatario.

POST /awards

Parámetros

ParámetroTipoObligatorioDescripción
badgeIdstringEl ID de la credencial a otorgar
recipientobjectDatos del destinatario (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

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

Listar otorgamientos

Recupera otorgamientos con filtros y paginación opcionales.

GET /awards

Parámetros de consulta

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

Objeto de filtro

El parámetro filter admite un JSON string con estos campos:

CampoTipoDescripción
badgeIdstringFiltrar por ID de credencial.
searchstringSubcadena a buscar en nombres o correos de destinatarios (mira searchField).
searchFieldstringO name (por defecto) o email — qué columna buscar.

La paginación por 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 credencial

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 la respuesta incluye lastEvaluatedKey, hay más resultados. Pásalo como parámetro de consulta en la siguiente solicitud para obtener la próxima página.


Enviar correo de otorgamiento

Envía un correo al destinatario sobre su otorgamiento.

POST /awards/{awardId}/send

Parámetros

ParámetroTipoObligatorioDescripción
awardIdstringEl ID 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
  }
}

Difundir otorgamiento

Difunde un otorgamiento a varios destinatarios por correo.

POST /awards/{awardId}/share

Parámetros

ParámetroTipoObligatorioDescripción
awardIdstringEl ID del otorgamiento (parámetro de ruta y cuerpo)
recipientsstringLista de correos separada 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 PDF A4 listo para imprimir de un otorgamiento.

GET /awards/{awardGuid}/pdf

No requiere autenticación — este endpoint es público para que los destinatarios descarguen 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 del otorgamiento

Registra un evento de interacción (visita, difusión, descarga, agregación a LinkedIn). Lo utiliza la página pública del otorgamiento para alimentar 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.
networkstringNoSi kind=share, la red social: linkedin, twitter, facebook, whatsapp, telegram, email, copy.

Supresión de duplicados por IP: el mismo tipo desde la misma IP cuenta una sola 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"}}'

Estadísticas del otorgamiento

Recupera contadores acumulativos de interacción de 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