APIFreaks - API Hub for Developers PDF Template APIs API

The PDF Template APIs API from APIFreaks - API Hub for Developers — 2 operation(s) for rendering a PDF from a template designed in the browser Template Builder. Unlike every other PDF surface these render synchronously and return a hosted pdf_url with a machine-readable expiration_time rather than a taskId. Shipped 2026-08-11.

Operations 2

POST /pdf/template/generate/bulk Generate PDFs in bulk from a CSV #
POST /pdf/template/generate Generate a PDF from a template #

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/apifreaks-api-hub-for-developers-pdf-template-apis-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

apifreaks-api-hub-for-developers-pdf-template-apis-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Apifreaks Api Hub For Developers PDF Template APIs API
  version: 1.0.0
  contact:
    name: APIFreaks Support
    url: https://apifreaks.com/contact
    email: support@apifreaks.com
  description: 'Operations tagged PDF Template APIs across 2 of this provider''s published API definitions: apifreaks-api-hub-for-developers-pdf-generator-bulk-openapi.json, apifreaks-api-hub-for-developers-pdf-generator-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.apifreaks.com/v1.0
  description: PDF Generator API Server
security:
- ApiKeyAuthHeader: []
- ApiKeyAuthQuery: []
tags:
- name: PDF Template APIs
paths:
  /pdf/template/generate/bulk:
    post:
      tags:
      - PDF Template APIs
      summary: Generate PDFs in bulk from a CSV
      description: Upload a CSV file where each row is one record. The API generates one PDF per row and returns an array of results, each with its own pdf_url. Rows are processed independently, so a failure in one row does not block the rest of the batch. The response gives a row-by-row breakdown of which PDFs succeeded and which failed.
      parameters:
      - name: template_id
        in: query
        required: true
        schema:
          type: string
        description: The template to render, from the APIFreaks PDF Template Builder. Copy it from your dashboard when you save the template.
      - name: version
        in: query
        required: false
        schema:
          type: string
          pattern: ^v
        description: Template version to render, e.g. v2. Must start with v. Omit this parameter entirely to use the latest version; the literal value 'latest' is not accepted by the API.
      requestBody:
        description: Multipart form-data body carrying the CSV file to render. Each row in the CSV is one record and produces one PDF.
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CsvUploadRequest'
      responses:
        '200':
          description: PDFs generated successfully. The response is an array of results, one entry per CSV row, each with its own pdf_url.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TemplateGenerationResponse'
              examples:
                success:
                  summary: Generated PDFs for two rows
                  value:
                  - template_id: 73691bce-1c58-4370-acc6-64b2dd14f81c
                    pdf_url: https://s3.eu-central-2.wasabisys.com/w.storage.apifreaks.com/pdf_templates/73691bce-1c58-4370-acc6-64b2dd14f81c/Candidate%20Resume_20260810141245054106_1.pdf
                    created_at: '2026-08-10T14:12:47.887Z'
                    expiration_time: '2026-11-10T14:12:47.887Z'
                  - template_id: 73691bce-1c58-4370-acc6-64b2dd14f81c
                    pdf_url: https://s3.eu-central-2.wasabisys.com/w.storage.apifreaks.com/pdf_templates/73691bce-1c58-4370-acc6-64b2dd14f81c/Candidate%20Resume_20260810141245054154_2.pdf
                    created_at: '2026-08-10T14:12:47.940Z'
                    expiration_time: '2026-11-10T14:12:47.940Z'
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '400':
          description: Bad Request — Missing parameters, a file that is not a CSV, or data larger than 10 MB.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                CsvFileRequired:
                  summary: Uploaded file is not a CSV
                  value:
                    timestamp: '2026-08-10T14:13:14.497Z'
                    path: /v1.0/generate-pdf/bulk
                    status: 400
                    error: CSV File Required
                    message: Only CSV files are supported. Please upload a valid CSV file.
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '401':
          description: Unauthorized — The API key is missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                InvalidApiKey:
                  summary: Provided API key is invalid
                  value:
                    error: API Access Exception
                    message: 'Provided API key is invalid. [For Technical Support: support@apifreaks.com]'
                    path: /v1.0/pdf/template/generate/bulk
                    status: 401
                    timestamp: '2026-08-10T14:13:14.996Z'
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '403':
          description: Forbidden — The account does not have access to this template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '404':
          description: Not Found — No template matches the template_id, or the requested version does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '415':
          description: Unsupported Media Type — The request Content-Type is not supported for this endpoint.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '422':
          description: Unprocessable Entity — The request contains invalid or missing data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '500':
          description: Internal Server Error — An unexpected error occurred, or the PDF could not be generated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '504':
          description: Gateway Timeout — The request went past the 100 second processing limit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
      operationId: generatePdfsFromCsv
    servers:
    - url: https://api.apifreaks.com/v1.0
      description: PDF Generator API Server
  /pdf/template/generate:
    post:
      tags:
      - PDF Template APIs
      summary: Generate a PDF from a template
      description: Renders the template identified by template_id with the JSON data supplied in the request body (or fetched from data_url). Returns a hosted URL for the generated PDF. Provide either a request body or a data_url; one of the two is required. The keys of the data object are the fields you bound when you designed the template in the APIFreaks PDF Template Builder, so the exact shape is up to you. Pin the version parameter to a specific template version (e.g. version=v2) so later design changes never touch what is already live; omit it to use the latest version.
      parameters:
      - name: template_id
        in: query
        required: true
        schema:
          type: string
        description: The template to render, from the APIFreaks PDF Template Builder. Copy it from your dashboard when you save the template.
      - name: version
        in: query
        required: false
        schema:
          type: string
          pattern: ^v
        description: Template version to render, e.g. v2. Must start with v. Omit this parameter entirely to use the latest version; the literal value 'latest' is not accepted by the API.
      - name: data_url
        in: query
        required: false
        schema:
          type: string
          format: uri
        description: A URL the API fetches your JSON data from, instead of the request body. Provide this when you are not sending a request body.
      requestBody:
        description: The template's data as a JSON object. The keys are the fields you bound when you designed the template, so the exact shape is up to you. Provide the body when you are not passing a data_url; one of the two is required.
        required: false
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              description: Free-form JSON object whose keys map to the fields bound in the template.
            examples:
              resumeTemplate:
                summary: Resume template data
                value:
                  candidate_name: Ava Thompson
                  candidate_title: Senior Operations Analyst
                  email: ava.thompson@example.com
                  phone: +1 (555) 381-2048
                  city: Austin, TX
                  portfolio_url: portfolio.example.com
                  profile_summary: Analytical operations professional with 8+ years of experience improving reporting pipelines, streamlining process documentation, and coordinating cross-functional delivery for distributed teams across multiple time zones.
                  company_name: Northwind Logistics
                  job_title: Operations Analyst
                  employment_period: 2021 - Present
                  job_achievement_1: Led weekly KPI reporting for finance, fulfillment, and customer success stakeholders across three business units.
                  job_achievement_2: Reduced manual reconciliation work by 35% through workflow redesign and documentation automation.
                  job_achievement_3: Spearheaded a cross-team initiative that improved on-time delivery metrics by 18% within six months.
                  skills:
                  - skill: Process Improvement
                    level: Advanced
                    years: '7'
                  - skill: Stakeholder Reporting
                    level: Expert
                    years: '8'
                  - skill: Cross-functional Coordination
                    level: Advanced
                    years: '5'
                  - skill: Workflow Documentation
                    level: Advanced
                    years: '6'
                  degree: B.S. in Information Systems
                  institution: University of Texas
                  graduation_year: '2018'
                  certification_1: Certified Business Analysis Professional (CBAP)
                  certification_2: Six Sigma Green Belt
                  languages: English (Native), Spanish (Professional)
              businessReport:
                summary: Business report template data
                value:
                  report_title: Quarterly Business Report
                  report_period: Q4 2024
                  prepared_by: Marketing Team
                  revenue: 125000
                  growth_rate: 15
                  customer_count: 520
                  monthly_comparison:
                  - metric: Revenue
                    previous: $108,000
                    current: $125,000
                    change: +15.7%
                  - metric: Active Customers
                    previous: '480'
                    current: '520'
                    change: +8.3%
      responses:
        '200':
          description: PDF generated successfully. The response contains the hosted URL of the rendered PDF along with its creation and expiration times.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplateGenerationResponse'
              examples:
                success:
                  summary: Generated PDF
                  value:
                    template_id: 73691bce-1c58-4370-acc6-64b2dd14f81c
                    pdf_url: https://s3.eu-central-2.wasabisys.com/w.storage.apifreaks.com/pdf_templates/73691bce-1c58-4370-acc6-64b2dd14f81c/Candidate%20Resume_20260810141214723405.pdf
                    created_at: '2026-08-10T14:12:17.673Z'
                    expiration_time: '2026-11-10T14:12:17.673Z'
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '400':
          description: Bad Request — Missing or malformed parameters, missing data, or an unreachable data_url.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                MissingTemplateId:
                  summary: template_id is missing
                  value:
                    error: Invalid Param Exception
                    message: please pass correct parameters
                    path: /v1.0/pdf/template/generate
                    status: 400
                    timestamp: '2026-08-10T14:13:13.195Z'
                InvalidVersion:
                  summary: version does not start with v
                  value:
                    timestamp: '2026-08-10T14:13:13.689Z'
                    path: /v1.0/generate-pdf
                    status: 400
                    error: Invalid Template Version
                    message: Please provide a valid template version starting with 'v'.
                NoData:
                  summary: No data supplied to fill the template
                  value:
                    timestamp: '2026-08-10T14:13:14.172Z'
                    path: /v1.0/generate-pdf
                    status: 400
                    error: Template Data Not Provided
                    message: No data provided for the template. Please provide valid data to generate pdf.
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '401':
          description: Unauthorized — The API key is missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                InvalidApiKey:
                  summary: Provided API key is invalid
                  value:
                    error: API Access Exception
                    message: 'Provided API key is invalid. [For Technical Support: support@apifreaks.com]'
                    path: /v1.0/pdf/template/generate
                    status: 401
                    timestamp: '2026-08-10T14:13:14.996Z'
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '403':
          description: Forbidden — The account does not have access to this template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                AccessDenied:
                  summary: No access to the template
                  value:
                    timestamp: '2026-08-10T14:13:15.000Z'
                    path: /v1.0/generate-pdf
                    status: 403
                    error: Template Access Denied
                    message: Your account does not have access to this template.
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '404':
          description: Not Found — No template matches the template_id, or the requested version does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                TemplateNotFound:
                  summary: No template matches the template_id
                  value:
                    timestamp: '2026-08-10T14:13:14.677Z'
                    path: /v1.0/generate-pdf
                    status: 404
                    error: Template Not Found
                    message: Please provide a valid template ID.
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '415':
          description: Unsupported Media Type — The request Content-Type is not supported for this endpoint.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                UnsupportedMediaType:
                  summary: Content-Type is not supported
                  value:
                    timestamp: '2026-08-10T14:13:15.500Z'
                    path: /v1.0/generate-pdf
                    status: 415
                    error: Unsupported Media Type
                    message: The request Content-Type is not supported for this endpoint.
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '422':
          description: Unprocessable Entity — The request contains invalid or missing data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                InvalidData:
                  summary: Invalid or missing data
                  value:
                    timestamp: '2026-08-10T14:13:16.100Z'
                    path: /v1.0/generate-pdf
                    status: 422
                    error: Invalid Template Data
                    message: The request contains invalid or missing data.
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '500':
          description: Internal Server Error — An unexpected error occurred, or the PDF could not be generated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                GenerationFailed:
                  summary: PDF could not be generated
                  value:
                    timestamp: '2026-08-10T14:13:16.700Z'
                    path: /v1.0/generate-pdf
                    status: 500
                    error: PDF Generation Failed
                    message: The PDF could not be generated. Try the request again.
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
        '504':
          description: Gateway Timeout — The request went past the 100 second processing limit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ProcessingLimit:
                  summary: Request exceeded the 100 second processing limit
                  value:
                    timestamp: '2026-08-10T14:13:17.300Z'
                    path: /v1.0/generate-pdf
                    status: 504
                    error: Processing Timeout
                    message: The request went past the 100 second processing limit. Reduce the input size or retry.
          headers:
            X-AF-Credits-Cost:
              $ref: '#/components/headers/X-AF-Credits-Cost'
      operationId: generatePdfFromTemplate
    servers:
    - url: https://api.apifreaks.com/v1.0
      description: PDF Generator API Server
