Dokumentacja API

REST API ConvertFly pozwala programowo konwertować, optymalizować i przekształcać pliki. Buduj potoki konwersji z zadań i kroków: zaimportuj plik, przetwórz go i wyeksportuj wynik w jednym żądaniu.

Bazowy URLhttps://convertfly.io/api/v1

Wszystkie endpointy są względne wobec tego bazowego adresu URL. Żądania i odpowiedzi używają formatu JSON. Wszystkie znaczniki czasu są w UTC, w formacie ISO 8601.

Uwierzytelnianie

Każde żądanie musi zawierać klucz API w nagłówku Authorization. Klucze mają prefiks cvfly_sk_ i możesz je utworzyć w swoim panelu.

Nagłówek HTTP
Authorization: Bearer cvfly_sk_live_abc123def456...

Wskazówka dotycząca bezpieczeństwa: nigdy nie umieszczaj kluczy API w kodzie po stronie klienta. Przechowuj je w zmiennych środowiskowych i wywołuj API ze swojego serwera.

Uprawnienia kluczy

Uprawnienia kluczy API można ograniczyć do wybranych operacji. Klucz utworzony bez listy uprawnień otrzymuje uprawnienia domyślne.

UprawnienieDostęp
job:readOdczyt zadań(domyślne)
job:writeTworzenie, anulowanie, ponawianie i usuwanie zadań oraz ich kroków(domyślne)
task:readOdczyt kroków(domyślne)
convertUruchamianie konwersji(domyślne)
api-key:readWyświetlanie kluczy API
api-key:writeTworzenie i unieważnianie kluczy API
webhook:readWyświetlanie webhooków
webhook:writeTworzenie i usuwanie webhooków

Szybki start

Przekonwertuj PDF na DOCX w trzech krokach: utwórz zadanie, poczekaj na jego zakończenie i pobierz wynik.

1

Utwórz zadanie konwersji

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "import-file": {
        "operation": "import/url",
        "url": "https://example.com/report.pdf"
      },
      "convert": {
        "operation": "convert",
        "input": ["import-file"],
        "output_format": "docx"
      },
      "export": {
        "operation": "export/url",
        "input": ["convert"]
      }
    }
  }'
JavaScript
const res = await fetch("https://convertfly.io/api/v1/jobs", {
  method: "POST",
  headers: {
    "Authorization": "Bearer cvfly_sk_live_abc123...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    tasks: {
      "import-file": {
        operation: "import/url",
        url: "https://example.com/report.pdf",
      },
      convert: {
        operation: "convert",
        input: ["import-file"],
        output_format: "docx",
      },
      export: {
        operation: "export/url",
        input: ["convert"],
      },
    },
  }),
});

const job = await res.json();
console.log(job.id);     // "cmxr9k2p0..."
console.log(job.status); // "processing"
Python
import requests

resp = requests.post(
    "https://convertfly.io/api/v1/jobs",
    headers={"Authorization": "Bearer cvfly_sk_live_abc123..."},
    json={
        "tasks": {
            "import-file": {
                "operation": "import/url",
                "url": "https://example.com/report.pdf",
            },
            "convert": {
                "operation": "convert",
                "input": ["import-file"],
                "output_format": "docx",
            },
            "export": {
                "operation": "export/url",
                "input": ["convert"],
            },
        }
    },
)
job = resp.json()
print(job["id"])      # "cmxr9k2p0..."
print(job["status"])  # "processing"
2

Poczekaj na zakończenie

Sprawdzaj status zadania lub użyj webhooków, aby otrzymywać powiadomienia w czasie rzeczywistym.

curl
curl https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_live_abc123..."
Odpowiedź
{
  "id": "cmxr9k2p0",
  "status": "finished",
  "created_at": "2026-04-03T10:30:00Z",
  "tasks": [
    {
      "name": "export",
      "operation": "export/url",
      "status": "finished",
      "result": {
        "files": [
          { "url": "https://files.convertfly.io/d/cmv.../result.docx?e=...&s=..." }
        ]
      }
    }
  ]
}
3

Pobierz wynik

Użyj adresu URL z wyniku kroku eksportu. Linki do pobrania są ważne przez 1 godzinę; pliki są usuwane 24 godziny po przesłaniu.

curl
curl -o result.docx "https://files.convertfly.io/d/..."

Zadania (jobs)

