Wallabi developer resources

The Wallabi API, OpenAPI spec, authentication, rate limits, versioning, and error format, in one place for developers and AI agents.

Everything a developer or an AI agent needs to work with Wallabi programmatically.

At a glance

ResourceWhere
Wallabi website API (JSON, read-only, v1)/api/v1
API versions/api
OpenAPI 3.1 spec/openapi.json
llms.txt (site map for language models)/llms.txt
Homepage as MarkdownGET / with Accept: text/markdown
Wallabi platform docsOverview
Wallabi platform authentication (API tokens)Prerequisites
Wallabi appapp.wallabi.ai

All paths are on https://www.wallabi.ai.

Wallabi website API

A read-only JSON API over the public content of wallabi.ai. It needs no authentication. It is meant for server-side callers (agents, crawlers, integrations) and sends no CORS headers, so JavaScript in a browser on another site can’t call it directly.

OperationRequestReturns
listApiVersionsGET /apiEvery version and which one is current
getApiIndexGET /api/v1Endpoints, rate-limit policy, versions
listArticlesGET /api/v1/articlesEvery published article, newest first
getArticleGET /api/v1/articles/<slug>One article
listDocsGET /api/v1/docsEvery page of the Wallabi platform docs
listServicesGET /api/v1/servicesWallabi’s engagement models

Lists come back as { "data": [...] }. The OpenAPI spec types every field, and each operation’s operationId is ready to use as a function-calling tool name.

curl -s https://www.wallabi.ai/api/v1/articles -H 'Accept: application/json'

Authentication

The website API is public. The Wallabi platform uses API tokens: sign in to the Wallabi app, open Settings > API Tokens, and create one. Development tooling reads it from WALLABI_API_TOKEN. See Prerequisites and Getting started.

Rate limits

The website API allows 60 requests per 60 seconds per client. Each server instance enforces it on its own, so stay under the numbers in the headers and you will never be limited. Every response says where you stand, using the IETF RateLimit header fields:

RateLimit-Policy: "default";q=60;w=60
RateLimit: "default";r=59;t=42

q is the quota, w the window in seconds, r the requests left, and t the seconds until the window resets. Past the quota, the API answers 429 Too Many Requests with a Retry-After header (in seconds). Wait that long, then retry.

Versioning and deprecation

  • The version is in the URL path: /api/v1. GET /api lists every version and which one is current.
  • Within a version, responses only gain new optional fields. Anything that would break a client ships as a new version (/api/v2).
  • When a version is retired, every response from it carries a Deprecation header (RFC 9745) with the date it was deprecated, a Sunset header (RFC 8594) with the date it stops answering, and a Link header pointing to this policy (rel="deprecation") and to the replacement (rel="successor-version").
  • A deprecated version keeps working for at least 180 days before its sunset date.

Errors

Every 4xx and 5xx response from the API is JSON with the same shape. The API answers GET and HEAD; other methods get a 405 with an Allow header:

{
	"ok": false,
	"message": "No article with this slug.",
	"error": {
		"status": 404,
		"code": "not_found",
		"message": "No article with this slug.",
		"hint": "List articles at /api/v1/articles to find a valid slug.",
		"docs": "https://www.wallabi.ai/openapi.json"
	}
}

Branch on error.code, which is stable: not_found, method_not_allowed, rate_limited, internal_error, and so on. error.message is for people. The spec defines this as the Error schema.