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:
| Tier | Daily Requests | Full-Text Search | Content Download | RAG / Ask | Entity Resolution | Price |
|---|---|---|---|---|---|---|
| Free | 5 | — | — | — | — | €0/mo |
| Pro | 5,000 | Yes | — | — | — | €299/mo |
| Enterprise | Unlimited | Yes | Yes | Yes | Yes | Custom |
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:
| Header | Description |
|---|---|
X-RateLimit-Limit | Your daily quota |
X-RateLimit-Remaining | Requests remaining today |
X-RateLimit-Reset | Unix 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
| Status | Meaning |
|---|---|
401 Unauthorized | Missing or invalid API key |
403 Forbidden | Feature not available on your tier |
429 Too Many Requests | Daily quota exceeded |
All error responses include a JSON body:
{
"detail": "Invalid or missing API token"
}