Gdzie znajduje się specyfikacja
Specyfikacja endpointów jest generowana na żywo z katalogu API. Należy korzystać z tych plików zamiast kopiowania list endpointów z artykułów:
- Kompaktowy indeks dla klientów AI:
https://api.paperoffice.ai/latest/docs/llms.txt - Pełna dokumentacja:
https://api.paperoffice.ai/latest/docs/llms-full.txt - OpenAPI 3.1:
https://api.paperoffice.ai/latest/docs/openapi.json - Umiejętność agenta:
https://api.paperoffice.ai/latest/docs/skill.md - Kolekcja Postman:
https://api.paperoffice.ai/latest/docs/postman
Ścieżki dokumentacji są publiczne i nie wymagają tokena. Należy zaimportować adres URL Postman do aplikacji Postman, VS Code lub Bruno i pobrać go ponownie po zmianie wersji dokumentacji. Podstawowy adres produkcyjny to https://api.paperoffice.ai/latest; ścieżki /dev należy używać wyłącznie w celu rozwoju.
Szybki start z asystentem kodowania AI: należy podać mu adres pliku llms-full.txt i opisać potrzebną funkcję, na przykład funkcję wysyłającą obraz i zwracającą rozpoznany tekst.
Uwierzytelnianie i typy tokenów
Większość endpointów produktu wymaga tokena bearer w nagłówku Authorization. Tokeny tworzy się w aplikacji PaperOffice w sekcji Konto → API.
- Klucz systemowy (po_sk_): integracja serwer-serwer z pełnym dostępem do API. Nigdy nie należy go używać w przeglądarce.
- Token użytkownika (po_ut_): zakres jednego użytkownika, na przykład dla MCP. Prawa zależą od użytkownika i licencji.
- Token grupy (po_gt_): dziedziczy prawa i białą listę przestrzeni roboczych grupy użytkowników.
- Klucz publikowalny (po_pk_): do użycia w przeglądarce. Każde żądanie wymaga źródła, które wpisał właściciel klucza; budżet na cały okres życia klucza ogranicza zużycie, a usuwanie, administracja kontem, zarządzanie kluczami i zmiany płatności pozostają zablokowane. Nie jest dozwolony dla MCP.
Bez tokena osiągalne są wyłącznie endpointy infrastruktury, takie jak specyfikacja, kontrola stanu i test łączności. Żądanie produktu bez tokena odpowiada kodem HTTP 403 i kodem TIER_RESTRICTED, a nie HTTP 401.
Zadania: oczekiwanie, polling i wyniki
Przetwarzanie odbywa się jako zadania. Ścieżki zadań używają wzorca handler___command z trzema podkreśleniami, na przykład POST /job/add/paperoffice_aiocr___generate dla rozpoznawania tekstu. Notacja kropek jest odrzucana z kodem JOB_CONFIG_INVALID.
- Domyślnie żądanie utrzymuje połączenie przez pewien czas. Jeśli zadanie zakończy się w czasie, wynik otrzymuje się bezpośrednio. W przeciwnym razie otrzymuje się HTTP 202 z identyfikatorem zadania i adresem do pollingu, a zadanie kontynuuje działanie.
- HTTP 202 to sukces, a nie błąd. Należy wykonywać polling
GET /job/get/{job_id}co 5 do 10 sekund, aż status wyniesie completed. Wynik znajduje się wówczas w job_result. - Z client_wait=false identyfikator zadania otrzymuje się natychmiast i polling rozpoczyna się od początku.
- Wszystkie odpowiedzi są w formacie JSON. Klienci powinni czytać pole kodu, a nie zlokalizowany tekst komunikatu.
Zadania API w kolejce, w trakcie wykonywania i ukończone widoczne są w aplikacji pod Konto → API → Kolejka zadań. Pełna lista kodów błędów znajduje się w specyfikacji; typowe przypadki to brakujące lub nieprawidłowe parametry (400), brakujący lub nieprawidłowy token (401), niewystarczające Credits (402), zabroniona akcja (403) i zbyt wiele żądań (429, należy honorować Retry-After).
SLA startu: kiedy zadanie się rozpoczyna
Opcjonalne pole processing_lane kontroluje, kiedy zadanie rozpocznie się w kolejce, a nie kiedy się zakończy. client_wait kontroluje, czy połączenie czeka na wynik; oba pola są niezależne.
Bez processing_lane stosuje się domyślną wartość przestrzeni roboczej, w przeciwnym razie best effort. Każdy plan obejmuje best effort bez dopłaty. Szybsze pasma startu są opcjonalne i kosztują więcej. Aktualne pasma i ich ceny dostępne są na żywo poprzez listę cen API; szczegóły znajdują się w dokumentacji API.
Webhooki
Endpointy webhooków odbierają zdarzenia zadań i konta, na przykład job.completed, job.failed, job.progress oraz zdarzenia dla dokumentów, przestrzeni roboczych i zadań. Powiadomienia o koncie, takie jak pusty portfel lub unieważniony klucz, nie są zdarzeniami webhook.
- Ładunki są podpisywane za pomocą HMAC-SHA256 w nagłówku X-Paperoffice-Signature. Należy obliczyć podpis na podstawie surowej treści żądania przy użyciu sekretu webhooka i odrzucić żądanie, jeśli nie pasuje.
- Webhooki są rejestrowane, wyświetlane, aktualizowane, testowane i usuwane za pośrednictwem interfejsu API.
Rozliczenia i wykorzystanie
Wywołania API pobierają Credits ze wspólnej puli organizacji, tej samej co aplikacja. Niektóre zapytania dotyczące statusu i zdrowia nie są rozliczane; szczegóły znajdują się w dokumentacji API. Wywołania odrzucone z powodu nieprawidłowych danych wejściowych są również rozliczane; wywołania ograniczone limitami nie są.
Wywołania wraz z ich Credits są widoczne w sekcji API i deweloperzy → Użycie API: dziennik na żywo pokazuje każde żądanie, historia pokazuje użycie według daty, handlera i akcji. Gdy Credits się wyczerpią, wywołania są odrzucane do momentu uzupełnienia salda lub aktywacji automatycznego doładowania. Limity szybkości zależą od planu; aktualne limity i nagłówki odpowiedzi opisano w dokumentacji API. Więcej na temat Credits: Rozliczenia i Credits w PaperOffice AI.
MCP: łączenie asystentów AI
MCP łączy asystentów AI, takich jak Claude, ChatGPT, Grok i Cursor, bezpośrednio z PaperOffice. Uwierzytelnianie odbywa się za pomocą OAuth 2.1 lub tokena użytkownika/grupy; klucze systemowe i klucze publikowalne są zablokowane dla MCP. Host produkcyjny to https://mcp.paperoffice.ai, z profilami takimi jak /claude, /chatgpt, /grok, /cursor i /dms. Konfiguracja, uprawnienia i przepływ danych: Korzystanie z PaperOffice z Claude, ChatGPT, Grok i Cursor.
Najczęściej zadawane pytania
- Gdzie znaleźć wszystkie punkty końcowe? W plikach llms.txt, llms-full.txt oraz pliku OpenAPI. Są one generowane w czasie rzeczywistym.
- Jaki token powinien używać serwer? Klucz systemowy, nigdy w przeglądarce. Dla przeglądarki należy użyć klucza publikowalnego z określonym źródłem i budżetem.
- Czy HTTP 202 to błąd? Nie. Zadanie nadal działa; należy sprawdzać wynik.
- Czy szybsze pasma startu kosztują więcej? Tak. Tryb best effort nie wymaga dopłaty; aktualne ceny znajdują się na liście cenowej API.
- Czy odrzucone wywołania są rozliczane? Wywołania odrzucone z powodu nieprawidłowych danych wejściowych są rozliczane; wywołania ograniczone limitami nie są.