Skip to content
Getprintoza
Features How it works Pricing FAQ API docs
Log in Get API key Dashboard

API documentation

Send HTML, get a PDF back. One request, no SDK. Works for English, Turkish, Spanish, French, German, Russian, Arabic, Hebrew, Chinese, Japanese and Hindi.

Quick start Convert Errors Usage Languages Good to know

API dokümantasyonu

HTML gönderin, PDF alın. Tek istek, kurulacak bir şey yok. İngilizce, Türkçe, İspanyolca, Fransızca, Almanca, Rusça, Arapça, İbranice, Çince, Japonca ve Hintçe ile çalışır.

Hızlı başlangıç Dönüştürme Hatalar Kullanım Diller Bilmekte fayda var

Quick start

1. Create a free account and copy your API key from the dashboard. The Free plan includes 50 PDFs a month.

2. Send your HTML to POST https://getprintoza.com/v1/convert with your key in the x-api-key header. The answer is the PDF file itself.

Hızlı başlangıç

1. Ücretsiz hesap açın ve panelden API anahtarınızı kopyalayın. Ücretsiz planda ayda 50 PDF hakkı var.

2. HTML’inizi POST https://getprintoza.com/v1/convert adresine, anahtarınızı x-api-key başlığında göndererek yollayın. Yanıt, PDF dosyasının kendisidir.

curl -X POST https://getprintoza.com/v1/convert \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"html": "<h1>Hello</h1><p>My first PDF.</p>", "format": "A4"}' \
  --output document.pdf
const fs = require("fs");

async function makePdf() {
  const res = await fetch("https://getprintoza.com/v1/convert", {
    method: "POST",
    headers: {
      "x-api-key": process.env.GETPRINTOZA_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ html: "<h1>Hello</h1><p>My first PDF.</p>", format: "A4" }),
  });

  if (!res.ok) throw new Error((await res.json()).error);
  fs.writeFileSync("document.pdf", Buffer.from(await res.arrayBuffer()));
}

makePdf();
import os
import requests

res = requests.post(
    "https://getprintoza.com/v1/convert",
    headers={"x-api-key": os.environ["GETPRINTOZA_KEY"]},
    json={"html": "<h1>Hello</h1><p>My first PDF.</p>", "format": "A4"},
    timeout=60,
)

if res.ok:
    with open("document.pdf", "wb") as f:
        f.write(res.content)
else:
    print(res.json())

Keep your key on your server. Never put it in a web page or mobile app that other people can open.

Anahtarınızı kendi sunucunuzda tutun. Başkalarının açabileceği bir web sayfasına veya mobil uygulamaya koymayın.

POST /v1/convert

Turns HTML into a PDF. Send JSON with the header x-api-key and Content-Type: application/json.

FieldTypeDescription
htmlstring
Required
The full HTML of your document. Up to 8,000,000 characters.
languagestring
Optional
Language of the content: en tr es fr de ru ar he zh ja hi. It sets the lang of your page so the right letter shapes are used (this matters for Chinese and Japanese). Ignored if your <html> tag already has a lang.
formatstring
Optional
A3, A4, A5, Letter, Legal or Tabloid. If you leave it out, the page size in your own HTML is used, otherwise A4.
landscapetrue / false
Optional
true for a landscape page. If you send format or landscape, they win over any @page rule in your HTML.
marginnumber
Optional
Page margin in millimetres, the same on all four sides, from 0 to 50. For example 10 gives a 10 mm margin. If you leave it out, 15 mm is used.
footertrue / false
Optional
true prints a page number at the bottom of every page, such as “Page 2 of 5”. The text follows the language of your document: the language field, otherwise the lang in your <html> tag, otherwise English. Arabic and Hebrew read right to left, and Chinese, Japanese and Hindi use their own fonts. Numbers are always written with 0–9. A bottom margin of at least 10 mm is kept so the text is not cut off.
footerTextstring
Optional
A short line of plain text (up to 80 characters, one line) printed before the page number, such as your company name: “Acme Ltd. · Page 2 of 5”. It turns the page number on by itself, unless you send footer: false. The text is shown exactly as you write it; HTML in it is not run.

A successful answer is status 200 with the PDF as the body. The header X-Quota-Remaining tells you how many PDFs are left this month.

Empty-box warning. If your HTML contains characters that none of our fonts can draw, the PDF is still made, but those characters would show up as empty boxes. In that case the answer also has the header X-Getprintoza-Warnings, for example unsupported_characters; count=2; U+2603,U+1F9FF (the count, then up to 20 character codes). No header means nothing was found. It is a best-effort check and it is skipped when your HTML loads its own web fonts.

POST /v1/convert

