Skip to main content

Introduction

The Sigilum API provides a namespace-based agent identity and authorization system. It manages:
  • Namespace identity (did:sigilum:<namespace>)
  • Authorization request lifecycle (submit, approve, reject, revoke)
  • Agent verification and DID document resolution
  • Service registration and API key management
  • Webhook delivery for authorization events

Base URLs

Production
string
https://api.sigilum.id
The production API endpoint for all live applications.
Local Development
string
http://localhost:8787
Local development server for testing and development.

API Architecture

The Sigilum API follows a role-based architecture:

Namespace Owners

  • Register and manage namespaces via dashboard authentication (WebAuthn + JWT cookies)
  • Create and configure services
  • Approve, reject, or revoke authorization requests
  • View authorization history for their namespace

Services

  • Authenticate using service API keys (Bearer tokens)
  • Submit authorization requests on behalf of agents
  • Verify agent authorization status
  • Receive webhook notifications for authorization lifecycle events
  • Cache approved authorizations for performance

Agents

  • Present cryptographic identity (Ed25519 public keys)
  • Sign all API requests using HTTP message signatures (RFC 9421)
  • Use namespace-bound certificates issued by gateway

Authentication Methods

Signed Headers (Service & Agent Requests)

All protected API endpoints require Sigilum signed headers following RFC 9421:
signature-input
string
required
RFC 9421 Signature-Input header containing the signature metadata and signed components list.
signature
string
required
RFC 9421 Signature header containing the base64-encoded Ed25519 signature.
sigilum-namespace
string
required
Namespace identifier bound to the signing certificate.
sigilum-subject
string
required
Subject identifier for user-scoped policy checks. Must be included in signed components.
sigilum-agent-key
string
required
Agent public key in format ed25519:<base64>.
sigilum-agent-cert
string
required
Base64url-encoded Sigilum agent certificate JSON.
content-digest
string
Required for requests with a non-empty body. SHA-256 digest of the exact request body in format sha-256=:<base64>:.

Bearer Token (Service API Key)

Service endpoints require both signed headers and a Bearer token:
Authorization: Bearer <service_api_key>
Dashboard endpoints use session cookies:
Cookie: sigilum_token=<jwt_token>

Authorization Flow

  1. Service Registration: Namespace owner creates service and generates API key
  2. Authorization Request: Service submits claim for agent public key
  3. Approval: Namespace owner reviews and approves/rejects request
  4. Verification: Service verifies agent authorization status
  5. Revocation: Namespace owner can revoke approved authorization

Error Responses

All errors follow a consistent format:
error
string
required
Human-readable error message.
code
string
Machine-readable error code (e.g., SIGNATURE_INVALID, NAMESPACE_NOT_FOUND).
details
object
Additional error context when available.

Common Error Codes

StatusCodeDescription
400INVALID_REQUESTMalformed request or invalid parameters
401SIGNATURE_MISSINGRequired signed headers not provided
401SIGNATURE_INVALIDSignature verification failed
401SIGNATURE_EXPIREDSignature timestamp outside valid window
403SIGNATURE_NAMESPACE_MISMATCHNamespace does not match certificate
403FORBIDDENInsufficient permissions
404NOT_FOUNDResource does not exist
409CONFLICTResource already exists or state conflict
503SERVICE_UNAVAILABLETemporary service unavailability

Rate Limiting

Rate limits are enforced per API key or authenticated session. Current limits:
  • Service API requests: 1000 requests per minute
  • Dashboard requests: 100 requests per minute
  • Verification endpoint: 2000 requests per minute (optimized for high-throughput)

Pagination

List endpoints support pagination with consistent parameters:
limit
integer
default:"50"
Maximum number of items to return (1-200 for most endpoints, up to 2000 for approved claims cache).
offset
integer
default:"0"
Number of items to skip before returning results.
Pagination responses include:
pagination
object
limit
integer
required
Applied limit value.
offset
integer
required
Applied offset value.
total
integer
required
Total number of items available.
has_more
boolean
required
Whether more items exist beyond current page.

SDKs and Tools

Official SDKs and tools:
  • @sigilum/gateway: Local gateway for agent certificate management and request signing
  • @sigilum/sdk: Client SDK for Node.js applications
See the SDK documentation for integration details.

Build docs developers (and LLMs) love