Caelith API Reference

Programmatic access to fund compliance, regulatory reporting, and investor management infrastructure.

Introduction

The Caelith API is organized around REST. It accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes and verbs.

All API access is over HTTPS. Every request must include a valid authentication credential.

Quickstart

Make your first API call in three steps:

1. Get your API key

Navigate to Settings β†’ API Keys in your Caelith dashboard and create a new key. Copy it immediately β€” the full key is only shown once.

2. Make a test request

curlcurl -H "Authorization: Bearer ck_live_YOUR_KEY_HERE" \
  https://www.caelith.tech/api/v1/lei/validate/529900T8BM49AURSDO55

3. Check the response

response 200{
  "valid": true,
  "lei": "529900T8BM49AURSDO55",
  "entity": {
    "name": "Example Fund Management GmbH",
    "jurisdiction": "DE",
    "status": "ACTIVE"
  }
}

Language Examples

pythonimport requests

headers = {"Authorization": "Bearer ck_live_YOUR_KEY_HERE"}
resp = requests.get(
    "https://www.caelith.tech/api/v1/lei/validate/529900T8BM49AURSDO55",
    headers=headers,
)
print(resp.json())
node.jsconst resp = await fetch(
  "https://www.caelith.tech/api/v1/lei/validate/529900T8BM49AURSDO55",
  { headers: { Authorization: "Bearer ck_live_YOUR_KEY_HERE" } }
);
const data = await resp.json();
console.log(data);
πŸ’‘ Tip: Replace ck_live_YOUR_KEY_HERE with your actual API key. All examples on this page use placeholder keys.

Authentication

Caelith supports two authentication methods:

API Key Authentication (Recommended for integrations)

API keys use the ck_live_ prefix and are passed as Bearer tokens. Create keys from your dashboard under Settings β†’ API Keys, or programmatically via the Create Key endpoint.

curlcurl -H "Authorization: Bearer ck_live_abc123def456..." \
  https://www.caelith.tech/api/v1/lei/validate/529900T8BM49AURSDO55

JWT Authentication (Dashboard sessions)

Obtain a JWT token via POST /api/auth/login with email and password. The token is returned in the response and should be passed as a Bearer token.

πŸ’‘ Tip: API keys don't expire by default but can be given an expiration date. Store them securely β€” the full key is only shown once at creation time.

Base URL & Versioning

All endpoints are available under the versioned prefix:

https://www.caelith.tech/api/v1/

The unversioned /api/ prefix remains available for backward compatibility, but we recommend using /api/v1/ for all new integrations.

All versioned responses include an X-API-Version: v1 header.

Rate Limits

Requests are rate-limited based on your plan tier. When you exceed the limit, the API returns 429 Too Many Requests.

TierLimitWindowNotes
General API500 req15 minStandard API endpoints (per IP)
Authentication50 req15 minLogin & token endpoints (per IP)
Export / Reports10 req1 minXML generation, CSV downloads
Copilot30 req1 hourAI-powered compliance chat (per user)

Rate limit headers are included in every response:

X-RateLimit-Limit: 500
X-RateLimit-Remaining: 497
X-RateLimit-Reset: 1709312400

When the limit is exceeded, you receive a 429 response:

response 429{
  "error": "RATE_LIMIT_EXCEEDED",
  "message": "Too many requests. Please try again later.",
  "retryAfter": 45
}

Error Handling

Caelith uses conventional HTTP status codes. Errors return a consistent JSON body with an error code and human-readable message:

json{
  "error": "VALIDATION_ERROR",
  "message": "LEI code is required"
}
HTTP StatusError CodeMeaning
200β€”Success
201β€”Created
400VALIDATION_ERRORBad request β€” invalid or missing parameters
401UNAUTHORIZEDMissing or invalid credentials
403FORBIDDENInsufficient permissions for this resource
404NOT_FOUNDResource does not exist
409CONFLICTDuplicate record (unique constraint violation)
422BUSINESS_LOGIC_ERRORRequest valid but violates business rules
429RATE_LIMIT_EXCEEDEDToo many requests β€” see retryAfter field
500INTERNAL_ERRORUnexpected server error

Troubleshooting Common Errors

ErrorCauseFix
UNAUTHORIZEDMissing/expired token or API keyCheck the Authorization: Bearer … header is set correctly
VALIDATION_ERRORBad input dataRead the message field β€” it tells you exactly which field is wrong
RATE_LIMIT_EXCEEDEDToo many requests in the windowWait for retryAfter seconds, or check X-RateLimit-Reset header
NOT_FOUNDInvalid ID or wrong endpoint pathVerify the resource ID exists and the URL path is correct

LEI Validation

GET /api/v1/lei/validate/:code Auth Required

Validate a single Legal Entity Identifier against the GLEIF registry. Returns entity details if valid.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/lei/validate/529900T8BM49AURSDO55
response 200{
  "valid": true,
  "lei": "529900T8BM49AURSDO55",
  "entity": {
    "name": "Example Fund Management GmbH",
    "jurisdiction": "DE",
    "status": "ACTIVE",
    "registrationDate": "2020-01-15"
  }
}
GET /api/v1/lei/search?q=:query Auth Required

Search the GLEIF registry by entity name. Query must be at least 2 characters.

curlcurl -H "Authorization: Bearer ck_live_..." \
  "https://www.caelith.tech/api/v1/lei/search?q=BlackRock"
