Consultar el reporte de consumo

GET
/api/accountReport/{startDate}/{endDate}

Devuelve lo que consumió la cuenta entre dos fechas — documentos creados, verificaciones realizadas, mensajes enviados — para conciliación y cobro interno.

Las fechas van como segmentos de la ruta, así que acuérdate de la regla de firma de GET: la firma cubre la URI completa, estos segmentos incluidos.

Mándalas como ISO-8601 completo, no solo la fecha — el mismo string que da new Date().toISOString() en JavaScript, por ejemplo 2026-08-11T00:00:00.000Z. Una fecha sin hora (2026-08-11) llega al endpoint sin error, pero no recupera nada.

Authorization<token>

Cada petición lleva Authorization: signmage {webId}:{firma}, donde firma es el Base64 de HMAC-SHA256(apiKey, cadenaFirmada).

Qué va dentro de cadenaFirmada depende de la petición:

PeticióncadenaFirmada
GETLa URI completa incluyendo el query string, exactamente como se envía
POST con JSONEl cuerpo JSON, re-serializado compacto (sin espacios ni salto de línea final)
POST multipartEl SHA-256 en Base64 del archivo, que además se manda en el header Content-SHA256

Dos detalles que conviene resolverlos desde el principio:

  1. En GET, la URI se firma tal como se envía, así que el orden y el encoding de los parámetros importan.
  2. En POST, la comparación se hace contra tu JSON re-serializado en forma compacta. Manda JSON compacto y canónico para que las firmas coincidan.

Una firma que no coincide devuelve 401 con el cuerpo vacío. Como la misma respuesta cubre un web ID desconocido, una llave inactiva y una firma que no coincide, revisa las tres cosas al diagnosticar.

En: header

Parámetros de ruta

startDate*string

Inicio del periodo, como ISO-8601 completo.

Formatodate-time
endDate*string

Fin del periodo, como ISO-8601 completo.

Formatodate-time

Cuerpo de la respuesta

application/json

application/json

curl -X GET "https://example.com/api/accountReport/2026-01-01T00:00:00.000Z/2026-08-11T00:00:00.000Z"
{  "error": "could not retrieve information"}