pdfoven-com Render API

Render PDFs, images, screenshots and social cards.

Operations 2

POST /v1/pdf Render a PDF #
POST /v1/image Render an image #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/pdfoven-com:pdfoven-com-render-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

pdfoven-com-render-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: PDFOven Render API
  version: 0.1.0
  description: PDF and image generation API. Send HTML, Markdown, a public URL, or JSON into a Handlebars template and get a Chromium-rendered PDF, PNG or JPEG back.
  contact:
    name: PDFOven support
    email: support@pdfoven.com
  termsOfService: https://pdfoven.com/terms
  x-logo:
    url: https://pdfoven.com/logo.png
servers:
- url: https://pdfoven.com
security:
- bearerAuth: []
- apiKeyHeader: []
tags:
- name: Render
  description: Render PDFs, images, screenshots and social cards.
paths:
  /v1/pdf:
    post:
      operationId: renderPdf
      summary: Render a PDF
      description: Renders a PDF from html, markdown, url, an inline Handlebars template, or a saved or built-in template.
      tags:
      - Render
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenderRequest'
      responses:
        '200':
          description: The rendered file, or a JSON envelope when response is "base64".
          headers:
            X-Render-Ms:
              description: Render time in milliseconds.
              schema:
                type: integer
            X-Usage-Remaining:
              description: Renders left within your plan's monthly limit this calendar month (0 once you pass it).
              schema:
                type: integer
            X-Usage-Grace-Remaining:
              description: Renders left before HTTP 429, counting the 10% grace buffer every plan gets past its monthly limit.
              schema:
                type: integer
            X-Usage-Notice:
              description: Present only when the account is past its plan limit and in the 10% grace buffer; says how many renders are left and suggests upgrading.
              schema:
                type: string
            Content-Disposition:
              description: Inline disposition with the requested filename.
              schema:
                type: string
          content:
            application/pdf:
              schema:
                type: string
                format: binary
            application/json:
              schema:
                $ref: '#/components/schemas/Base64Response'
        '400':
          description: 'invalid_request: the body is not valid JSON or failed validation.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: 'unauthorized: missing or invalid API key.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: 'template_not_found: template_id does not match a saved or built-in template.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: template_error or render_failed (blocked URL, timeout, HTTP error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: 'quota_exceeded: the monthly render limit plus the 10% grace buffer is used up. Failed renders do not count.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: 'internal_error: the render failed unexpectedly.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/image:
    post:
      operationId: renderImage
      summary: Render an image
      description: Takes the same sources as /v1/pdf and returns a PNG, or a JPEG with type=jpeg.
      tags:
      - Render
      parameters:
      - name: type
        in: query
        required: false
        description: Set to jpeg for a JPEG. Any other value returns a PNG.
        schema:
          type: string
          enum:
          - png
          - jpeg
          default: png
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenderRequest'
      responses:
        '200':
          description: The rendered file, or a JSON envelope when response is "base64".
          headers:
            X-Render-Ms:
              description: Render time in milliseconds.
              schema:
                type: integer
            X-Usage-Remaining:
              description: Renders left within your plan's monthly limit this calendar month (0 once you pass it).
              schema:
                type: integer
            X-Usage-Grace-Remaining:
              description: Renders left before HTTP 429, counting the 10% grace buffer every plan gets past its monthly limit.
              schema:
                type: integer
            X-Usage-Notice:
              description: Present only when the account is past its plan limit and in the 10% grace buffer; says how many renders are left and suggests upgrading.
              schema:
                type: string
            Content-Disposition:
              description: Inline disposition with the requested filename.
              schema:
                type: string
          content:
            image/png:
              schema:
                type: string
                format: binary
            image/jpeg:
              schema:
                type: string
                format: binary
            application/json:
              schema:
                $ref: '#/components/schemas/Base64Response'
        '400':
          description: 'invalid_request: the body is not valid JSON or failed validation.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: 'unauthorized: missing or invalid API key.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: 'template_not_found: template_id does not match a saved or built-in template.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: template_error or render_failed (blocked URL, timeout, HTTP error).
          content:
            application/json:
              $ref: '#/components/schemas/Error'
      '429':
        description: 'quota_exceeded: the monthly render limit plus the 10% grace buffer is used up.'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Error'
      '500':
        description: 'internal_error: ...'
components:
  schemas:
    RenderRequest:
      type: object
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    Error:
      type: object
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
    Base64Response:
      type: object
      description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
      x-ae-placeholder: true
externalDocs:
  description: PDFOven API documentation
  url: https://pdfoven.com/docs