QuickChart API

⭐ Beginner's Pick Development / No Auth Required Beginner HTTPS CORS
Free to Use Varies (check documentation)

Overview

QuickChart turns Chart.js configuration objects into chart images via a simple GET or POST request — no JavaScript runtime or canvas library required. You pass a JSON chart config as a URL parameter or request body, and the API returns a PNG, SVG, or PDF image of the rendered chart, making it ideal for embedding charts in emails, PDFs, and reports where JavaScript cannot run. No authentication is needed and the basic tier is completely free with generous limits.

💡

Beginner Tip

No setup required — encode a Chart.js config as the "c" query parameter in a GET request to https://quickchart.io/chart and you get a chart image back instantly. The easiest first chart is a bar chart with a small dataset; open the URL directly in a browser to preview it. URL-encode your config carefully — a missing brace or bracket will return a 400 error.

Available Data

randomly generated data
customizable output format
Use case: Integrate generate chart and graph images data into web and mobile applications

Example Response

JSON Response
{
  "status": "success",
  "data": {
    "result": "Data from QuickChart",
    "description": "Generate chart and graph images",
    "timestamp": "2025-01-15T10:00:00Z"
  }
}

Field Reference

(binary image) PNG (default), SVG, or PDF of the rendered chart returned directly in the response body; save to file or embed as img src

Implementation Example

const url = "https://quickchart.io/";
const response = await fetch(url);
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();
console.log(data);

What Can You Build?

Note: These code examples are AI-generated and unverified. Always refer to the official API documentation for accurate usage.

Common Errors & Troubleshooting

400 Bad Request / "could not parse chart" Malformed JSON in the chart config, often due to single quotes or missing URL encoding
Validate your JSON with a JSON linter first, use double quotes inside the config, and apply full URL encoding to the "c" parameter
Chart renders but looks empty Data values are all zero or the datasets array is missing the data field
Ensure each dataset object has a "data" array with numeric values matching the number of labels
Image too small or low resolution Default width (500px) is too small for print or high-DPI displays
Add width=800&height=400&devicePixelRatio=2 query parameters to increase output size and pixel density

Matrix Score Breakdown

🌐 Reachability 30/30
⚡ Speed 20/20
🔒 Security 15/15
🛠 Developer XP 20/20
✓ Reliability 7/15
Response Time 152ms

Fully tested on Apr 5, 2026

Technical Specifications

Auth No Auth
HTTPS REQUIRED
CORS YES
Category Development
Difficulty Beginner
Verified: 2026-04-04

Similar APIs

View All →