response 200{
  "results": [
    { "lei": "549300...", "name": "BlackRock Fund Advisors", "jurisdiction": "US" },
    { "lei": "549300...", "name": "BlackRock Investment Management", "jurisdiction": "GB" }
  ]
}

Bulk Validate LEIs

POST /api/v1/lei/bulk-validate Auth Required

Validate up to 50 LEI codes in a single request.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{"leis":["529900T8BM49AURSDO55","5493001KJTIIGC8Y1R12"]}' \
  https://www.caelith.tech/api/v1/lei/bulk-validate
response 200{
  "results": [
    { "lei": "529900T8BM49AURSDO55", "valid": true, "entity": { "name": "..." } },
    { "lei": "5493001KJTIIGC8Y1R12", "valid": true, "entity": { "name": "..." } }
  ]
}

Annex IV Reports

GET /api/v1/reports/annex-iv/:fundId/preflight Auth Required Export Rate Limit

Run a preflight check before generating an Annex IV XML. Returns data completeness status, missing fields, and warnings.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/reports/annex-iv/abc123/preflight
GET /api/v1/reports/annex-iv/:fundId/xml Auth Required Export Rate Limit

Generate and download a complete AIFMD Annex IV XML report for the specified fund. Returns XML with Content-Type: application/xml and a Content-Disposition attachment header.

curlcurl -H "Authorization: Bearer ck_live_..." \
  -o annex-iv-report.xml \
  https://www.caelith.tech/api/v1/reports/annex-iv/abc123/xml

Sanctions Screening

POST /api/v1/screening/:investorId Auth Required Screening Rate Limit

Screen a single investor against EU & UN sanctions lists. Returns match results with confidence scores.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/screening/inv_abc123
response 200{
  "investorId": "inv_abc123",
  "status": "clear",
  "matches": [],
  "screenedAt": "2026-02-25T13:00:00Z",
  "sources": ["eu_sanctions", "un_sanctions"]
}
GET /api/v1/screening/sanctions-status Auth Required

Get the current status of sanctions data sources β€” last refresh time, record counts, and availability.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/screening/sanctions-status
response 200{
  "sources": {
    "eu_sanctions": { "lastRefresh": "2026-02-25T08:00:00Z", "recordCount": 12450 },
    "un_sanctions": { "lastRefresh": "2026-02-25T08:00:00Z", "recordCount": 8230 }
  }
}

Regulatory Templates (EMT / EET / EPT)

Generate FinDatEx-compliant European regulatory templates for MiFID II distribution compliance.

GET /api/v1/reports/templates/:fundId/emt|eet|ept Auth Required

Generate a single template as JSON. Replace the suffix with emt, eet, or ept.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/reports/templates/abc123/emt
GET /api/v1/reports/templates/:fundId/emt|eet|ept/csv Auth Required Export Rate Limit

Download a template as a UTF-8 CSV file (BOM-encoded for Excel compatibility).

curlcurl -H "Authorization: Bearer ck_live_..." \
  -o emt-report.csv \
  https://www.caelith.tech/api/v1/reports/templates/abc123/emt/csv
GET /api/v1/reports/templates/:fundId/all Auth Required

Generate all three templates (EMT, EET, EPT) in a single request.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/reports/templates/abc123/all
response 200{
  "emt": { "fields": [...], "generatedAt": "..." },
  "eet": { "fields": [...], "generatedAt": "..." },
  "ept": { "fields": [...], "generatedAt": "..." },
  "generatedAt": "2026-02-25T13:00:00Z"
}

API Keys

POST /api/v1/keys Auth Required (Admin)

Create a new API key. The full key (with ck_live_ prefix) is returned only once in the response β€” store it securely.

curlcurl -X POST -H "Authorization: Bearer <jwt>" \
  -H "Content-Type: application/json" \
  -d '{"name":"Production Integration","scopes":["read","write"]}' \
  https://www.caelith.tech/api/v1/keys
response 201{
  "id": "key_abc123",
  "name": "Production Integration",
  "key": "ck_live_a1b2c3d4e5f6...",
  "keyPrefix": "ck_live_a1b2",
  "scopes": ["read", "write"],
  "createdAt": "2026-02-25T13:00:00Z",
  "expiresAt": null
}
⚠️ Important: The full API key is only shown at creation time. If lost, you must revoke and create a new one.
GET /api/v1/keys Auth Required (Admin)

List all API keys for the current tenant. Keys are masked β€” only the prefix is shown.

DELETE /api/v1/keys/:id Auth Required (Admin)

Revoke an API key immediately. Revoked keys cannot be reactivated.

curlcurl -X DELETE -H "Authorization: Bearer <jwt>" \
  https://www.caelith.tech/api/v1/keys/key_abc123

Calendar

Manage regulatory filing deadlines, fund obligations, and compliance calendar events.

POST /api/v1/calendar/funds Auth Required

Generate a regulatory calendar for one or more funds. Returns upcoming filing deadlines based on fund domicile, type, and applicable regulations.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{"fundIds":["fund_abc123","fund_def456"],"year":2026,"quarter":"Q1"}' \
  https://www.caelith.tech/api/v1/calendar/funds
