waypoints API Documentation
Everything you need to integrate waypoints into your app. Five modules, one API key, one credit balance.
Modules
Generate pixel-perfect screenshots and PDFs from any URL or HTML string using headless Chromium.
/api/v1/renderConvert documents, images, video, and data between formats. DOCX to PDF, HEIC to JPG, MP4 to GIF, and more.
/api/v1/convertExtract structured data from PDFs, invoices, and documents using Claude AI with guaranteed JSON output.
/api/v1/extractValidate EU VAT numbers via VIES, check IBANs with mod-97, and look up Belgian company records from the CBE.
/api/v1/verifySend transactional emails with custom domains, attachment support, and full delivery tracking.
/api/v1/sendQuick Start
1. Install the SDK
npm install @waypoints/sdk2. Create a client
import waypoints from "@waypoints/sdk";
const wp = new waypoints({
apiKey: process.env.WAYPOINTS_API_KEY, // wp_live_...
});3. Make your first call
// Screenshot any URL
const result = await wp.render.screenshot({
url: "https://example.com",
width: 1280,
format: "png",
});
console.log(result.url); // presigned MinIO URL (24h TTL)
console.log(result.credits_used); // 2Authentication
All API requests must include your API key in the x-api-key header. You can create and manage API keys from the dashboard.
curl -X POST https://api.waypoints.tech/v1/render/screenshot \
-H "x-api-key: wp_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com" }'| Key prefix | Environment | Credits deducted |
|---|---|---|
| wp_live_... | Production | Yes |
| wp_test_... | Sandbox | No — free to call |
Security note
API keys are shown only once at creation time. waypoints stores only the sha256 hash — the raw key cannot be retrieved. Store your key in an environment variable and never commit it to version control.
Error Format
All errors follow a consistent JSON envelope with a machine-readable code, human-readable message, and a link to the relevant documentation.
{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "You have 3 credits remaining. This call costs 5.",
"docs": "https://waypoints.sh/docs/errors#insufficient-credits"
}
}| Code | HTTP | Description |
|---|---|---|
| MISSING_API_KEY | 401 | No x-api-key header provided |
| INVALID_API_KEY | 401 | Key not found or has been revoked |
| INSUFFICIENT_CREDITS | 402 | Not enough credits for this call |
| INVALID_INPUT | 422 | Missing or malformed request fields |
| RENDER_FAILED | 500 | Puppeteer / headless Chrome error |
| CONVERSION_FAILED | 500 | LibreOffice or FFmpeg error |
| EXTRACT_FAILED | 500 | Claude API error during extraction |
| SEND_FAILED | 500 | Postal SMTP delivery error |
| RATE_LIMIT_EXCEEDED | 429 | Too many requests per minute |