Zadanie (job) to kontener na jeden lub więcej kroków (tasks), które tworzą potok konwersji. Kroki w zadaniu są wykonywane w kolejności zależności: każdy krok może odwoływać się do wyniku poprzedniego kroku przez pole input.

Idea potoku

Typowy potok wygląda tak: import/url -> convert -> export/url. Możesz też łączyć wiele operacji: import -> convert -> optimize -> watermark -> export.

Statusy zadań

StatusOpis
waitingZadanie utworzone, w kolejce do przetworzenia
processingCo najmniej jeden krok jest w trakcie wykonywania
finishedWszystkie kroki zakończyły się powodzeniem
errorCo najmniej jeden krok zakończył się błędem

Utwórz zadanie

POST/api/v1/jobs
tagstring

Opcjonalna etykieta do porządkowania zadań (np. batch-2026-04).

tasksobjectwymagane

Mapa nazw kroków na definicje kroków. Nazwy kroków muszą być unikalne w obrębie zadania.

webhook_urlstring

Adres URL, na który zostanie wysłane zdarzenie job.finished lub job.failed po zakończeniu zadania.

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tag": "invoice-batch",
    "tasks": {
      "import-file": {
        "operation": "import/url",
        "url": "https://example.com/invoice.pdf"
      },
      "to-png": {
        "operation": "convert",
        "input": ["import-file"],
        "output_format": "png",
        "options": { "density": 300 }
      },
      "export": {
        "operation": "export/url",
        "input": ["to-png"]
      }
    }
  }'
Odpowiedź (201 Created)
{
  "id": "cmxr9k2p0",
  "tag": "invoice-batch",
  "status": "processing",
  "created_at": "2026-04-03T10:30:00Z",
  "tasks": [
    { "name": "import-file", "operation": "import/url", "status": "finished" },
    { "name": "to-png",      "operation": "convert",    "status": "processing" },
    { "name": "export",      "operation": "export/url", "status": "waiting" }
  ]
}

Przykład: scalanie plików w jeden PDF

Operacja merge łączy dwa lub więcej plików wejściowych (PDF i/lub obrazy) w jeden PDF. Podaj nazwy kroków wejściowych w odpowiedniej kolejności w tablicy input.

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "cover": {
        "operation": "import/url",
        "url": "https://example.com/cover.png"
      },
      "report": {
        "operation": "import/url",
        "url": "https://example.com/report.pdf"
      },
      "merge-all": {
        "operation": "merge",
        "input": ["cover", "report"]
      },
      "export": {
        "operation": "export/url",
        "input": ["merge-all"]
      }
    }
  }'

Przykład: zrzut strony internetowej

Operacja capture-website nie wymaga kroku wejściowego: renderuje publiczny adres URL do PDF, PNG lub JPG.

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "capture": {
        "operation": "capture-website",
        "url": "https://example.com",
        "output_format": "pdf",
        "width": 1280
      },
      "export": {
        "operation": "export/url",
        "input": ["capture"]
      }
    }
  }'

Pobierz zadanie

GET/api/v1/jobs/:id

Pobierz szczegóły zadania i status wszystkich jego kroków.

curl
curl https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_..."

Wyświetl zadania

GET/api/v1/jobs
pageinteger

Numer strony, od 1. Domyślnie: 1.

limitinteger

Liczba wyników na stronę, 1-100. Domyślnie: 20.

statusstring

Filtruj według statusu: WAITING, PROCESSING, FINISHED, ERROR.

tagstring

Filtruj według etykiety.

curl
curl "https://convertfly.io/api/v1/jobs?status=finished&per_page=5" \
  -H "Authorization: Bearer cvfly_sk_..."
Odpowiedź
{
  "data": [ ... ],
  "links": { "first": "?page=1&per_page=5", "last": "?page=9&per_page=5", "prev": null, "next": "?page=2&per_page=5" },
  "meta": {
    "page": 1,
    "per_page": 5,
    "total": 42
  }
}

Usuń zadanie

DELETE/api/v1/jobs/:id

Usuń zadanie i wszystkie powiązane z nim pliki. Trwające kroki zostaną anulowane. Tej operacji nie można cofnąć.

curl
curl -X DELETE https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_..."

Czekaj na zakończenie

GET/api/v1/jobs/:id/wait