response 200{
  "calendar": [
    {
      "fundId": "fund_abc123",
      "fundName": "Example AIFM Fund I",
      "obligations": [
        {
          "id": "obl_001",
          "type": "ANNEX_IV",
          "description": "AIFMD Annex IV Filing β€” Q1 2026",
          "deadline": "2026-04-30T23:59:59Z",
          "nca": "BaFin",
          "status": "pending"
        }
      ]
    }
  ]
}
GET /api/v1/calendar/obligations Auth Required

List all regulatory obligations for the current tenant. Supports filtering by status, date range, and fund.

curlcurl -H "Authorization: Bearer ck_live_..." \
  "https://www.caelith.tech/api/v1/calendar/obligations?status=pending&from=2026-01-01&to=2026-06-30"
response 200{
  "obligations": [
    {
      "id": "obl_001",
      "fundId": "fund_abc123",
      "type": "ANNEX_IV",
      "deadline": "2026-04-30T23:59:59Z",
      "status": "pending",
      "nca": "BaFin"
    }
  ],
  "total": 1
}
GET /api/v1/calendar/summary Auth Required

Get a high-level summary of upcoming obligations grouped by status and month.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/calendar/summary
response 200{
  "summary": {
    "total": 12,
    "pending": 5,
    "completed": 4,
    "overdue": 3,
    "byMonth": {
      "2026-03": { "pending": 2, "completed": 1 },
      "2026-04": { "pending": 3, "completed": 3 }
    }
  }
}
PATCH /api/v1/calendar/obligations/:id Auth Required

Update the status or metadata of a specific obligation. Use this to mark filings as completed or add notes.

curlcurl -X PATCH -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{"status":"completed","notes":"Filed via NCA portal on 2026-03-15"}' \
  https://www.caelith.tech/api/v1/calendar/obligations/obl_001
response 200{
  "id": "obl_001",
  "status": "completed",
  "notes": "Filed via NCA portal on 2026-03-15",
  "updatedAt": "2026-03-15T10:30:00Z"
}

NCA Registry

Access the National Competent Authority registry β€” the regulators responsible for AIFMD supervision in each EU/EEA jurisdiction.

GET /api/v1/nca Auth Required

List all NCAs in the registry. Returns authority name, country, contact information, and reporting requirements.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/nca
response 200{
  "ncas": [
    {
      "code": "DE_BAFIN",
      "name": "Bundesanstalt fΓΌr Finanzdienstleistungsaufsicht (BaFin)",
      "country": "DE",
      "reportingPortal": "https://portal.mvp.bafin.de",
      "annexIVRequired": true
    },
    {
      "code": "LU_CSSF",
      "name": "Commission de Surveillance du Secteur Financier",
      "country": "LU",
      "reportingPortal": "https://reporting.cssf.lu",
      "annexIVRequired": true
    }
  ]
}
GET /api/v1/nca/:code Auth Required

Get detailed information for a specific NCA by its code (e.g. DE_BAFIN, LU_CSSF).

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/nca/DE_BAFIN
response 200{
  "code": "DE_BAFIN",
  "name": "Bundesanstalt fΓΌr Finanzdienstleistungsaufsicht (BaFin)",
  "country": "DE",
  "reportingPortal": "https://portal.mvp.bafin.de",
  "annexIVRequired": true,
  "filingFormat": "XML",
  "contactEmail": "reporting@bafin.de",
  "notes": "Requires LEI validation before submission"
}
POST /api/v1/nca/:code/validate Auth Required

Validate a report payload against the specific requirements of an NCA. Returns validation errors and warnings before you submit to the regulator.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{"fundId":"fund_abc123","reportType":"ANNEX_IV","period":"2026-Q1"}' \
  https://www.caelith.tech/api/v1/nca/DE_BAFIN/validate
response 200{
  "valid": true,
  "errors": [],
  "warnings": [
    { "field": "leverageCalculation", "message": "Gross method value appears unusually high" }
  ],
  "ncaCode": "DE_BAFIN"
}
GET /api/v1/nca/transposition Auth Required

Get the AIFMD II transposition status across all EU/EEA jurisdictions. Shows which countries have transposed the directive and their implementation timeline.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/nca/transposition
response 200{
  "transposition": [
    { "country": "DE", "status": "transposed", "effectiveDate": "2025-11-01", "ncaCode": "DE_BAFIN" },
    { "country": "LU", "status": "in_progress", "expectedDate": "2026-03-01", "ncaCode": "LU_CSSF" },
    { "country": "IE", "status": "pending", "expectedDate": "2026-06-01", "ncaCode": "IE_CBI" }
  ]
}

Regulatory Events

Track regulatory changes, consultations, and legislative events that impact fund compliance.

GET /api/v1/regulatory/events Auth Required

List regulatory events. Supports filtering by type, jurisdiction, date range, and impact area.

curlcurl -H "Authorization: Bearer ck_live_..." \
  "https://www.caelith.tech/api/v1/regulatory/events?type=directive&jurisdiction=EU&limit=10"
response 200{
  "events": [
    {
      "id": "evt_001",
      "title": "AIFMD II Final Text Published",
      "type": "directive",
      "jurisdiction": "EU",
      "publishedAt": "2025-03-26T00:00:00Z",
      "effectiveDate": "2026-03-26",
      "impactAreas": ["reporting", "delegation", "leverage"],
      "summary": "Updated requirements for AIFM reporting and delegation arrangements."
    }
  ],
  "total": 1,
  "page": 1
}
GET /api/v1/regulatory/events/:id Auth Required

