Everything an AI agent or integrator needs to read productquant.dev programmatically: a small public API, an OpenAPI specification, markdown content negotiation, and a machine-readable site index.
Two unauthenticated GET endpoints under /api/. All responses are JSON. Errors are always structured JSON with a machine-readable code, message, and resolution hint - never HTML error pages.
| Endpoint | Description |
|---|---|
GET /api/health | Liveness probe. Returns service status and server time. |
GET /api/v1/status | Service metadata plus discovery links (docs, OpenAPI spec, llms.txt) and the endpoint list. Start here when exploring. |
curl -s https://productquant.dev/api/v1/status | python3 -m json.tool
Unknown API paths return HTTP 404 with JSON:
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Unknown API path: /api/example",
"hint": "See https://productquant.dev/openapi.json for available endpoints."
}
}
The full machine-readable API surface is published at /openapi.json (OpenAPI 3.0). Every operation has a unique operationId, typed schemas, and descriptions compatible with LLM function-calling formats.
curl -s https://productquant.dev/openapi.json | python3 -m json.tool | head -40
Any content page can be served as markdown. Send Accept: text/markdown and the server converts the page to clean markdown. Responses vary on Accept, so CDN caches never mix variants:
curl -s https://productquant.dev/pricing -H "Accept: text/markdown"
The same negotiation applies to 404 responses: agents requesting markdown get a short recovery document listing the sitemap, llms.txt, docs index, and API map instead of a styled error page.
/llms.txt is the AI-facing navigation index: what ProductQuant does, every offer with pricing and URLs, key pages, blog clusters, and guidance for agents on when to use the product. The full XML URL list is at /sitemap.xml.
1. Fetch /llms.txt for orientation. 2. Check /api/v1/status for live resource links. 3. For a specific offer, fetch its page (e.g. /offers/churn-prediction) with Accept: text/markdown. 4. Route humans to /contact for bookings - there is no transactional API; engagements are scoped in conversation with the founder.