Endpoint long-polling, który blokuje odpowiedź, dopóki zadanie nie osiągnie stanu końcowego (FINISHED lub ERROR). Po 300 sekundach zwraca 202 Accepted, jeśli zadanie jest nadal przetwarzane.

curl
curl "https://convertfly.io/api/v1/jobs/job_7kX9mP2qR/wait?timeout=120" \
  -H "Authorization: Bearer cvfly_sk_..."

Kroki (tasks)

Kroki (tasks) to poszczególne etapy w ramach zadania. Każdy krok ma nazwę (klucz w obiekcie tasks), pole operation i opcjonalnie tablicę input z nazwami poprzednich kroków.

Pola kroku

PoleTypOpis
operationstringOperacja do wykonania (zob. Operacje)
inputstring[]Nazwy kroków, których wynik ma posłużyć jako dane wejściowe
output_formatstringFormat docelowy dla operacji convert
optionsobjectUstawienia właściwe dla operacji (jakość, gęstość itd.)

Wyświetl kroki zadania

GET/api/v1/jobs/:id/tasks
Odpowiedź
{
  "data": [
    {
      "name": "import-file",
      "operation": "import/url",
      "status": "finished",
      "result": { "file_id": "file_Xk9m..." }
    },
    {
      "name": "convert",
      "operation": "convert",
      "status": "finished",
      "result": { "file_id": "file_Pm3n..." }
    }
  ]
}

Pobierz krok

GET/api/v1/jobs/:job_id/tasks/:task_name

Anuluj krok

POST/api/v1/jobs/:job_id/tasks/:task_name/cancel

Anuluj trwający lub oczekujący krok. Kroki, które od niego zależą, również zostaną anulowane.

Ponów nieudany krok

POST/api/v1/jobs/:job_id/tasks/:task_name/retry

Ponów krok o statusie ERROR. Jeśli krok jest płatny, ponownie zużywa kredyty.

Przesyłanie plików

Pliki można przekazać do ConvertFly na trzy sposoby. Wybierz ten, który najlepiej pasuje do Twojego przypadku.

Import z adresu URL

Najprostsza metoda. ConvertFly pobiera plik z publicznie dostępnego adresu URL.

Definicja kroku
{
  "import-file": {
    "operation": "import/url",
    "url": "https://example.com/document.pdf",
    "filename": "document.pdf",
    "headers": {
      "Authorization": "Bearer your-external-token"
    }
  }
}

Bezpośrednie przesyłanie (podpisany URL)

Dla plików na Twoim komputerze. Proces ma dwa etapy: najpierw utwórz krok, aby uzyskać podpisany adres URL do przesłania, a następnie wyślij plik metodą PUT na ten adres.

Etap 1: utwórz zadanie z import/upload
{
  "upload-file": {
    "operation": "import/upload",
    "filename": "photo.jpg"
  }
}
Etap 2: prześlij plik na podpisany URL
# The task result will contain the presigned URL
curl -X PUT "https://files.convertfly.io/convertfly-files/..." \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

Import z Base64

Dla małych plików (poniżej 10 MB). Umieść zawartość pliku bezpośrednio w żądaniu.

Definicja kroku
{
  "import-file": {
    "operation": "import/base64",
    "file": "JVBERi0xLjQKJcOkw7zD...",
    "filename": "document.pdf"
  }
}
MetodaMaks. rozmiarNajlepsza do
import/url5 GBPlików już dostępnych online
import/upload5 GBPlików lokalnych, dużych plików
import/base6410 MBMałych plików, bezpośrednio w żądaniu

Opcje konwersji

Każda operacja obsługuje własne opcje. Poniżej znajdziesz wszystkie dostępne operacje i pary formatów dla konwersji.

Dostępne operacje

OperacjaOpisKredyty
import/uploadPrześlij plik przez podpisany URL0
import/urlZaimportuj plik z adresu URL0
import/base64Zaimportuj plik z danych base640
convertKonwertuj między formatami1-4
optimizeSkompresuj/zoptymalizuj plik1
thumbnailWygeneruj miniaturę podglądu1
mergeScal kilka plików PDF i/lub obrazów w jeden PDF1
watermarkDodaj tekstowy lub graficzny znak wodny do obrazów, filmów lub PDF1
splitWyodrębnij strony z pliku PDF lub podziel go na jeden PDF na stronę (ZIP)1
rotateObróć strony pliku PDF o 90, 180 lub 270 stopni1
resizeZmień rozmiar obrazu według szerokości, wysokości lub procentu, zachowując proporcje1
gifZamień fragment wideo w animowany GIF (początek, czas trwania, fps, szerokość)2
ocrRozpoznaj tekst w PDF lub obrazach (14 języków, te same co na stronie OCR)3
capture-websiteZapisz publiczną stronę internetową jako PDF, PNG lub JPG1
metadataWyodrębnij metadane pliku1
export/urlUzyskaj podpisany URL do pobrania0
export/s3Eksportuj bezpośrednio do swojego zasobnika S30