Get full details for a specific regulatory event, including related documents and affected entity types.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/regulatory/events/evt_001
response 200{
  "id": "evt_001",
  "title": "AIFMD II Final Text Published",
  "type": "directive",
  "jurisdiction": "EU",
  "publishedAt": "2025-03-26T00:00:00Z",
  "effectiveDate": "2026-03-26",
  "impactAreas": ["reporting", "delegation", "leverage"],
  "summary": "Updated requirements for AIFM reporting and delegation arrangements.",
  "sourceUrl": "https://eur-lex.europa.eu/...",
  "affectedEntityTypes": ["AIFM", "UCITS_ManCo"],
  "documents": [
    { "title": "Final Directive Text", "url": "https://...", "type": "pdf" }
  ]
}
GET /api/v1/regulatory/impact/:area Auth Required

Get an impact analysis for a specific compliance area (e.g. reporting, delegation, leverage, liquidity). Returns upcoming changes and their effect on your funds.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/regulatory/impact/reporting
response 200{
  "area": "reporting",
  "changes": [
    {
      "eventId": "evt_001",
      "title": "Enhanced Annex IV reporting fields",
      "effectiveDate": "2026-03-26",
      "severity": "high",
      "description": "New fields required for leverage and liquidity risk reporting.",
      "affectedFunds": 3
    }
  ]
}
GET /api/v1/regulatory/timeline Auth Required

Get a chronological timeline of all regulatory events and deadlines relevant to your funds.

curlcurl -H "Authorization: Bearer ck_live_..." \
  "https://www.caelith.tech/api/v1/regulatory/timeline?from=2026-01-01&to=2026-12-31"
response 200{
  "timeline": [
    { "date": "2026-03-26", "type": "directive", "title": "AIFMD II effective", "id": "evt_001" },
    { "date": "2026-04-30", "type": "deadline", "title": "Annex IV Q1 Filing β€” BaFin", "id": "obl_001" },
    { "date": "2026-06-30", "type": "deadline", "title": "Annex IV Q1 Filing β€” CSSF", "id": "obl_002" }
  ]
}

Webhooks

Subscribe to real-time event notifications. Caelith will send HTTP POST requests to your endpoint when events occur (e.g. screening completed, filing deadline approaching).

POST /api/v1/webhooks Auth Required (Admin)

Register a new webhook endpoint. You must specify the URL and the event types to subscribe to.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-app.com/webhooks/caelith",
    "events": ["screening.completed", "obligation.due", "report.generated"],
    "secret": "whsec_your_signing_secret"
  }' \
  https://www.caelith.tech/api/v1/webhooks
response 201{
  "id": "wh_abc123",
  "url": "https://your-app.com/webhooks/caelith",
  "events": ["screening.completed", "obligation.due", "report.generated"],
  "status": "active",
  "createdAt": "2026-02-25T13:00:00Z"
}
πŸ’‘ Webhook Signing: Each delivery includes an X-Caelith-Signature header. Verify it using your webhook secret to ensure the payload is authentic.
GET /api/v1/webhooks Auth Required (Admin)

List all registered webhook endpoints for the current tenant.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/webhooks
response 200{
  "webhooks": [
    {
      "id": "wh_abc123",
      "url": "https://your-app.com/webhooks/caelith",
      "events": ["screening.completed", "obligation.due"],
      "status": "active",
      "createdAt": "2026-02-25T13:00:00Z"
    }
  ]
}
DELETE /api/v1/webhooks/:id Auth Required (Admin)

Delete a webhook endpoint. No further deliveries will be attempted after deletion.

curlcurl -X DELETE -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/webhooks/wh_abc123
GET /api/v1/webhooks/:id/deliveries Auth Required (Admin)

View the delivery log for a specific webhook. Shows recent delivery attempts, response codes, and retry status.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/webhooks/wh_abc123/deliveries
response 200{
  "deliveries": [
    {
      "id": "del_001",
      "event": "screening.completed",
      "deliveredAt": "2026-02-25T14:30:00Z",
      "responseCode": 200,
      "success": true,
      "attempts": 1
    },
    {
      "id": "del_002",
      "event": "obligation.due",
      "deliveredAt": "2026-02-25T15:00:00Z",
      "responseCode": 500,
      "success": false,
      "attempts": 3,
      "nextRetry": "2026-02-25T16:00:00Z"
    }
  ]
}

Batch Operations

Perform bulk operations for high-volume workflows.

POST /api/v1/batch/sanctions/screen Auth Required Screening Rate Limit

Screen multiple investors against sanctions lists in a single request. Accepts up to 100 investors per batch. Returns results for each investor.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "investors": [
      { "id": "inv_001", "name": "John Smith", "jurisdiction": "US" },
      { "id": "inv_002", "name": "Acme Holdings GmbH", "jurisdiction": "DE" }
    ]
  }' \
  https://www.caelith.tech/api/v1/batch/sanctions/screen
response 200{
  "results": [
    { "investorId": "inv_001", "status": "clear", "matches": [], "screenedAt": "2026-02-25T13:00:00Z" },
    { "investorId": "inv_002", "status": "clear", "matches": [], "screenedAt": "2026-02-25T13:00:00Z" }
  ],
  "screened": 2,
  "sources": ["eu_sanctions", "un_sanctions"]
}

Usage & Billing

Monitor your API consumption and billing metrics.

GET /api/v1/usage Auth Required

