Developer Console

Meterkey is Hilo's metered OpenAI-compatible and provider-native AI Gateway API, with wallet holds, Cloudflare AI Gateway settlement, HMAC admin APIs, and agent-readable docs. It proxies LLM, image, audio, search, and other billable provider APIs through one Meterkey key. Use Hilo as the main product surface at hilo.cx.

OwnerHilo
Base URLhttps://meter.hilo.cx
Healthchecking...
OpenAPI3.1 JSON
Use APIhilo.cx

Proxy Quickstart

Use a Meterkey API key with existing OpenAI-compatible clients. Prefix models with the provider when using the unified route.

curl https://meter.hilo.cx/v1/chat/completions \
  -H "Authorization: Bearer $METERKEY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: smoke-001" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [{"role": "user", "content": "Reply with only: ok"}],
    "max_tokens": 8
  }'

Admin HMAC

Control-plane calls sign the raw request body. Mutating calls include idempotency_key in JSON.

message = timestamp + "." + raw_body
signature = "v1=" + hmac_sha256_hex(secret, message)

X-Meterkey-Timestamp: 1778740000
X-Meterkey-Signature: v1=<hex>

AI Agent Contract

Operations

MethodPathSummaryTag
POST /v1/places/lookup Find a place and get full contact details, hours, reviews and photos Places
POST /v1/places/search Discover places with broad text or nearby coordinates Places
GET /v1/places/{place_id} Get place details by Google place ID Places
GET /v1/places/{place_id}/photos/{photo_id} Stream a Google place photo through Meterkey Places
GET /healthz Health check Docs
GET /readyz Readiness check Docs
GET /version Deployment version Docs
GET /openapi.json OpenAPI document Docs
GET /llms.txt LLM entrypoint Docs
GET /llms-full.txt Full LLM context document Docs
POST /v1/chat/completions OpenAI-compatible chat completions Proxy
POST /v1/embeddings OpenAI-compatible embeddings Proxy
POST /v1/audio/speech OpenAI-compatible text-to-speech Proxy
POST /v1/audio/transcriptions OpenAI-compatible audio transcription Proxy
POST /v1/audio/translations OpenAI-compatible audio translation Proxy
POST /v1/images/generations OpenAI-compatible image generation Proxy
POST /v1/images/edits OpenAI-compatible image edit Proxy
POST /v1/images/variations OpenAI-compatible image variation Proxy
GET /v1/catalog/search Find a model or tool by what it does Catalog
POST /v1/catalog/search Find a model or tool by what it does (JSON body) Catalog
GET /v1/analytics/summary Authenticated user usage summary Analytics
GET /v1/analytics/activity Authenticated user activity chart series Analytics
GET /v1/analytics/top-models Authenticated user top models Analytics
GET /v1/analytics/requests Authenticated user request logs Analytics
GET /v1/analytics/requests.csv Export authenticated user request logs as CSV Analytics
GET /v1/analytics/audit-dump Export authenticated user's raw audit dump Analytics
GET /v1/analytics/requests/{request_id} Read one authenticated user request log Analytics
GET /v1/analytics/requests/{request_id}/gateway-log Read the Cloudflare AI Gateway log for one authenticated user request Analytics
GET /v1/wallet Read the authenticated credential's available wallet balance Wallet
POST /openai/v1/chat/completions OpenAI native-compatible chat path Proxy
POST /anthropic/v1/messages Anthropic Messages API through Meterkey Proxy
POST /openrouter/v1/chat/completions OpenRouter chat completions through Meterkey Proxy
POST /gateway/{provider}/{path} Generic Cloudflare AI Gateway provider-native path Proxy
POST /quiver/v1/svgs/vectorizations Quiver SVG vectorization through Meterkey Proxy
GET /searchapi/api/v1/search SearchAPI Google Flights and Travel search Proxy
POST /typesafe/v1/systemone TypeSafe Jev typed evaluation Proxy
POST /apify/v2/acts/{actor}/runs Start an Apify actor run through Meterkey (async) Proxy
GET /apify/v2/acts/{actor}/runs List your runs for one Apify actor Proxy
GET /apify/v2/actor-runs List your Apify runs across actors Proxy
GET /apify/v2/actor-runs/{runId} Get one of your Apify runs Proxy
POST /apify/v2/actor-runs/{runId}/abort Abort one of your Apify runs Proxy
GET /apify/v2/actor-runs/{runId}/dataset/items Read result items from one of your Apify runs Proxy
POST /exa/agent/runs Create an Exa Agent run through Meterkey (async) Proxy
GET /exa/agent/runs List your Exa Agent runs Proxy
GET /exa/agent/runs/{runId} Get one of your Exa Agent runs Proxy
POST /exa/agent/runs/{runId}/cancel Cancel one of your Exa Agent runs Proxy
POST /soniox/v1/files Upload an audio file to Soniox through Meterkey Proxy
GET /soniox/v1/files List your Soniox audio uploads Proxy
POST /soniox/v1/transcriptions Create a Soniox async transcription through Meterkey Proxy
GET /soniox/v1/transcriptions List your Soniox transcriptions Proxy
GET /soniox/v1/transcriptions/{id} Get one of your Soniox transcriptions Proxy
DELETE /soniox/v1/transcriptions/{id} Delete one of your Soniox transcriptions Proxy
GET /soniox/v1/transcriptions/{id}/transcript Fetch the transcript of a completed Soniox transcription Proxy
POST /aws-bedrock/{path} Amazon Bedrock native path /aws-bedrock Proxy
POST /bedrock/{path} Amazon Bedrock native path /bedrock Proxy
POST /amazon-bedrock/{path} Amazon Bedrock native path /amazon-bedrock Proxy
POST /anthropic/{path} Anthropic native path /anthropic Proxy
POST /azure-openai/{path} Azure OpenAI native path /azure-openai Proxy
POST /azureopenai/{path} Azure OpenAI native path /azureopenai Proxy
POST /baseten/{path} Baseten native path /baseten Proxy
POST /cartesia/{path} Cartesia native path /cartesia Proxy
POST /cerebras/{path} Cerebras native path /cerebras Proxy
POST /cohere/{path} Cohere native path /cohere Proxy
POST /deepgram/{path} Deepgram native path /deepgram Proxy
POST /deepseek/{path} DeepSeek native path /deepseek Proxy
POST /elevenlabs/{path} ElevenLabs native path /elevenlabs Proxy
POST /fal/{path} Fal AI native path /fal Proxy
GET /fal/{path} Fal queue status/result polling through Meterkey Proxy
PUT /fal/{path} Fal queue cancellation through Meterkey Proxy
POST /fal Fal AI native custom-target root path Proxy
POST /google-ai-studio/{path} Google AI Studio native path /google-ai-studio Proxy
POST /google/{path} Google AI Studio native path /google Proxy
POST /gemini/{path} Google AI Studio native path /gemini Proxy
POST /google-vertex-ai/{path} Google Vertex AI native path /google-vertex-ai Proxy
POST /vertex/{path} Google Vertex AI native path /vertex Proxy
POST /groq/{path} Groq native path /groq Proxy
POST /huggingface/{path} HuggingFace native path /huggingface Proxy
POST /ideogram/{path} Ideogram native path /ideogram Proxy
POST /mistral/{path} Mistral AI native path /mistral Proxy
POST /openai/{path} OpenAI native path /openai Proxy
POST /openrouter/{path} OpenRouter native path /openrouter Proxy
POST /parallel/{path} Parallel native path /parallel Proxy
POST /perplexity-ai/{path} Perplexity native path /perplexity-ai Proxy
POST /perplexity/{path} Perplexity native path /perplexity Proxy
POST /replicate/{path} Replicate native path /replicate Proxy
POST /xai/{path} xAI native path /xai Proxy
POST /grok/{path} xAI native path /grok Proxy
POST /workers-ai/{path} Workers AI native path /workers-ai Proxy
POST /workersai/{path} Workers AI native path /workersai Proxy
POST /admin/v1/users Create a Meterkey user Admin
GET /admin/v1/users/{user_id}/wallet Read wallet snapshot Wallet
POST /admin/v1/users/{user_id}/wallet/grant-subscription Grant or replace subscription credits Wallet
POST /admin/v1/users/{user_id}/wallet/topup Top up non-expiring credits Wallet
POST /admin/v1/users/{user_id}/wallet/grant-promo Grant promotional credits Wallet
POST /admin/v1/users/{user_id}/wallet/revoke-promo Revoke the unspent remainder of one referenced promotional grant Wallet
POST /admin/v1/users/{user_id}/wallet/refund Refund credits into a selected pool Wallet
POST /admin/v1/users/{user_id}/wallet/reserve Internal test reserve endpoint Wallet
POST /admin/v1/users/{user_id}/wallet/settle Internal test settle endpoint Wallet
POST /admin/v1/users/{user_id}/wallet/release Internal test release endpoint Wallet
POST /admin/v1/users/{user_id}/wallet/sweep-expired-holds Sweep expired holds Wallet
GET /admin/v1/users/{user_id}/wallet/ledger Read wallet ledger Wallet
POST /admin/v1/users/{user_id}/keys Create a Meterkey API key Keys
GET /admin/v1/users/{user_id}/keys List Meterkey API keys Keys
GET /admin/v1/analytics/summary Usage summary Analytics
GET /admin/v1/analytics/activity Activity chart series Analytics
GET /admin/v1/analytics/top-models Top models by spend Analytics
GET /admin/v1/analytics/requests Search request logs Analytics
GET /admin/v1/analytics/requests.csv Export request logs as CSV Analytics
GET /admin/v1/analytics/audit-dump Export raw audit dump Analytics
GET /admin/v1/analytics/requests/{request_id} Read one request log Analytics
GET /admin/v1/analytics/requests/{request_id}/gateway-log Read the Cloudflare AI Gateway log for one request Analytics
GET /admin/v1/users/{user_id}/analytics/summary User usage summary Analytics
GET /admin/v1/users/{user_id}/analytics/activity User activity chart series Analytics
GET /admin/v1/users/{user_id}/analytics/top-models User top models by spend Analytics
GET /admin/v1/users/{user_id}/analytics/requests Search user request logs Analytics
GET /admin/v1/users/{user_id}/analytics/requests.csv Export user request logs as CSV Analytics
GET /admin/v1/users/{user_id}/analytics/audit-dump Export user raw audit dump Analytics
GET /admin/v1/keys/{key_id}/analytics/summary Key usage summary Analytics
GET /admin/v1/keys/{key_id}/analytics/activity Key activity chart series Analytics
GET /admin/v1/keys/{key_id}/analytics/top-models Key top models by spend Analytics
GET /admin/v1/keys/{key_id}/analytics/requests Search key request logs Analytics
GET /admin/v1/keys/{key_id}/analytics/requests.csv Export key request logs as CSV Analytics
GET /admin/v1/keys/{key_id}/analytics/audit-dump Export key raw audit dump Analytics
GET /admin/v1/pricing/models List model pricing rows Pricing
POST /admin/v1/pricing/models Create a new model pricing row Pricing