# Shotwisp > Shotwisp is a developer HTTPS API for uploading and sharing images, capturing website screenshots, and rendering web pages as PDFs. Bearer-token authentication, predictable JSON errors, explicit rate limits and quotas. Key facts: - API base URL: https://shotwisp.com - Authentication: `Authorization: Bearer ` (keys start with `sw_`; create one at https://shotwisp.com/dashboard/api-keys after signing up at https://shotwisp.com/signup) - OpenAPI 3.1 specification: https://shotwisp.com/openapi.json - Every error response: `{"error": {"code": "", "message": ""}}` - Rate limiting: per-minute budget per account; HTTP 429 carries Retry-After plus x-shotwisp-ratelimit-limit/-remaining/-reset headers - Quotas: monthly per plan; metered responses carry x-shotwisp-quota-limit/-remaining/-usage-percent headers; HTTP 402 quota_exceeded when spent ## Core endpoints - POST /api/v1/upload — Upload one image and get share, file, and delete URLs. Docs: https://shotwisp.com/docs/api/upload - POST /api/v1/upload/batch — Upload up to 10 images in one request. Docs: https://shotwisp.com/docs/api/upload-batch - POST /api/v1/screenshot — Capture a screenshot of a public web page. Docs: https://shotwisp.com/docs/api/screenshot - POST /api/v1/pdf — Render a public web page as a PDF. Docs: https://shotwisp.com/docs/api/pdf ## Documentation - [API reference](https://shotwisp.com/docs): authentication, endpoints, errors, rate limits, quotas — all server-rendered HTML - [AI agent guide](https://shotwisp.com/docs/ai-agents): integration and retry guidance for autonomous callers - [OpenAPI 3.1 spec](https://shotwisp.com/openapi.json): machine-readable schema for every endpoint, parameter, default, and error - [Full text docs](https://shotwisp.com/llms-full.txt): this documentation as one plain-text file - [Pricing and plan limits](https://shotwisp.com/pricing): free plan available; paid plans raise quotas, rate limits, and concurrency - [Changelog](https://shotwisp.com/changelog): dated API and documentation changes ## Usage constraints - Target URLs for screenshots/PDFs must be publicly reachable http(s) addresses; private networks and localhost are rejected - Uploads: images only (PNG, JPEG, GIF, WebP, SVG, AVIF), max 10 MB per file, validated by file bytes - Do not retry 401/402/413/415/422 without changing the request; honor Retry-After on 429; use exponential backoff on 5xx - Support: https://shotwisp.com/contact