Get usage statistics for the current billing period. Includes total requests, endpoint breakdown, and remaining quota.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/usage
response 200{
  "period": { "start": "2026-02-01", "end": "2026-02-28" },
  "totalRequests": 1247,
  "quota": 10000,
  "remaining": 8753,
  "byEndpoint": {
    "lei/validate": 523,
    "screening": 312,
    "reports/annex-iv": 45,
    "copilot/chat": 89,
    "other": 278
  }
}
GET /api/v1/usage/daily Auth Required

Get a daily breakdown of API usage for a given date range. Useful for tracking consumption trends.

curlcurl -H "Authorization: Bearer ck_live_..." \
  "https://www.caelith.tech/api/v1/usage/daily?from=2026-02-01&to=2026-02-28"
response 200{
  "daily": [
    { "date": "2026-02-01", "requests": 42 },
    { "date": "2026-02-02", "requests": 38 },
    { "date": "2026-02-03", "requests": 67 }
  ]
}

Audit Log

Access the immutable audit trail of all actions performed within your Caelith account.

GET /api/v1/audit Auth Required (Admin)

List audit log entries. Supports filtering by action, user, resource type, and date range. Results are paginated.

curlcurl -H "Authorization: Bearer ck_live_..." \
  "https://www.caelith.tech/api/v1/audit?action=screening.run&limit=20&offset=0"
response 200{
  "events": [
    {
      "id": "aud_001",
      "action": "screening.run",
      "userId": "usr_abc123",
      "userEmail": "analyst@example.com",
      "resourceType": "investor",
      "resourceId": "inv_001",
      "metadata": { "result": "clear", "sources": 2 },
      "ipAddress": "203.0.113.42",
      "timestamp": "2026-02-25T14:30:00Z"
    }
  ],
  "total": 1,
  "limit": 20,
  "offset": 0
}
GET /api/v1/audit/:id Auth Required (Admin)

Get full details for a specific audit log entry, including the complete request and response metadata.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/audit/aud_001
response 200{
  "id": "aud_001",
  "action": "screening.run",
  "userId": "usr_abc123",
  "userEmail": "analyst@example.com",
  "resourceType": "investor",
  "resourceId": "inv_001",
  "metadata": { "result": "clear", "sources": 2, "duration": 230 },
  "ipAddress": "203.0.113.42",
  "userAgent": "curl/7.88.1",
  "timestamp": "2026-02-25T14:30:00Z"
}

Copilot

AI-powered compliance assistant for regulatory questions, filing guidance, and data interpretation.

POST /api/v1/copilot/chat Auth Required 30 req/hour

Send a message to the Caelith Compliance Copilot. The copilot has context about your funds, regulatory obligations, and compliance data. Supports multi-turn conversations via conversationId.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "message": "What are the Annex IV filing deadlines for our Luxembourg funds this quarter?",
    "conversationId": "conv_optional_for_follow_ups"
  }' \
  https://www.caelith.tech/api/v1/copilot/chat
response 200{
  "response": "Based on your fund portfolio, you have 2 Luxembourg-domiciled funds with Q1 2026 Annex IV deadlines:\n\n1. **Fund Alpha** β€” CSSF filing due April 30, 2026\n2. **Fund Beta** β€” CSSF filing due April 30, 2026\n\nBoth funds require XML submission via the CSSF reporting portal.",
  "conversationId": "conv_abc123",
  "sources": [
    { "type": "fund", "id": "fund_001", "name": "Fund Alpha" },
    { "type": "regulation", "ref": "AIFMD Art. 24" }
  ]
}

Annex IV Public

Public endpoints for generating and validating AIFMD Annex IV XML reports.

POST /api/v1/annex-iv/generate Auth Required Export Rate Limit

Generate an Annex IV XML report from a structured JSON payload. Use this for programmatic report generation without creating a fund in the dashboard first.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "managerLEI": "529900T8BM49AURSDO55",
    "fundName": "Example Fund I",
    "reportingPeriod": "2026-Q1",
    "ncaCode": "DE_BAFIN",
    "fundData": {
      "nav": 150000000,
      "currency": "EUR",
      "investorCount": 42,
      "leverageGross": 1.2,
      "leverageCommitment": 1.1
    }
  }' \
  https://www.caelith.tech/api/v1/annex-iv/generate
response 200{
  "xml": "<?xml version=\"1.0\"?><AIFReportingInfo ...>...</AIFReportingInfo>",
  "filename": "annex-iv-example-fund-i-2026-q1.xml",
  "generatedAt": "2026-02-25T13:00:00Z",
  "warnings": []
}
POST /api/v1/annex-iv/validate Auth Required

Validate an Annex IV XML report against the ESMA schema and NCA-specific rules. Upload the XML as the request body or provide it as a JSON-encoded string.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/xml" \
  --data-binary @annex-iv-report.xml \
  https://www.caelith.tech/api/v1/annex-iv/validate
response 200{
  "valid": true,
  "errors": [],
  "warnings": [
    { "line": 42, "field": "NAVAmount", "message": "NAV value exceeds typical range for fund type" }
  ],
  "schema": "ESMA_AIFMD_2025",
  "validatedAt": "2026-02-25T13:00:00Z"
}

Filing

NCA-specific filing requirements and common rejection reasons.

GET /api/v1/public/filing/requirements/:nca Auth Required