components:
  schemas:
    ErrorResponse:
      type: object
      description: Standard error envelope returned by the API on failed requests.
      required:
      - message
      properties:
        error:
          type: string
          description: Short error category or exception type.
        message:
          type: string
          description: Human-readable error message describing the failure.
        path:
          type: string
          description: API endpoint path that produced the error.
        status:
          type: integer
          description: HTTP status code returned with the error.
        timestamp:
          type: string
          format: date-time
          description: Timestamp when the error occurred (ISO 8601).
    TemplateGenerationResponse:
      type: object
      description: Result of a PDF generation request, containing the hosted URL of the generated PDF.
      required:
      - template_id
      - pdf_url
      - created_at
      - expiration_time
      properties:
        template_id:
          type: string
          description: The template that was rendered.
        pdf_url:
          type: string
          description: Hosted URL of the generated PDF.
        created_at:
          type: string
          format: date-time
          description: When the PDF was generated (ISO 8601).
        expiration_time:
          type: string
          format: date-time
          description: When the hosted PDF expires (ISO 8601).
    CsvUploadRequest:
      type: object
      description: Multipart form-data request body containing the CSV file to render in bulk.
      required:
      - file
      properties:
        file:
          type: string
          format: binary
          description: A CSV file uploaded as form-data where each row is one record. One PDF is generated per row.
  headers:
    X-AF-Credits-Cost:
      description: Specifies the number of credits consumed by the current request.
      schema:
        type: integer
  securitySchemes:
    ApiKeyAuthHeader:
      type: apiKey
      in: header
      name: X-apiKey
      description: Pass your API key via the X-apiKey request header.
    ApiKeyAuthQuery:
      type: apiKey
      in: query
      name: apiKey
      description: Pass your API key via the apiKey query parameter.
x-refined-from:
- apifreaks-api-hub-for-developers-pdf-generator-bulk-openapi.json
- apifreaks-api-hub-for-developers-pdf-generator-openapi.json