Loading...
A free, read-only JSON API for AlgoBlazer problems and the daily challenge. It needs no key and no sign-up, and CORS is open, so it works from a browser, a server or a chat bot. Every response is JSON over HTTPS.
Base URL: https://algoblazer.com/api/v1
Fetch today's daily challenge:
curl "https://algoblazer.com/api/v1/daily?client=my-bot"
const res = await fetch('https://algoblazer.com/api/v1/problems/two-sum?client=my-bot');
if (!res.ok) throw new Error((await res.json()).error);
const problem = await res.json();
console.log(problem.title, problem.difficulty, problem.url);One problem by its slug. The slug is the last segment of the problem's page URL: https://algoblazer.com/learn/two-sum has the slug two-sum. Slugs use lowercase letters, digits and hyphens.
Only problems listed in the public catalog are served. Themed variants and community problems are not part of the API and return 404.
GET https://algoblazer.com/api/v1/problems/two-sum
Today's daily challenge. The day is in UTC, so the problem changes at midnight UTC. The response has the same shape as /problems/:slug plus a date field (YYYY-MM-DD).
GET https://algoblazer.com/api/v1/daily
{
"date": "2026-09-24",
"title": "Two Sum",
"slug": "two-sum",
"difficulty": "bronze",
"url": "https://algoblazer.com/learn/two-sum",
"description": "# Two Sum\n\nGiven an array of integers `nums` ...",
"constraints": "- 2 ≤ `nums.length` ≤ 10^5\n- ...",
"examples": [
{
"input": "nums = [2,7,11,15], target = 9",
"output": "[0,1]",
"explanation": null
}
]
}| Field | Type | Notes |
|---|---|---|
date | string | Only on /daily. The UTC day, as YYYY-MM-DD. |
title | string | The problem title. |
slug | string | The problem’s identifier, as used in its URL. |
difficulty | string | bronze, silver or gold, from easiest to hardest. |
url | string | The problem page on AlgoBlazer. |
description | string | Markdown. It already includes the examples as fenced code blocks. Math is written as plain Unicode (≤, ×) rather than LaTeX. |
constraints | string | null | A Markdown bullet list, or null when the problem has none. |
examples | array | The public sample cases only; hidden test cases are never exposed. |
examples[].input | string | The arguments as name = value pairs, separated by commas. |
examples[].output | string | The expected return value as compact JSON. |
examples[].explanation | string | null | A short walkthrough, when the example has one. |
v1 is stable: fields may be added, but none will be renamed or removed. Ignore fields you don't recognize.
Errors come back as JSON with a single error message.
| Status | Body | When |
|---|---|---|
| 404 | {"error":"Problem not found"} | The slug is unknown, or the problem is not publicly listed. |
| 404 | {"error":"No daily challenge today"} | No daily challenge is set for today. |
| 429 | {"error":"Too many requests"} | Over the rate limit. Wait for the number of seconds in the Retry-After header. |
| 500 | {"error":"Internal error"} | Something went wrong on our side. Retry later. |
Cache-Control: max-age=300 and /daily with max-age=60. Errors are never cached.?client=<name> or an X-AlgoBlazer-Client: <name> header. It is optional, but it helps us tell callers apart if something goes wrong. Use letters, digits, spaces, ., - and _, up to 64 characters.url.