HTML’i PDF’e çevirir. x-api-key ve Content-Type: application/json başlıklarıyla JSON gönderin.

AlanTürAçıklama
htmlstring
Zorunlu
Belgenizin HTML’inin tamamı. En fazla 8.000.000 karakter.
languagestring
İsteğe bağlı
İçeriğin dili: en tr es fr de ru ar he zh ja hi. Sayfanızın lang değerini ayarlar, böylece doğru harf biçimleri kullanılır (Çince ve Japoncada önemlidir). <html> etiketinizde zaten lang varsa dikkate alınmaz.
formatstring
İsteğe bağlı
A3, A4, A5, Letter, Legal veya Tabloid. Vermezseniz HTML’inizdeki sayfa boyutu, o da yoksa A4 kullanılır.
landscapetrue / false
İsteğe bağlı
Yatay sayfa için true. format veya landscape gönderirseniz HTML’inizdeki @page kuralından önce gelir.
marginnumber
İsteğe bağlı
Sayfa kenar boşluğu, milimetre cinsinden; dört kenarda da aynıdır, 0 ile 50 arasında. Örneğin 10 yazarsanız 10 mm boşluk kalır. Vermezseniz 15 mm kullanılır.
footertrue / false
İsteğe bağlı
true yazarsanız her sayfanın altına “Sayfa 2 / 5” gibi bir sayfa numarası basılır. Metin belgenizin diline uyar: önce language alanı, yoksa <html> etiketinizdeki lang, o da yoksa İngilizce. Arapça ve İbranice sağdan sola yazılır; Çince, Japonca ve Hintçe kendi fontlarını kullanır. Rakamlar her zaman 0–9 ile yazılır. Yazı kesilmesin diye alt boşluk en az 10 mm tutulur.
footerTextstring
İsteğe bağlı
Sayfa numarasının önüne yazılan kısa düz metin (en fazla 80 karakter, tek satır); örneğin şirket adınız: “Acme Ltd. · Sayfa 2 / 5”. Sayfa numarasını kendiliğinden açar; footer: false yazarsanız açmaz. Metin yazdığınız gibi gösterilir, içindeki HTML çalışmaz.

Başarılı yanıt 200 durum koduyla gelir ve gövdesi PDF’tir. X-Quota-Remaining başlığı bu ay kaç PDF hakkınız kaldığını söyler.

Boş kutu uyarısı. HTML’inizde hiçbir fontumuzun çizemediği karakterler varsa PDF yine hazırlanır, ama o karakterler boş kutu olarak görünür. Bu durumda yanıtta ayrıca X-Getprintoza-Warnings başlığı olur; örneğin unsupported_characters; count=2; U+2603,U+1F9FF (önce sayı, sonra en çok 20 karakter kodu). Başlık yoksa sorun bulunmadı demektir. Bu en iyi çaba kontrolüdür; HTML’iniz kendi web fontunu yüklüyorsa atlanır.

HTTP/1.1 200 OK
Content-Type: application/pdf
X-Quota-Remaining: 987

Arabic example. Arabic and Hebrew documents are set to right-to-left for you, and the right fonts are already installed. If you prefer to control it yourself, add dir="ltr" or dir="rtl" to your <html> tag and we will not change it.

Arapça örneği. Arapça ve İbranice belgeler sizin için kendiliğinden sağdan sola ayarlanır, gerekli yazı tipleri de sunucuda hazırdır. Kendiniz belirlemek isterseniz <html> etiketinize dir="ltr" veya dir="rtl" yazın, biz dokunmayız.

curl -X POST https://getprintoza.com/v1/convert \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"html": "<h1>مرحبا</h1><p>فاتورة مبيعات</p>", "language": "ar"}' \
  --output arabic.pdf

Errors

When something goes wrong you get a JSON body like the one below, with the status codes in this table.

Hatalar

Bir sorun olduğunda aşağıdaki gibi bir JSON gövdesi ve bu tablodaki durum kodlarından biri gelir.

HTTP/1.1 429 Too Many Requests
Content-Type: application/json