Get the filing requirements for a specific NCA. Returns required documents, formats, and submission rules.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/filing/requirements/DE_BAFIN
response 200{
  "nca": "DE_BAFIN",
  "requirements": [
    { "type": "ANNEX_IV", "format": "XML", "frequency": "quarterly", "portal": "https://portal.mvp.bafin.de" }
  ]
}
GET /api/v1/public/filing/rejections/:nca Auth Required

Get common rejection reasons for filings submitted to a specific NCA.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/filing/rejections/DE_BAFIN
response 200{
  "nca": "DE_BAFIN",
  "rejections": [
    { "code": "INVALID_LEI", "description": "LEI code is missing or invalid", "frequency": "high" },
    { "code": "SCHEMA_MISMATCH", "description": "XML does not conform to ESMA XSD", "frequency": "medium" }
  ]
}

Guidance

Field-level guidance and regulatory code lookups for Annex IV and related reports.

GET /api/v1/public/guidance/fields Auth Required

List all available guidance fields with descriptions and data types.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/guidance/fields
GET /api/v1/public/guidance/fields/:name Auth Required

Get detailed guidance for a specific field, including allowed values, examples, and NCA-specific notes.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/guidance/fields/NAVAmount
GET /api/v1/public/guidance/codes/:codeType Auth Required

Get all valid codes for a given code type (e.g. strategy, instrument, geography).

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/guidance/codes/strategy
response 200{
  "codeType": "strategy",
  "codes": [
    { "code": "HEDGE_FUND_EQUITY", "label": "Equity hedge fund strategy" },
    { "code": "HEDGE_FUND_MACRO", "label": "Global macro strategy" }
  ]
}

Classification

Investor classification, regulatory thresholds, and regime identification.

POST /api/v1/public/classification/investor Auth Required

Classify an investor as professional, semi-professional, or retail based on provided parameters.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{"jurisdiction":"DE","investorType":"individual","netWorth":2000000,"experience":"advanced"}' \
  https://www.caelith.tech/api/v1/public/classification/investor
response 200{
  "classification": "semi-professional",
  "jurisdiction": "DE",
  "regime": "AIFMD",
  "minimumInvestment": 200000,
  "rationale": "Meets semi-professional criteria under German KAGB Β§1(19)(33)"
}
GET /api/v1/public/classification/thresholds/:jurisdiction Auth Required

Get investor classification thresholds for a jurisdiction.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/classification/thresholds/DE
GET /api/v1/public/classification/regimes Auth Required

List all regulatory regimes (AIFMD, UCITS, ELTIF, etc.) with their classification rules.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/classification/regimes

Checklist

Generate and manage compliance checklists for fund setup and ongoing obligations.

POST /api/v1/public/checklist/generate Auth Required

Generate a compliance checklist based on fund type, jurisdiction, and regulatory requirements.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{"fundType":"aif","jurisdiction":"LU","activities":["marketing","delegation"]}' \
  https://www.caelith.tech/api/v1/public/checklist/generate
response 200{
  "checklist": [
    { "item": "AIFMD registration with CSSF", "category": "licensing", "required": true, "deadline": "before_launch" },
    { "item": "Annex IV reporting setup", "category": "reporting", "required": true, "deadline": "quarterly" }
  ],
  "generatedAt": "2026-02-27T15:00:00Z"
}
GET /api/v1/public/checklist/templates Auth Required

List available checklist templates (e.g. fund launch, annual compliance review, AIFMD II transition).

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/checklist/templates

Deadlines

Calculate and track regulatory filing deadlines across jurisdictions.

POST /api/v1/public/deadlines/calculate Auth Required

Calculate all applicable filing deadlines for a fund based on its characteristics.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{"fundType":"aif","jurisdiction":"DE","aum":500000000,"reportingStart":"2026-01-01"}' \
  https://www.caelith.tech/api/v1/public/deadlines/calculate
response 200{
  "deadlines": [
    { "type": "ANNEX_IV", "frequency": "quarterly", "nextDue": "2026-04-30", "nca": "BaFin" },
    { "type": "ANNUAL_REPORT", "frequency": "annual", "nextDue": "2026-06-30", "nca": "BaFin" }
  ]
}
GET /api/v1/public/deadlines/upcoming/:nca?months=:months Auth Required

Get upcoming deadlines for a specific NCA within a given number of months.

curlcurl -H "Authorization: Bearer ck_live_..." \
  "https://www.caelith.tech/api/v1/public/deadlines/upcoming/DE_BAFIN?months=6"
GET /api/v1/public/deadlines/aifmd2-timeline Auth Required

Get the full AIFMD II implementation timeline with key milestones and transposition deadlines per jurisdiction.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/deadlines/aifmd2-timeline
response 200{
  "milestones": [
    { "date": "2025-03-26", "event": "AIFMD II published in Official Journal" },
    { "date": "2026-03-16", "event": "Transposition deadline for Member States" },
    { "date": "2026-09-16", "event": "Extended deadline for loan origination provisions" }
  ]
}

Portals

NCA filing portal information, URLs, and contact details.

GET /api/v1/public/portals Auth Required

List all NCA filing portals with URLs and supported formats.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/portals
response 200{
  "portals": [
    { "nca": "DE_BAFIN", "name": "BaFin MVP Portal", "url": "https://portal.mvp.bafin.de", "formats": ["XML"] },
    { "nca": "LU_CSSF", "name": "CSSF Reporting", "url": "https://reporting.cssf.lu", "formats": ["XML", "XBRL"] }
  ]
}
GET /api/v1/public/portals/:nca Auth Required

