Monopigi

Authentication

All API requests require authentication via a Bearer token.

API Keys

API keys are created from the API Tokens page in your dashboard. Keys follow the format:

mp_live_<random_string>

Include the key in the Authorization header of every request:

curl -H "Authorization: Bearer mp_live_YOUR_KEY" \
  "https://api.monopigi.com/v1/sources"

Tiers

Each API key is associated with a tier that determines access level and rate limits:

TierDaily RequestsFull-Text SearchContent DownloadRAG / AskEntity ResolutionPrice
Free5€0/mo
Pro5,000Yes€299/mo
EnterpriseUnlimitedYesYesYesYesCustom

Free Tier

Access to metadata for all sources. Ideal for evaluation and small projects. Includes:

  • Source listing and statistics
  • Document metadata (title, date, source, category)
  • Browse documents by source

Pro Tier

Full production access with search. Includes everything in Free, plus:

  • Full-text search across all sources
  • 5,000 requests per day

Enterprise Tier

Unlimited access with intelligence features. Includes everything in Pro, plus:

  • Natural language questions (RAG)
  • Entity resolution (lookup by VAT number, name, or ADA)
  • Similar document discovery
  • MCP server access
  • Unlimited daily requests
  • Priority support

Rate Limits

Rate limits are applied per API key on a daily basis. The API returns rate limit information in response headers:

HeaderDescription
X-RateLimit-LimitYour daily quota
X-RateLimit-RemainingRequests remaining today
X-RateLimit-ResetUnix timestamp when the quota resets

When you exceed your quota, the API returns 429 Too Many Requests:

{
  "detail": "Daily quota exceeded. Resets at 2026-03-23T00:00:00Z"
}

The Python SDK handles rate limiting automatically with exponential backoff and up to 3 retries.

Check Your Usage

curl -H "Authorization: Bearer mp_live_YOUR_KEY" \
  "https://api.monopigi.com/v1/usage"

Response:

{
  "tier": "pro",
  "daily_quota": 5000,
  "daily_used": 42,
  "daily_remaining": 4958,
  "reset_at": "2026-03-23T00:00:00Z"
}

Or via the SDK:

with MonopigiClient() as client:
    usage = client.usage()
    print(f"Used {usage.daily_used}/{usage.daily_quota} today")
    print(f"Tier: {usage.tier}")

Or via the CLI:

monopigi usage

Security

  • API keys are hashed before storage — we never store plaintext keys
  • All API traffic is encrypted via TLS
  • Keys can be revoked instantly from the dashboard
  • Use environment variables to store keys in production:
import os
from monopigi import MonopigiClient

client = MonopigiClient(token=os.environ["MONOPIGI_API_KEY"])
export MONOPIGI_API_KEY=mp_live_YOUR_KEY
monopigi sources  # CLI reads from env automatically

Error Responses

StatusMeaning
401 UnauthorizedMissing or invalid API key
403 ForbiddenFeature not available on your tier
429 Too Many RequestsDaily quota exceeded

All error responses include a JSON body:

{
  "detail": "Invalid or missing API token"
}