Project HermesHermes Docs

API Reference

Hermes REST API — base URL, authentication, and route map

API Reference

The Hermes API Gateway provides a unified REST API for all platform features.

Base URL

https://api.hermes.camie.ai

Authentication

All endpoints (except /health) require a Bearer token:

Authorization: Bearer hermes_your_api_key
# or
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

See Authentication for details.

Rate Limits

ScopeLimit
Per API Key (minute)100 requests
Per API Key (hour)1,000 requests

Route Map

The gateway proxies requests to the appropriate subsystem:

API RouteSubsystemInternal Route
/v1/clusters/*Sub-5 (Infrastructure)/api/contabo-cluster/*
/v1/warmup/*Sub-5 (Infrastructure)/api/contabo-cluster/*
/v1/domains/*Sub-5 (Infrastructure)/api/domain/*
/v1/mailboxes/*Sub-5 (Infrastructure)/api/contabo-mailbox/*
/v1/lead-lists/*Sub-3 (Campaign Sending)/api/v1/lead-lists/*
/v1/leads/*Sub-1 (Lead Discovery)/leads/*
/v1/campaigns/*Sub-3 (Campaign Sending)/api/v1/campaigns/*
/v1/inbox/*Sub-4 (Inbox)/api/v1/inbox/*
/v1/email-validation/*Sub-5 (Infrastructure)/api/email-validation/*
/wallet/*Gateway (direct)
/api/keys/*Gateway (direct)
/clusters/*Gateway (direct)

Lead data model

Lead imports are company-centered. A lead list contains companies, and leads are people attached to those companies:

lead_lists.id -> companies.lead_list_id
companies.id -> leads.company_id

For API-key integrations that need lead-list association, use POST /v1/leads with company_name, people, and camel-case leadListId. Hermes finds or creates the company, sets the company's lead_list_id when the company is new or currently has no list, then stores each person as a lead under that company.

The single-person personFirstName/personLastName create shape does not accept leadListId; it can only attach to an existing company via companyId.

Relevant pages:

Response Format

All responses follow a consistent format:

{
  "success": true,
  "data": { ... },
  "meta": {
    "page": 1,
    "limit": 20,
    "total": 100,
    "timestamp": "2026-03-14T14:15:53.984Z"
  }
}

Error Response

{
  "success": false,
  "error": "Description of what went wrong"
}

HTTP Status Codes

CodeMeaning
200Success
201Created
400Bad Request — invalid parameters
401Unauthorized — missing or invalid token
402Payment Required — insufficient wallet balance
404Not Found
429Rate Limited
500Internal Server Error
502Bad Gateway — subsystem unavailable

On this page