Obsługiwane pary formatów

Popularne konwersje. Format jest wykrywany automatycznie na podstawie pliku, ale możesz też jawnie ustawić input_format.

KategoriaFormaty wejścioweFormaty wyjściowe
Dokumentypdf, docx, doc, odt, rtf, txt, htmlpdf, docx, odt, rtf, txt, html
Arkusze kalkulacyjnexlsx, xls, ods, csvxlsx, ods, csv, pdf
Prezentacjepptx, ppt, odppptx, odp, pdf
Obrazyjpg, png, gif, bmp, tiff, webp, svg, heicjpg, png, gif, bmp, tiff, webp
Wideomp4, avi, mov, mkv, webmmp4, avi, mov, mkv, webm, gif
Dźwiękmp3, wav, ogg, flac, aac, m4amp3, wav, ogg, flac, aac

Opcje jakości i przetwarzania

Przekaż je w obiekcie options kroku convert.

qualityinteger

Jakość wyniku dla formatów stratnych (1-100). Domyślnie: 85.

densityinteger

DPI przy konwersji dokumentu na obraz. Domyślnie: 150.

widthinteger

Zmień szerokość na podaną liczbę pikseli. Zachowuje proporcje, jeśli pominięto height.

heightinteger

Zmień wysokość na podaną liczbę pikseli. Zachowuje proporcje, jeśli pominięto width.

pagesstring

Zakres stron dla operacji na dokumentach. Np. 1-5, 1,3,5, all.

Przykład: PNG wysokiej jakości w 300 DPI
{
  "convert-hq": {
    "operation": "convert",
    "input": ["import-file"],
    "output_format": "png",
    "options": {
      "density": 300,
      "quality": 95
    }
  }
}

Webhooki

Zarejestruj adresy URL webhooków, aby otrzymywać powiadomienia w czasie rzeczywistym, gdy zmienia się status zadań lub kroków. Wszystkie treści są podpisane HMAC-SHA256, dzięki czemu możesz sprawdzić, że pochodzą od ConvertFly.

Utwórz webhook

POST/api/v1/webhooks
urlstringwymagane

Adres HTTPS, na który będą wysyłane zdarzenia webhooka.

eventsstring[]wymagane

Typy zdarzeń do subskrypcji.

curl
curl -X POST https://convertfly.io/api/v1/webhooks \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-app.com/webhooks/convertfly",
    "events": ["job.finished", "job.failed"]
  }'
Odpowiedź (201 Created)
{
  "data": {
    "id": "wh_Abc123...",
    "url": "https://your-app.com/webhooks/convertfly",
    "events": ["job.finished", "job.failed"],
    "signing_secret": "whsec_9f8e7d6c5b4a...",
    "created_at": "2026-04-03T10:30:00Z"
  }
}

Wyświetl webhooki

GET/api/v1/webhooks

Usuń webhook

DELETE/api/v1/webhooks/:id

Typy zdarzeń

ZdarzenieWyzwalacz
job.finishedWszystkie kroki zadania zakończyły się powodzeniem
job.failedCo najmniej jeden krok zakończył się błędem, zadanie ma stan ERROR
task.finishedPojedynczy krok został zakończony
task.failedPojedynczy krok zakończył się błędem

Treść webhooka

POST na Twój adres URL webhooka
{
  "event": "job.finished",
  "timestamp": "2026-04-03T10:31:15Z",
  "data": {
    "id": "job_7kX9mP2qR",
    "status": "finished",
    "tasks": { ... }
  }
}

Weryfikacja podpisów

Każde żądanie webhooka zawiera dwa nagłówki: X-Webhook-Signature i X-Webhook-Timestamp. Zweryfikuj je, aby mieć pewność, że treść wysłał ConvertFly i nie została zmieniona.

Node.js
import crypto from "crypto";

