PrintFriendly & PDF
  • Extensions
  • Publisher Tools
    • Get Button
    • Purchase Pro Service
  • API
  • My Account
    • Log In
    • Create Account
  • About
  • Pricing
  • Instructions

API Instructions

Have a question? Email the boss.

Get your API Key free, no credit card required.

  • V2 Instructions
  • V1 Instructions

All API requests must be made over HTTPS and need api_key as a URL query parameter

Example

curl https://api.printfriendly.com/v2/pdf/create?api_key=YOUR_API_KEY \
-H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' \
-d page_url=https://en.wikipedia.org/wiki/Eclipse

In case of success you will get http response with Status 200 and JSON info in response body.

{"status":"success","file_url":"https://api.printfriendly.com/downloads/pdf_1531957353_e94df5Letter.pdf"}

API Version

Current version of API is 2.0.
Major API version must be provided in URL as ‘v’ and number, ie. v1, v2, v3.

Example

https://api.printfriendly.com/v2/pdf/create
https://api.printfriendly.com/v2/html/create

API Methods

MethodInputOutput
pdf/createURL / HTMLPDF
html/createURL / HTMLHTML

Parameters:

You must provide page_url or html parameter. All others parameters are optional.

ParameterValue
page_urlURL of target page
htmlHTML content of target page
output_typeSet it to "attachment" to receive the PDF file as the output instead of JSON
css_urlURL for Custom CSS file
header_image_urlURL for Custom Header image
header_textText String

All examples below are provided for "pdf/create" method but also work for "html/create" method.

Example with page_url parameter

curl https://api.printfriendly.com/v2/pdf/create?api_key=YOUR_API_KEY \
-H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' \
-d page_url=https://test.test \
-d css_url=https://my-site.com/pdf_style.css \
-d header_text='My Custom Header'

HTML input

curl https://api.printfriendly.com/v2/pdf/create?api_key=YOUR_API_KEY \
-H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' \
-d html='<html><body><h1>Title</h1><p>Text text text text text text text text text</p></body></html>'

Errors

Printfriendly uses conventional Status codes and JSON response to provide error details.

Status Codes

StatusDescription
200 OKEverything works fine
400 Bad RequestError has occured. See details in JSON
401 UnauthorizedAuthentication failed. No valid API key provided
404 Not FoundAPI method/route not found
429 Too Many RequestsToo many requests

All not success (not Status 200) responses have JSON body with error details which contains error type and message.

Error types

TypeDescription
parameters-validationParameters validation failed
banned-domainThis domain is temporary banned
failed-parsedCan’t parse page. We can’t determine content of this page
fetch-errorCan’t fetch page. Check that URL is accessible and try again
high-loadWe are under high load. Please try again later
invalid-file-extOnly webpages are supported. It’s a PDF/TXT file or Image (JPG, PNG, GIF)
large-pageTarget page is over 2Mb. Big pages are not supported
security-platformSecurity platform blocks us from fetching this page
timeoutTimeout exceeded. Engine can’t process the page during 30 secs. Please try again later
catch-allUnexpected error. Please try again later

Example

curl https://api.printfriendly.com/v2/pdf/create?api_key=YOUR_API_KEY \
-H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' \
-d page_url=https://test.test
# HTTP RESPONSE

# HEADERS (some of headers were ommited)
Content-Type: application/json; charset=utf-8
Status: 400 Bad Request

# BODY (JSON)
{"status":"failed","message":"Print technology unable to download or parse content"}

Requests Rate Limiting

The API has 60 requests per minute limit. If your requests limit exceeded you will get response with Status: 429 Too Many Requests.

HeaderDescription
X-RateLimit-LimitTotal requests limit for current period
X-RateLimit-RemainingRemaining request for current period
X-RateLimit-ResetAmount of seconds till the end of current period

Example

# HEADERS (some of headers were ommited)

Status: 429 Too Many Requests
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 20

# BODY (JSON)
Empty

All API requests must be made over HTTPS and use HTTP Basic Auth with the following credentials:

