> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pdf.co/llms.txt
> Use this file to discover all available pages before exploring further.

# PDF from URL

> Convert URL into PDF. This method will process any JavaScript which the webpage triggers when it loads. For example if the the webpage triggers a JavaScript popup window then that will be included in the conversion process. There is no option to disable JavaScript on the supplied HTML page.



## OpenAPI

````yaml /openapi.json post /v1/pdf/convert/from/url
openapi: 3.0.1
info:
  title: PDF.co API
  description: ''
  version: '1.0'
servers:
  - url: https://api.pdf.co
security:
  - ApiKeyAuth: []
tags:
  - name: Extraction
  - name: Editing
  - name: PDF Conversion
  - name: Excel Conversion
  - name: PDF Merging & Splitting
  - name: Forms
  - name: Find & Search
  - name: Document, File & System
  - name: Pages
  - name: Barcodes
paths:
  /v1/pdf/convert/from/url:
    post:
      tags:
        - PDF Conversion
      summary: PDF from URL
      description: >-
        Convert URL into PDF. This method will process any JavaScript which the
        webpage triggers when it loads. For example if the the webpage triggers
        a JavaScript popup window then that will be included in the conversion
        process. There is no option to disable JavaScript on the supplied HTML
        page.
      operationId: post_v1_pdf_convert_from_url
      requestBody:
        content:
          application/json:
            schema:
              required:
                - url
              type: object
              properties:
                url:
                  allOf:
                    - $ref: '#/components/schemas/url'
                  default: https://wikipedia.org/wiki/Wikipedia:Contact_us
                margins:
                  allOf:
                    - $ref: '#/components/schemas/margins'
                  default: 5mm
                papersize:
                  allOf:
                    - $ref: '#/components/schemas/papersize'
                  default: Letter
                orientation:
                  allOf:
                    - $ref: '#/components/schemas/orientation'
                  default: Portrait
                printbackground:
                  allOf:
                    - $ref: '#/components/schemas/printbackground'
                  default: true
                mediatype:
                  allOf:
                    - $ref: '#/components/schemas/mediatype'
                  default: print
                donotwaitfullload:
                  $ref: '#/components/schemas/donotwaitfullload'
                header:
                  $ref: '#/components/schemas/header'
                footer:
                  $ref: '#/components/schemas/footer'
                legacyrendition:
                  $ref: '#/components/schemas/legacyrendition'
                name:
                  $ref: '#/components/schemas/name'
                async:
                  allOf:
                    - $ref: '#/components/schemas/async'
                  default: false
                expiration:
                  $ref: '#/components/schemas/expiration'
                profiles:
                  allOf:
                    - $ref: '#/components/schemas/profiles'
                  default: '{ "CustomScript": ";; // put some custom js script here "}'
                httpusername:
                  $ref: '#/components/schemas/httpusername'
                httppassword:
                  $ref: '#/components/schemas/httppassword'
                rendertimeout:
                  $ref: '#/components/schemas/rendertimeout'
                templatedata:
                  $ref: '#/components/schemas/templatedata'
                customscript:
                  $ref: '#/components/schemas/customscript'
              additionalProperties: false
        required: false
      responses:
        '200':
          $ref: '#/components/responses/Success'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/NotEnoughCredits'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '408':
          $ref: '#/components/responses/Timeout'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '441':
          $ref: '#/components/responses/InvalidPassword'
        '442':
          $ref: '#/components/responses/DamagedDocument'
        '443':
          $ref: '#/components/responses/PermissionsError'
        '444':
          $ref: '#/components/responses/ProfilesParsingError'
        '445':
          $ref: '#/components/responses/TimeoutError'
        '446':
          $ref: '#/components/responses/MissingFiles'
        '447':
          $ref: '#/components/responses/InvalidTemplate'
        '448':
          $ref: '#/components/responses/InvalidUrlOrHtml'
        '449':
          $ref: '#/components/responses/InvalidIndexRange'
        '450':
          $ref: '#/components/responses/InvalidPageRange'
        '452':
          $ref: '#/components/responses/InvalidUrl'
        '454':
          $ref: '#/components/responses/InvalidParameters'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    url:
      type: string
      format: uri
      description: >-
        URL to the source file [`url`
        attribute](/api-reference/url-input-and-request-limits).
    margins:
      type: string
      format: '{topMargin} {rightMargin} {bottomMargin} {leftMargin}'
      description: >-
        Set custom margins, overriding CSS default margins. Specify the margins
        in the format `{top} {right} {bottom} {left}`. You can
        use`px`,`mm`,`cm`or`in`units. Also, you can set margins for all sides at
        once using a single value.
      example: 10px 10px 10px 10px
    papersize:
      description: >-
        Specifies the paper size. Accepts standard sizes like 'Letter', 'Legal',
        'Tabloid', 'Ledger', 'A0'–'A6'. You can also set a custom size by
        providing width and height separated by a space, with optional units:
        `px` (pixels), `mm` (millimeters), `cm` (centimeters), or `in` (inches).
        Examples: '200 300', '200px 300px', '200mm 300mm', '20cm 30cm', '6in
        8in'.
      oneOf:
        - type: string
          enum:
            - Letter
            - Legal
            - Tabloid
            - Ledger
            - A0
            - A1
            - A2
            - A3
            - A4
            - A5
            - A6
        - type: string
          pattern: >-
            ^\s*\d+(?:\.\d+)?(?:px|mm|cm|in)?\s+\d+(?:\.\d+)?(?:px|mm|cm|in)?\s*$
      default: A4
      example: A4
    orientation:
      type: string
      enum:
        - Portrait
        - Landscape
      default: Portrait
      description: >-
        Sets the document orientation. Options: `Portrait` for vertical layout,
        and `Landscape` for horizontal layout.
    printbackground:
      type: boolean
      default: true
      description: >-
        Set to `false` to disable background colors and images are included when
        generating PDFs from HTML/URL
    mediatype:
      type: string
      default: print
      enum:
        - print
        - screen
        - none
      description: >-
        Controls how content is rendered when converting to PDF. Options:
        `print` (uses print styles), `screen` (uses screen styles), `none` (no
        media type applied).
    donotwaitfullload:
      type: boolean
      default: false
      description: >-
        Controls how thoroughly the converter waits for a page to load before
        converting HTML to PDF --- false waits for full page load, while true
        speeds up conversion by waiting only for minimal loading.
    header:
      type: string
      format: html
      description: >-
        Set this to can add user definable HTML for the header to be applied on
        every page header. The format is html.
    footer:
      type: string
      format: html
      description: >-
        Set this to can add user definable HTML for the footer to be applied on
        every page bottom. The format is html.
    legacyrendition:
      type: boolean
      description: use legacy rendition (optional)
    name:
      type: string
      description: File name for generated output.
    async:
      type: boolean
      default: false
      description: >-
        Set `async` to `true` for long processes to run in the background, API
        will then return a `jobId` which you can use with the [Background Job
        Check endpoint](/api-reference/job-check). Also see [Webhooks &
        Callbacks](/api-reference/webhooks)
    expiration:
      type: number
      default: 60
      description: >-
        Sets the expiration time for the output link, in minutes. After this
        period, generated output file(s) are automatically deleted from [PDF.co
        Temporary Files Storage](/api-reference/file-upload/overview). The
        maximum allowed duration depends on your subscription plan. For
        permanent storage of input files (e.g., reusable images, PDF templates,
        documents), use `PDF.co Built‑In Files Storage`.
    profiles:
      type: string
      description: >-
        Profiles are used configure extra options for specific API endpoints and
        may be unique to an API. For more information, see
        [Profiles](/api-reference/profiles) and the documentation of each
        endpoint for profiles specific to it.
    httpusername:
      type: string
      description: HTTP auth user name if required to access source URL.
    httppassword:
      type: string
      description: HTTP auth password if required to access source URL.
    rendertimeout:
      type: number
      description: timeout for rendering in milliseconds (optional)
      readOnly: true
    templatedata:
      type: string
      description: >-
        please set to string converted from JSON with data for Mustache template
        or leave empty if no template is used
      readOnly: true
    customscript:
      type: string
      description: custom script to execute on page load
      readOnly: true
  responses:
    Success:
      description: Success.
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                example: success
                description: Status of the API response.
              message:
                type: string
                example: Success
                description: Descriptive message for the response status.
              url:
                type: string
                format: uri
                example: https://pdf-temp-files.s3.us-west-2.amazonaws.com/output.pdf
                description: URL to the output file.
              jobId:
                type: string
                example: 6YSZD3U872ZYYFEDMQCQSGEEO8YSF5WA
                description: Unique identifier for the job.
              credits:
                type: integer
                example: 2
                description: Credits used for this operation.
              remainingCredits:
                type: integer
                example: 1480582
                description: Credits remaining after this operation.
              duration:
                type: integer
                example: 33
                description: Time taken to complete the request, in milliseconds.
    BadRequest:
      description: >-
        Bad request. Typically due to bad input parameters or unreachable input
        URLs (e.g., access restrictions like login or password).
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 400
              message:
                type: string
                example: >-
                  Bad request. Typically due to bad input parameters or
                  unreachable input URLs (e.g., access restrictions like login
                  or password).
    Unauthorized:
      description: >-
        Unauthorized. Authentication is required and has failed or has not yet
        been provided.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 401
              message:
                type: string
                example: >-
                  Unauthorized. Authentication is required and has failed or has
                  not yet been provided.
    NotEnoughCredits:
      description: Not enough credits.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 402
              message:
                type: string
                example: Not enough credits.
    Forbidden:
      description: Access forbidden for input URL.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 403
              message:
                type: string
                example: Access forbidden for input URL.
    NotFound:
      description: The requested resource could not be found.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 404
              message:
                type: string
                example: The requested resource could not be found.
    Timeout:
      description: The server timed out waiting for the request.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 408
              message:
                type: string
                example: The server timed out waiting for the request.
    TooManyRequests:
      description: Too many requests in a given time period.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 429
              message:
                type: string
                example: Too many requests in a given time period.
    InvalidPassword:
      description: Invalid Password. Password protected document.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 441
              message:
                type: string
                example: Invalid Password. Password protected document.
    DamagedDocument:
      description: Input document is damaged or of incorrect type.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 442
              message:
                type: string
                example: Input document is damaged or of incorrect type.
    PermissionsError:
      description: >-
        Permissions. The operation is prohibited by document security settings.
        You can turn off this check by setting the `profiles` param to
        `{CheckPermissions: false}`. Important: only use this if you are the
        owner or have legal permission.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 443
              message:
                type: string
                example: >-
                  Permissions. The operation is prohibited by document security
                  settings.
    ProfilesParsingError:
      description: >-
        Profiles parsing error. Please ensure that the configuration is
        supported. See `/profiles` samples.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 444
              message:
                type: string
                example: >-
                  Profiles parsing error. Please ensure that the configuration
                  is supported.
    TimeoutError:
      description: >-
        Timeout error. For large documents, use asynchronous mode (`async=true`)
        and check status via `/job/check`. For many-page files, use the `pages`
        parameter.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 445
              message:
                type: string
                example: >-
                  Timeout error. For large documents, use asynchronous mode
                  (async=true) and check status via /job/check.
    MissingFiles:
      description: Some files required for conversion are missing.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 446
              message:
                type: string
                example: Some files required for conversion are missing.
    InvalidTemplate:
      description: Invalid template.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 447
              message:
                type: string
                example: Invalid template.
    InvalidUrlOrHtml:
      description: Invalid URL or HTML. Ensure the provided URL is valid and accessible.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 448
              message:
                type: string
                example: >-
                  Invalid URL or HTML. Ensure the provided URL is valid and
                  accessible.
    InvalidIndexRange:
      description: >-
        Invalid index range. Page index is out of range. Use `/pdf/info` to get
        page count. First page is `0`.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 449
              message:
                type: string
                example: Invalid index range. Page index is out of range.
    InvalidPageRange:
      description: Invalid page range specified.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 450
              message:
                type: string
                example: Invalid page range specified.
    InvalidUrl:
      description: Invalid URL.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 452
              message:
                type: string
                example: Invalid URL.
    InvalidParameters:
      description: Invalid parameters.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 454
              message:
                type: string
                example: Invalid parameters.
    InternalServerError:
      description: Something went wrong. Please try again or contact support.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 500
              message:
                type: string
                example: Something went wrong. Please try again or contact support.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````