function verifyWebhook(rawBody, signature, timestamp, secret) {
  const signedContent = timestamp + "." + rawBody;
  const expected = "v1=" + crypto
    .createHmac("sha256", secret)
    .update(signedContent)
    .digest("hex");

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}
Python
import hmac, hashlib

def verify_webhook(raw_body: bytes, signature: str, timestamp: str, secret: str) -> bool:
    signed_content = f"{timestamp}.{raw_body.decode()}"
    expected = "v1=" + hmac.new(
        secret.encode(), signed_content.encode(), hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

Klucze API

Zarządzaj kluczami API programowo. Kluczami możesz też zarządzać w panelu.

Utwórz klucz API

POST/api/v1/api-keys
namestringwymagane

Opisowa nazwa klucza.

scopesstring[]

Przyznawane uprawnienia. Domyślnie: ["*"] (pełny dostęp).

Odpowiedź (201 Created)
{
  "data": {
    "id": "key_Xk9m...",
    "name": "production-server",
    "key": "cvfly_sk_live_abc123def456...",
    "scopes": ["*"],
    "created_at": "2026-04-03T10:30:00Z"
  }
}

Ważne: pełny klucz API jest wyświetlany tylko raz, w chwili utworzenia. Przechowuj go w bezpiecznym miejscu, ponieważ nie będzie można go ponownie pobrać.

Wyświetl klucze API

GET/api/v1/api-keys

Unieważnij klucz API

DELETE/api/v1/api-keys/:id

Natychmiast unieważnia klucz. Wszystkie żądania z jego użyciem zwrócą 401.

Limity żądań

Liczba żądań API jest ograniczona dla każdego klucza API, aby zapewnić uczciwe korzystanie. Po przekroczeniu limitu żądania zwracają 429 Too Many Requests.

Limit domyślny

Każdy klucz API pozwala na 100 żądań na godzinę. Aktualny limit i okno czasowe klucza są zwracane jako rate_limit i rate_limit_window (w sekundach) podczas wyświetlania listy kluczy. Skontaktuj się z nami, jeśli Twoja integracja potrzebuje wyższego limitu.

Nagłówki odpowiedzi

Każda odpowiedź na żądanie wykonane z kluczem API zawiera te nagłówki:

X-RateLimit-Limitnagłówek

Maksymalna liczba żądań dozwolona w bieżącym oknie.

X-RateLimit-Remainingnagłówek

Liczba żądań pozostałych w bieżącym oknie.

X-RateLimit-Resetnagłówek

Znacznik czasu Unix, w którym okno zostanie zresetowane.

Retry-Afternagłówek

Liczba sekund oczekiwania przed ponowieniem (tylko w odpowiedziach 429).

Przykładowa odpowiedź 429
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1743681600
Retry-After: 3600

{
  "code": "RATE_LIMIT_EXCEEDED",
  "message": "Rate limit exceeded. 100 requests per 3600s allowed."
}

Błędy

ConvertFly używa standardowych kodów statusu HTTP. Wszystkie odpowiedzi z błędem mają jednolity format z kodem code czytelnym dla maszyn i komunikatem message czytelnym dla ludzi.

Format odpowiedzi z błędem

JSON
{
  "code": "INVALID_DATA",
  "message": "Missing required field: output_format",
  "details": {
    "field": "output_format",
    "reason": "required"
  }
}

Kody błędów

KodHTTPOpis
INVALID_DATA400Nieprawidłowa treść żądania lub parametry
UNAUTHENTICATED401Brak klucza API lub klucz nieprawidłowy
FORBIDDEN403Klucz API nie ma uprawnienia wymaganego do tej operacji
NOT_FOUND404Zasób nie istnieje lub został usunięty
CONFLICT409Zasób już istnieje lub operacja jest sprzeczna z bieżącym stanem
PAYLOAD_TOO_LARGE413Treść żądania przekracza maksymalny dozwolony rozmiar
UNSUPPORTED_FORMAT422Żądana konwersja nie jest obsługiwana
RATE_LIMIT_EXCEEDED429Przekroczono limit żądań, zob. Limity żądań
INSUFFICIENT_CREDITS402Za mało kredytów, aby wykonać operację
SERVER_ERROR500Wewnętrzny błąd serwera: ponów próbę lub skontaktuj się z pomocą
UNAVAILABLE503Usługa chwilowo niedostępna: spróbuj ponownie za moment

Obsługa błędów

JavaScript
const res = await fetch("https://convertfly.io/api/v1/jobs", {
  method: "POST",
  headers: {
    "Authorization": "Bearer cvfly_sk_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ tasks: { /* ... */ } }),
});

if (!res.ok) {
  const error = await res.json();
  console.error(`[${error.code}] ${error.message}`);
  // "[INVALID_DATA] Missing required field: output_format"
  return;
}

const { data: job } = await res.json();

Kredyty

Każda operacja kosztuje określoną liczbę kredytów. Operacje importu i eksportu są bezpłatne. Pozostałe saldo jest podawane w każdej odpowiedzi API w nagłówku X-Credits-Remaining.

Koszt w kredytach według typu konwersji

OperacjaKosztPrzykłady
Import / eksportBezpłatnieimport/url, import/upload, export/url, export/s3
Konwersja obrazów1 kredytjpg na png, webp na gif, heic na jpg
Konwersja dźwięku1 kredytmp3 na wav, flac na aac
Dokument na PDF1 kredyttxt na pdf, html na pdf, md na pdf
Office na PDF2 kredytydocx na pdf, pptx na pdf, xlsx na pdf
Konwersja wideo2 kredytymp4 na webm, mov na mp4
PDF na Office4 kredytypdf na docx, pdf na pptx
Optymalizacja1 kredytKompresja obrazów i PDF
Miniatura1 kredytGenerowanie obrazu podglądu
Scalanie1 kredytŁączenie wielu plików PDF
Znak wodny1 kredytNakładka tekstowa lub graficzna
Podziel PDF1 kredytWyodrębnij strony 1-3, 7 lub jeden plik na stronę
Obróć PDF1 kredytObróć wszystkie strony lub wybrane
Zmień rozmiar obrazu1 kredyt1200 px szerokości, 50 procent
Kreator GIF2 kredytyfragment mp4 do gif, ta sama cena co konwersja wideo
Zrzut strony1 kredytRenderowanie adresu URL do PDF lub obrazu
OCR3 kredytyPrzeszukiwalny skan PDF
Metadane1 kredytWyodrębnianie informacji o pliku

Sprawdzanie salda

Każda odpowiedź API zawiera nagłówek X-Credits-Remaining z Twoim bieżącym saldem.

Nagłówki odpowiedzi
HTTP/1.1 201 Created
Content-Type: application/json
X-Credits-Remaining: 9847
X-Credits-Used: 2

Gdy saldo jest zbyt niskie, aby wykonać zadanie, API zwraca 402 z kodem błędu INSUFFICIENT_CREDITS. Doładuj kredyty w panelu płatności.

Środowisko testowe

Klucze testowe (sandbox) pozwalają zbudować i przetestować integrację od początku do końca bez wydawania kredytów. Utwórz klucz z "sandbox": true; ma on prefiks cf_test_ zamiast cvfly_sk_. Wszystko działa tak jak w środowisku produkcyjnym, z trzema różnicami.

KredytyNigdy nie są pobierane. Twoje saldo pozostaje nienaruszone.
Rozmiar plikuPliki wejściowe są ograniczone do 5 MB.
WynikObrazy, filmy i pliki PDF mają znak wodny „ConvertFly SANDBOX”.
Utwórz klucz testowy
curl -X POST https://convertfly.io/api/v1/api-keys \
  -H "Authorization: Bearer YOUR_LIVE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Sandbox", "sandbox": true}'

# Response includes: "key": "cf_test_...", "is_sandbox": true

Chcesz zacząć?

Załóż bezpłatne konto i przetestuj API z kluczem testowym, bez żadnych opłat.

Twoje dane

Bez reklam i sieci reklamowych, więc nie ma czego odrzucać. Oto, czego używamy.

Twoje pliki

Przechowywane w postaci zaszyfrowanej i usuwane 24 godziny po przesłaniu.

Niezbędne pliki cookie

Zawsze aktywne
ZastosowanieNazwaCzas
Zapamiętanie językaNEXT_LOCALEDo zamknięcia przeglądarki
Liczenie darmowego limitucf_free1 rok
Utrzymanie logowaniaauthjs.*30 dni, jeśli masz konto

Plausible, hostowany przez Dizzus, bez plików cookie. Widzimy sumy, a nie osoby.

Dostawcy: Stripe do płatności, Cloudflare do DNS i ochrony przed botami. Polityka prywatności