getApiIndex
GET /api/v1
The API root. Lists the operations, the error model and the rate-limit policy, so a caller can use the API without parsing the OpenAPI document first.
curl "https://robustdevs.co/api/v1"
A public read-only API, an MCP server, an OpenAPI 3.1 description, and a CLI. No API key, no signup, no sandbox to request. Everything on this page is live and callable right now.
Base URL https://robustdevs.co. Every operation is a GET, every response is public information, and there is no authentication step to get wrong. Canonical paths are versioned under /api/v1/; the unversioned /api/ paths are stable aliases of the same handlers.
GET /api/v1
The API root. Lists the operations, the error model and the rate-limit policy, so a caller can use the API without parsing the OpenAPI document first.
curl "https://robustdevs.co/api/v1"
GET /api/v1/blogs
Published articles, newest first.
curl "https://robustdevs.co/api/v1/blogs?limit=1"
GET /api/v1/case-studies
Client case studies, newest first, with outcome metrics and tech stack where the client permitted publication.
curl "https://robustdevs.co/api/v1/case-studies?limit=1"
Model Context Protocol over Streamable HTTP, protocol version 2025-06-18 and no authentication. Point a client at https://robustdevs.co/api/mcp; the same server also answers on /mcp and /.well-known/mcp, and publishes its card at /.well-known/mcp/server-card.json.
One npm package, zero dependencies, no API key. It is a thin client over the same endpoints documented above — nothing is available through it that is not available through curl.
npx robustdevs blog --limit 3 # no install
npm install -g robustdevs # CLI
npm install robustdevs # SDK
import { RobustDevsClient } from 'robustdevs';
const client = new RobustDevsClient();
await client.listBlogPosts({ limit: 5 });Every failure is application/problem+json (RFC 9457) and validates against the ApiError schema in the OpenAPI document. Branch on error.code, never on the prose in title.
120 requests per 60 seconds, advertised on every response — success and failure alike — as RFC 9331 headers, so a caller can self-throttle instead of discovering the limit by hitting it. Exceeding it returns 429 with Retry-After. Enforcement is best-effort and per instance rather than global: read the headers as a courtesy signal, not a security boundary.
RateLimit-Policy: "content";q=120;w=60 RateLimit: "content";r=118;t=57
The version is in the path. Breaking changes ship under a new one — /api/v2/ — and a version is never changed in place. Every response names the version that served it in an API-Version header. When a version is scheduled for removal its responses carry Deprecation (RFC 9745) and Sunset (RFC 8594), with the sunset date at least 180 days out. No version is deprecated today, which is why neither header is present. Full policy: /deprecation-policy.md.
All of these are also advertised as RFC 8288 Link headers on every route on this site, so an agent that lands anywhere can find them with one HEAD request.
No. There is no authentication, no signup and no key to rotate. Every documented operation is a GET over content already published on robustdevs.co, so the API exposes nothing that the website does not. Send the request and read the response.
Robust Devs builds AI products for marketing, healthtech and fintech. If you are integrating agents into a product rather than reading about ours, start with a conversation.