Get detailed portal information for a specific NCA, including submission instructions and technical requirements.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/portals/DE_BAFIN
GET /api/v1/public/portals/:nca/contacts Auth Required

Get contact information for an NCA's reporting department.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/portals/DE_BAFIN/contacts

NCA Compare

Compare regulatory requirements across NCAs and identify gold-plating.

POST /api/v1/public/nca-compare/compare Auth Required

Compare NCAs across a specific dimension (e.g. reporting_frequency, leverage_limits, delegation_rules) for selected countries.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{"dimension":"reporting_frequency","countries":["DE","LU","IE","FR"]}' \
  https://www.caelith.tech/api/v1/public/nca-compare/compare
response 200{
  "dimension": "reporting_frequency",
  "comparison": [
    { "country": "DE", "nca": "BaFin", "value": "quarterly", "notes": "All AIFs regardless of size" },
    { "country": "LU", "nca": "CSSF", "value": "semi-annual", "notes": "Quarterly for leveraged AIFs >500M" }
  ]
}
GET /api/v1/public/nca-compare/compare-all Auth Required

Get a comprehensive comparison of all NCAs across all dimensions.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/nca-compare/compare-all
GET /api/v1/public/nca-compare/goldplating/:nca Auth Required

Get gold-plating analysis for a specific NCA β€” requirements that exceed the ESMA/EU baseline.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/nca-compare/goldplating/DE_BAFIN
response 200{
  "nca": "DE_BAFIN",
  "goldplating": [
    { "area": "reporting", "description": "Additional quarterly reporting for sub-threshold AIFMs", "severity": "medium" },
    { "area": "delegation", "description": "Stricter substance requirements for delegated portfolio management", "severity": "high" }
  ]
}

Regulatory Diff

Compare regulatory versions and assess impact on fund operations.

GET /api/v1/public/regulatory-diff/diff?from=:from&to=:to&area=:area Auth Required

Get a diff between two regulatory versions (e.g. AIFMD I vs AIFMD II). Optionally filter by compliance area.

curlcurl -H "Authorization: Bearer ck_live_..." \
  "https://www.caelith.tech/api/v1/public/regulatory-diff/diff?from=AIFMD_I&to=AIFMD_II&area=reporting"
response 200{
  "from": "AIFMD_I",
  "to": "AIFMD_II",
  "area": "reporting",
  "changes": [
    { "field": "Annex IV fields", "type": "added", "description": "12 new mandatory fields for liquidity and leverage" },
    { "field": "Reporting frequency", "type": "modified", "description": "New semi-annual tier for mid-size AIFMs" }
  ]
}
GET /api/v1/public/regulatory-diff/impact/:fundType Auth Required

Get a regulatory impact analysis for a specific fund type (e.g. aif, ucits, eltif).

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/public/regulatory-diff/impact/aif
response 200{
  "fundType": "aif",
  "impacts": [
    { "area": "reporting", "severity": "high", "description": "Enhanced Annex IV with 12 new fields" },
    { "area": "delegation", "severity": "medium", "description": "New substance requirements for delegated functions" },
    { "area": "liquidity", "severity": "high", "description": "Mandatory liquidity management tools" }
  ]
}

Delegation Management

Manage delegated functions under AIFMD Article 20 requirements. Track delegation arrangements, substance assessments, and oversight obligations for your fund management company.

GET /api/v1/delegations Auth Required

List all delegation arrangements for the current organisation.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/delegations
response 200{
  "data": [
    {
      "id": "del_01abc",
      "delegate_name": "Acme Asset Management",
      "function": "portfolio_management",
      "status": "active",
      "substance_score": 82,
      "review_due": "2026-06-30"
    }
  ],
  "meta": { "request_id": "req_xyz", "processing_ms": 18 }
}
POST /api/v1/delegations Auth Required

Create a new delegation arrangement.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{"delegate_name":"Acme Asset Management","function":"portfolio_management","jurisdiction":"DE"}' \
  https://www.caelith.tech/api/v1/delegations
response 201{
  "data": {
    "id": "del_01abc",
    "delegate_name": "Acme Asset Management",
    "function": "portfolio_management",
    "jurisdiction": "DE",
    "status": "pending_review",
    "created_at": "2026-02-27T10:00:00Z"
  },
  "meta": { "request_id": "req_xyz", "processing_ms": 24 }
}

Senior Persons

Manage senior management and key function holders required under AIFMD/MiFID II. Track fitness and propriety assessments, NCA notifications, and role assignments.

GET /api/v1/senior-persons Auth Required

List all registered senior persons and key function holders.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/senior-persons
response 200{
  "data": [
    {
      "id": "sp_01abc",
      "name": "Jane Schmidt",
      "role": "conducting_officer",
      "jurisdiction": "LU",
      "fit_proper_status": "approved",
      "nca_notified": true
    }
  ],
  "meta": { "request_id": "req_xyz", "processing_ms": 12 }
}
POST /api/v1/senior-persons Auth Required

Register a new senior person or key function holder.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name":"Jane Schmidt","role":"conducting_officer","jurisdiction":"LU"}' \
  https://www.caelith.tech/api/v1/senior-persons