Username: API KEY
Password: Not needed

Example

curl https://api.printfriendly.com/v1/pdfs/create \
-u your_api_key: \
-d page_url=https://en.wikipedia.org/wiki/Eclipse
FlagDescription
-upass basic auth credentials, a colon after API key prevents cURL from asking for a password
-dsend data in POST request

In case of success you will get http response with Status 302 (Redirect) and JSON info in response body.

# HTTP RESPONSE

# HEADERS (some of headers are ommited)
Content-Type: application/json; charset=utf-8
Status: 302 Found
Location: https://v.printfriendly.com/system/pdfs/pdf_1480936999_755625A4.pdf

# BODY
{"success":"Redirect to https://v.printfriendly.com/system/pdfs/pdf_1480947535_6e7ecaA4.pdf"}

API Version

Current version of API is 1.0.
Major API version must be provided in URL as ‘v’ and number, ie. v1, v2, v3.

Example

https://api.printfriendly.com/v1/pdf/create
https://api.printfriendly.com/v1/html/create

API Methods

MethodInputOutput
pdf/createURL / HTMLPDF
html/createURL / HTMLHTML

Parameters:

You must provide page_url or html parameter. All others parameters are optional.

ParameterValue
page_urlURL of target page
htmlHTML content of target page
css_urlURL for Custom CSS file
header_image_urlURL for Custom Header image
header_textText String

All examples below are provided for "pdf/create" method but also work for "html/create" method.

Example with page_url parameter

curl https://api.printfriendly.com/v1/pdfs/create \
-u your_api_key: \
-d page_url=https://test.test \
-d css_url=https://my-site.com/pdf_style.css \
-d header_text='My Custom Header'

In case of success you will get http response with Status 302 (Redirect) and JSON info in response body.

Example with html parameter

curl https://api.printfriendly.com/v1/pdfs/create \
-u your_api_key: \
-d html='<html><body><h1>Title</h1><p>Text text text text text text text text text</p></body></html>'

In case of success you will get http response with Status 200 and PDF/HTML content in response body.

Errors

Printfriendly uses conventional Status codes and JSON response to provide error details.

Status Codes

StatusDescription
200 OKEverything works fine
400 Bad RequestError has occured. See details in JSON
401 UnauthorizedAuthentication failed. No valid API key provided
404 Not FoundAPI method/route not found
429 Too Many RequestsToo many requests

All not success (not Status: 302 OK) responses have JSON body with error details which contains error type and message.

Error types

TypeDescription
parameters-validationParameters validation failed
banned-domainThis domain is temporary banned
failed-parseCan’t parse page. We can’t determine content of this page
fetch-errorCan’t fetch page. Check that URL is accessible and try again
high-loadWe are under high load. Please try again later
invalid-file-extOnly webpages are supported. It’s a PDF/TXT file or Image (JPG, PNG, GIF)
large-pageTarget page is over 2Mb. Big pages are not supported
security-platformSecurity platform blocks us from fetching this page
timeoutTimeout exceeded. Engine can’t process the page during 30 secs. Please try again later
catch-allUnexpected error. Please try again later

Example

curl https://api.printfriendly.com/v1/pdfs/create \
-u your_api_key: \
-d page_url=https://test.test
# HTTP RESPONSE

# HEADERS (some of headers were ommited)
Content-Type: application/json; charset=utf-8
Status: 400 Bad Request

# BODY (JSON)
{"error":{"type":"failed","message":"Print technology unable to download or parse content"}}

Requests Rate Limiting

The API has 60 requests per minute limit. If your requests limit exceeded you will get response with Status: 429 Too Many Requests.

HeaderDescription
X-RateLimit-LimitTotal requests limit for current period
X-RateLimit-RemainingRemaining request for current period
X-RateLimit-ResetAmount of seconds till the end of current period

Example

# HEADERS (some of headers were ommited)

Status: 429 Too Many Requests
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 20

# BODY (JSON)
Empty

  • Support
  • About
  • Privacy
  • Terms
  • PrintFriendly & PDF