{ "error": "quota_exceeded", "plan": "free", "limit": 50 }
StatusErrorWhat it means
400html_field_requiredThe html field is missing or is not text.
400language_not_enabledThe language code is not supported. The response lists the valid codes.
400invalid_formatformat is not one of the allowed sizes. The response lists them.
400invalid_marginmargin is not a number between 0 and 50. The response shows the allowed range.
400invalid_footerfooter is not true or false.
400invalid_footer_textfooterText is not plain text of 1 to 80 characters on one line. The response shows the maximum.
400invalid_jsonThe request body is not valid JSON.
401invalid_or_missing_api_keyThe x-api-key header is missing or wrong.
413html_too_largeThe HTML is longer than 8,000,000 characters.
413payload_too_largeThe whole request is larger than 10 MB.
429quota_exceededYou used all PDFs in your plan this month. Upgrade in the dashboard or wait for the next month.
429too_many_requestsToo many requests in a minute. Wait for the number of seconds in the Retry-After header, then try again. The PDF is not counted.
503server_busyToo many requests at once. Wait a few seconds and try again. The PDF is not counted.
500render_failedWe could not build the PDF from this HTML. The PDF is not counted.
DurumHataNe demek
400html_field_requiredhtml alanı yok ya da metin değil.
400language_not_enabledlanguage kodu desteklenmiyor. Yanıtta geçerli kodlar listelenir.
400invalid_formatformat izin verilen boyutlardan biri değil. Yanıtta liste gelir.
400invalid_marginmargin 0 ile 50 arasında bir sayı değil. Yanıtta izin verilen aralık gelir.
400invalid_footerfooter true ya da false değil.
400invalid_footer_textfooterText tek satırlık, 1 ile 80 karakter arası düz metin değil. Yanıtta üst sınır gelir.
400invalid_jsonİstek gövdesi geçerli bir JSON değil.
401invalid_or_missing_api_keyx-api-key başlığı yok ya da yanlış.
413html_too_largeHTML 8.000.000 karakterden uzun.
413payload_too_largeİsteğin tamamı 10 MB’tan büyük.
429quota_exceededBu ay plandaki tüm PDF haklarını kullandınız. Panelden planı yükseltin ya da sonraki ayı bekleyin.
429too_many_requestsBir dakikada çok fazla istek gönderdiniz. Retry-After başlığındaki saniye kadar bekleyip tekrar deneyin. PDF hakkınızdan düşmez.
503server_busyAynı anda çok fazla istek var. Birkaç saniye bekleyip tekrar deneyin. PDF hakkınızdan düşmez.
500render_failedBu HTML’den PDF üretemedik. PDF hakkınızdan düşmez.

GET /v1/usage

Shows your plan and how many PDFs you have used this month. Checking usage does not use up a PDF.

GET /v1/usage

Planınızı ve bu ay kaç PDF kullandığınızı gösterir. Kullanımı sorgulamak PDF hakkınızdan düşmez.

curl https://getprintoza.com/v1/usage -H "x-api-key: YOUR_API_KEY"

{ "plan": "starter", "usedThisMonth": 13, "monthlyLimit": 1000, "remaining": 987 }

GET /v1/languages

Lists the language codes you can use in the language field. No API key needed.

GET /v1/languages

language alanında kullanabileceğiniz dil kodlarını listeler. API anahtarı gerekmez.

curl https://getprintoza.com/v1/languages

{ "enabled": [ { "code": "en", "name": "English", ... }, { "code": "ar", "name": "العربية", ... } ] }

Good to know

  • Each PDF that is built counts as one against your monthly plan. If we fail to build it, it is not counted.
  • Speed limit: up to 10 requests a minute on the Free plan and 60 a minute on paid plans. Going over returns too_many_requests.
  • JavaScript in your HTML does not run. Send finished HTML and CSS.
  • Public images, stylesheets and fonts on https addresses load. Addresses on private networks are blocked. For the most reliable result, put images inside the HTML as data: links.
  • Pages have 15 mm margins and backgrounds are printed.
  • We do not save your HTML or your PDF.
  • Need a new key or a bigger plan? Both are in the dashboard. Questions: support@getprintoza.com.

Bilmekte fayda var

  • Üretilen her PDF, aylık planınızdan 1 hak düşer. PDF’i üretemezsek hakkınızdan düşmez.
  • Hız sınırı: Ücretsiz planda dakikada 10, ücretli planlarda dakikada 60 istek. Aşarsanız too_many_requests döner.
  • HTML’inizdeki JavaScript çalışmaz. Hazır HTML ve CSS gönderin.
  • https adreslerindeki herkese açık görseller, stil dosyaları ve yazı tipleri yüklenir. Özel ağ adresleri engellenir. En sağlam sonuç için görselleri HTML’in içine data: bağlantısı olarak koyun.
  • Sayfa kenar boşlukları 15 mm’dir ve arka planlar basılır.
  • HTML’inizi ve PDF’inizi kaydetmeyiz.
  • Yeni anahtar mı, daha büyük plan mı lazım? İkisi de panelde. Sorularınız için: support@getprintoza.com.
Getprintoza

HTML to PDF for every language.

Product

Features Pricing FAQ API docs

Legal

Terms Privacy Policy Refunds

Help

support@getprintoza.com
© 2026 Getprintoza. All rights reserved.Eleven languages, right-to-left included.