response 201{
  "data": {
    "id": "sp_01abc",
    "name": "Jane Schmidt",
    "role": "conducting_officer",
    "jurisdiction": "LU",
    "fit_proper_status": "pending",
    "created_at": "2026-02-27T10:00:00Z"
  },
  "meta": { "request_id": "req_xyz", "processing_ms": 19 }
}

LMT / Liquidity Management Tools

Configure and manage liquidity management tools as required under AIFMD II Article 16. Define activation thresholds, notify NCAs, and generate investor disclosures for tools like redemption gates, swing pricing, and anti-dilution levies.

GET /api/v1/lmt Auth Required

List configured liquidity management tools for all funds.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/lmt
response 200{
  "data": [
    {
      "id": "lmt_01abc",
      "fund_id": "fund_xyz",
      "tool_type": "redemption_gate",
      "threshold_pct": 10,
      "status": "configured",
      "last_activated": null
    }
  ],
  "meta": { "request_id": "req_xyz", "processing_ms": 15 }
}
POST /api/v1/lmt/notifications Auth Required

Send an LMT activation or deactivation notification to the relevant NCA.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{"lmt_id":"lmt_01abc","action":"activate","reason":"Redemption pressure exceeding 10% threshold"}' \
  https://www.caelith.tech/api/v1/lmt/notifications
response 201{
  "data": {
    "id": "lmt_notif_01",
    "lmt_id": "lmt_01abc",
    "action": "activate",
    "nca": "CSSF",
    "status": "sent",
    "sent_at": "2026-02-27T10:00:00Z"
  },
  "meta": { "request_id": "req_xyz", "processing_ms": 340 }
}

Fee Disclosure

Generate and manage investor fee disclosures compliant with PRIIPs KID, MiFID II cost reporting, and AIFMD Annex IV fee breakdowns. Supports ongoing costs, performance fees, transaction costs, and carried interest calculations.

GET /api/v1/fee-disclosures Auth Required

List fee disclosure reports for your funds.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/fee-disclosures
response 200{
  "data": [
    {
      "id": "fd_01abc",
      "fund_id": "fund_xyz",
      "period": "2025-H2",
      "total_expense_ratio": 1.85,
      "status": "published",
      "generated_at": "2026-01-15T09:00:00Z"
    }
  ],
  "meta": { "request_id": "req_xyz", "processing_ms": 22 }
}
POST /api/v1/fee-disclosures Auth Required

Generate a new fee disclosure report for a fund and period.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{"fund_id":"fund_xyz","period":"2025-H2"}' \
  https://www.caelith.tech/api/v1/fee-disclosures
response 201{
  "data": {
    "id": "fd_02abc",
    "fund_id": "fund_xyz",
    "period": "2025-H2",
    "status": "generating",
    "created_at": "2026-02-27T10:00:00Z"
  },
  "meta": { "request_id": "req_xyz", "processing_ms": 45 }
}

Evidence Bundles

Create tamper-evident compliance evidence bundles for regulatory examinations and audits. Bundles package supporting documents, audit trails, and SHA-256 integrity hashes into a single downloadable archive.

GET /api/v1/evidence-bundles Auth Required

List all evidence bundles for your organisation.

curlcurl -H "Authorization: Bearer ck_live_..." \
  https://www.caelith.tech/api/v1/evidence-bundles
response 200{
  "data": [
    {
      "id": "eb_01abc",
      "title": "Q4 2025 Sanctions Screening Evidence",
      "document_count": 14,
      "integrity_hash": "sha256:a3f2c8...",
      "status": "sealed",
      "created_at": "2026-01-10T08:00:00Z"
    }
  ],
  "meta": { "request_id": "req_xyz", "processing_ms": 20 }
}
POST /api/v1/evidence-bundles Auth Required

Create a new evidence bundle from specified audit records and documents.

curlcurl -X POST -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{"title":"Q4 2025 Sanctions Screening Evidence","record_ids":["aud_01","aud_02","aud_03"]}' \
  https://www.caelith.tech/api/v1/evidence-bundles
response 201{
  "data": {
    "id": "eb_02abc",
    "title": "Q4 2025 Sanctions Screening Evidence",
    "status": "building",
    "created_at": "2026-02-27T10:00:00Z"
  },
  "meta": { "request_id": "req_xyz", "processing_ms": 38 }
}

API Status

Private Beta

Caelith API is in private beta. Contact julian@caelith.tech for access.

Changelog

VersionDateChanges
v2.02026-02-26v2 API release. Added Delegation Management, Senior Persons, LMT/Liquidity Management Tools, Fee Disclosure, and Evidence Bundles. Expanded NCA Compare with diff analysis. Added Investor Classification and Compliance Checklists. Total: 60+ endpoints.
v1.22026-02Added Filing, Guidance, Classification, Checklist, Deadlines, Portals, NCA Compare, and Regulatory Diff endpoints. Total: 52 public endpoints.
v1.12026-02Documented 20 additional endpoints: Calendar, NCA Registry, Regulatory Events, Webhooks, Batch Operations, Usage & Billing, Audit Log, Copilot, and Annex IV Public APIs. Total: 32 public endpoints.
v12025-01Initial versioned API release. All endpoints available under /api/v1/ prefix. Added X-API-Version response header.

The unversioned /api/ prefix remains available for backward compatibility. We recommend migrating to /api/v1/ for all new integrations.

Need help? Contact support@caelith.tech

Interactive API explorer available at Swagger UI β†’