Skip to main content
POST
/
convert
/
pdf
Convert to PDF
import requests

url = "https://api.pdfshift.io/v3/convert/pdf"

payload = { "source": "<string>" }
headers = {
    "X-API-Key": "<api-key>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
"<...PDF binary data...>"
Convert a given HTML document to a PDF file. You can provide the HTML source directly, or a URL to fetch it from. Numerous options are available to customize the generated PDF document.
Please note that the response from this endpoint will vary depending on some parameters.You can read more at Varying responses.

Authorizations

X-API-Key
string
header
required

Authenticate your account by including your secret key in API requests. You can manage your API keys in the Dashboard.

Authentication to the API is performed by using the HTTP Header X-API-Key.

Headers

X-Processor-Version
enum<string>

Specifies the Chromium version that will be used for the conversion. Right now, only "116" and "142" are accepted. All new users are automatically using the latest version.

Available options:
116,
142

Body

application/json
source
required

Original document to convert to PDF. PDFShift will automatically detect if it's an URL and load it, or an HTML document and charge it. You can also send an array of documents to convert if parallel conversions is enabled on your account. In that case, you will also need to provide the webhook parameters as this operation is asynchronous.

sandbox
boolean
default:false

Will generates documents that doesn't count in the credits. The generated document will come with a watermark and you are limited to 10 documents per minutes.

encode
boolean
default:false

Will return the generated PDF in Base64 encoded format, instead of raw.

filename
string

Name of the destination file. Only an alphanumerical value with "-" or "_", of at least 7 chars accepted.

If given, the response will not be the PDF, but a JSON response containing an url parameter to an Amazon S3 bucket, to download the file. The file will be kept for 2 days, then automatically deleted.

See Saving the document to Amazon S3 for an example.

s3_destination
string

Path to your S3 bucket, in order to save the converted PDF directly into your AWS S3 account. Use a full path value like s3://doc-example-bucket/pdfshift/upload/86aa3ede7d05.pdf.

See Saving to your Amazon S3 for more details.

use_print
boolean
default:false

Use the print stylesheet instead of the general one.

css
string

Will append this CSS styles to the document before saving it. Can be an URL or a String of CSS rules.

javascript
string

Will execute the given Javascript before saving the document. Can be an URL or a String of JS code.

delay
integer
default:0

In milliseconds. Will wait for this duration before capturing the document. Up to 10 seconds max.

Required range: 0 <= x <= 10000
timeout
integer

If provided, will kill the page loading at a specified time without stopping with a TimeoutError. Value in seconds.

Required range: 0 <= x <= 900
wait_for
string

Name of a function available globally. When present, PDFShift will wait for this function to return a truthy value (true, 1, a string, etc) or up to 30 seconds, then proceed to the conversion. If the function never returns a truthy value in the allocated time, the conversion will fail with an error.

wait_for_network
boolean
default:true

If set to true, will wait that there was no network requests in the last 500ms.

ignore_long_polling
boolean
default:false

Will not wait for long-polling request to end before generating the document. This can be helpful when loading a page that have websockets or long running queries that have no impact on the generated document. Requires wait_for_network to be set to true, otherwise the conversion never waits for network requests at all.

disable_javascript
boolean
default:false

Will not execute the javascript at all in the document.

lazy_load_images
boolean
default:false

When set to true, will scroll the page to the bottom to trigger loading the images with lazy loading before saving the document.

raise_for_status
boolean
default:false

Won't convert the document if the loaded source (when HTTP) returns a non 2XX response.

webhook

An URL where we will send a POST request containing a JSON body similar to when you use the filename parameter. The JSON response will contain a URL key that points to your file, stored on Amazon S3.

Note: When the conversion fail, we also do a POST request to your endpoint, but with an error key instead.

We recommend you to first check if the body contains the error before processing the document, and act accordingly.

auth
object

Basic authentication that will be sent along the request to load the source when it's an URL.

http_headers
object

List of HTTP headers that you can pass to the request when loading the source URL.

cookies
object[]

List of cookies you want to send along with the requests when loading the source. They must be provided as an array of objects.

is_hipaa
boolean
default:false

When set to True, ensure the conversion's parameters are compliant to HIPAA regulations. This will disable features such as filename or webhook when the s3_destination is managed by PDFShift, to avoid storing any sensitive documents on PDFShift's servers. See Handling sensitive documents for more details.

is_gdpr
boolean
default:false

When set to True, ensure the conversion's parameters are compliant to GDPR regulations. This will disable features such as filename or webhook when the s3_destination is managed by PDFShift, to avoid storing any sensitive documents on PDFShift's servers. See Handling sensitive documents for more details.

log_request
boolean
default:false

Log the request parameters. Useful for debugging purposes with PDFShift support.

landscape
boolean
default:false

Will set the view in landscape mode instead of portrait.

format
string
default:A4

Format of the document. You can either use the standard values (Letter, Legal, Tabloid, Ledger, A0, A1, A2, A3, A4, A5) or a custom {width}x{height} value. For {width} and {height}, you can indicate the following units: in, cm, mm. . The {height} value can be replaced by auto to automatically adjust the height to the content. For instance, pasing the format 1024xauto will set the page width to 1024px and the height to the content height.

disable_backgrounds
boolean
default:false

The final document will not have the background images.

remove_blank
boolean
default:false

Will analyze the last page of the document. If no content is present in it, the page will be removed. But note that if there are remaining hidden data, header or footer that have been pushed to that page, the page will be kept.

pages
string

Pages to print. Can be one number (3), a range (1-5), a list (4,5,6) or a combination of both (1-3,6,7). If the number is higher than the real number of pages, that number will be ignored.

zoom
number
default:1

A value between 0.1 and 2. Allows you to increase the zoom in the document for specific purposes. 1 is the default zoom, lower is smaller, higher is bigger.

Required range: 0.1 <= x <= 2
margin

Empty spaces between the outer and the beginning of the content. See the Margin section for more details.

header
object

Defines a custom header.

Note: The footer and header are Independent from the rest of the document.

As such, the CSS style defined in your body won't apply on your header/footer. To style your header/footer, you need to set a specific style either using

See the Header/Footer section for more details.

Example:
{
"source": "<div style=\"font-size:12px;\">Header Example</div>",
"height": "48",
"start_at": 1
}

Defines a custom header.

Note: The footer and header are Independent from the rest of the document.

As such, the CSS style defined in your body won't apply on your header/footer. To style your header/footer, you need to set a specific style either using

See the Header/Footer section for more details.

Example:
{
"source": "<div style=\"font-size:12px;\">Footer Example</div>",
"height": "48",
"start_at": 1
}
metadata
object

Allows you to add custom metadata to the generated PDF document. The following metadata are reserved and thus not accepted: 'author_raw', 'creator_raw', 'producer', 'producer_raw', 'subject_raw', 'title_raw'.

Example:
{
"author": "John Doe",
"title": "Sample PDF Document",
"subject": "Demonstration of PDFShift Capabilities",
"keywords": "PDF, API, PDFShift, Example"
}
protection
object

Will add restrictions on the PDF document.

Note: Some PDF Reader don't make the distinction between user and owner in a PDF Document. This means that when the user password has been entered, some PDF reader ignore the restrictions (no print, no copy, etc).

So, setting a blank password for the user is similar to no security.

See the Protection section for more details.

watermark
object

Add a watermark to the generated document. The watermark will always be placed at the center of the document. See the Watermark section for more details.

Response

PDF file generated successfully

The response is of type file.