Authentication
Free tier is keyless. Paid plans use API keys.
No sign-up needed to get started. GET requests work without authentication – up to 200 renders per month per IP. Sign up for a free account to get an API key and 1,337 renders per month.
Unauthenticated
Send GET requests without any authentication. Rate limits are enforced by IP address.
- 200 renders per month
curl "https://szum.io/chart?config=%7B%22version%22%3A%222026-03-20%22%2C%22marks%22%3A%5B%7B%22type%22%3A%22barY%22%2C%22data%22%3A%5B%7B%22x%22%3A%22Q1%22%2C%22y%22%3A42%7D%5D%7D%5D%7D"Free
Sign up for a free account to unlock POST requests and higher limits.
- 1,337 renders per month
- 1 API key
Paid plans
Sign up at szum.io/sign-up to access a dashboard where you can create and manage API keys. Keys follow the format:
sz_live_...Pass the key in the Authorization header on POST requests:
curl -X POST https://szum.io/chart \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"version":"2026-03-20","marks":[{"type":"barY","data":[{"x":"Q1","y":42}]}]}'Keep your key secret. If compromised, rotate it from the dashboard.
GET requests
GET requests (image embeds) are always keyless and always follow the free tier path. There is no way to authenticate a GET embed.
<img src='https://szum.io/chart?config={"version":"2026-03-20","marks":[{"type":"barY","data":[{"x":"Q1","y":42}]}]}' />GET embeds are subject to the unauthenticated IP-based rate limit (200 / month).
Rate limits
Unauthenticated requests are limited to 10 requests per second per IP. Authenticated requests (with an API key) are limited to 30 requests per second per key. Each plan also has a monthly render allowance that resets on the 1st of each month (UTC). When you exceed either limit, the API returns 429 Too Many Requests. See Plans & Limits for details.