Dla firm · Integracja

Pozywacz API

Składaj sprawy programistycznie i odbieraj gotowe pozwy. Zamiast klikać w kreatorze, Twój system wysyła jeden request z danymi sprawy - my walidujemy, przygotowujemy pozew i oddajemy wynik przez webhook lub odpytywanie statusu.

Jak zacząć

  1. Uzyskaj klucz API. Napisz na help@pozywacz.pl - po ustaleniu warunków nadamy Ci klucz i skonfigurujemy limity oraz webhook.
  2. Sprawdź dostępne typy spraw. Odpytaj GET /api/v1/case-types, aby poznać pola wymagane dla Twojego konta.
  3. Wyślij sprawę. POST /api/v1/submissions zwraca 202 i identyfikator zgłoszenia.
  4. Odbierz pozew. Przez webhook (podpisany HMAC) albo odpytując GET /api/v1/submissions/{id}.

Uwierzytelnianie

Każde żądanie musi zawierać Twój klucz API w nagłówku Authorization:

Authorization: Bearer pk_live_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • Sekret klucza pokazujemy tylko raz, w chwili generowania. Przechowuj go bezpiecznie - nie da się go odczytać ponownie.
  • Klucz można w każdej chwili unieważnić i wygenerować nowy (rotacja) bez zmiany konta.
  • Wszystkie wywołania idą po HTTPS. Nie umieszczaj klucza w kodzie front-endu.

Endpointy

GET/api/v1/case-types

Zwraca typy spraw dostępne dla Twojego klucza wraz ze schematem pól każdego typu.

Response
{
  "caseTypes": [
    {
      "claimType": "b2b_payment_missing",
      "title": "B2B — brak zapłaty",
      "fields": [
        {
          "name": "plaintiff",
          "type": "party",
          "required": true
        },
        {
          "name": "defendant",
          "type": "party",
          "required": true
        }
      ]
    },
    {
      "claimType": "other",
      "title": "Inna sprawa",
      "fields": [
        {
          "name": "plaintiff",
          "type": "party",
          "required": true
        },
        {
          "name": "defendant",
          "type": "party",
          "required": true
        }
      ]
    }
  ]
}
POST/api/v1/submissions

Składa jedną sprawę. W ciele podajesz claimType oraz obiekt data z polami sprawy. Zwraca 202 i submissionId. Nagłówek Idempotency-Key zapobiega duplikatom przy ponowieniu.

Request
{
  "claimType": "b2b_payment_missing",
  "data": {
    "plaintiff": {
      "name": "Przykład Sp. z o.o.",
      "street": "ul. Przykładowa",
      "houseNumber": "12",
      "city": "Warszawa",
      "postalCode": "00-001",
      "nip": "5252525252"
    },
    "defendant": {
      "name": "Dłużnik S.A.",
      "street": "ul. Przykładowa",
      "houseNumber": "12",
      "city": "Warszawa",
      "postalCode": "00-001",
      "nip": "7010101010"
    },
    "claimAmount": 12000,
    "claimInterest": true,
    "claimBusinessCosts": true,
    "contractSubject": "Wykonanie instalacji elektrycznej",
    "contractDescription": "Kompleksowe wykonanie instalacji elektrycznej w lokalu przy ul. ...",
    "contractDate": "2026-01-15",
    "paymentDue": "2026-05-10",
    "invoices": [
      {
        "fileName": "FV 1/2026",
        "amount": 12000,
        "dueDate": "2026-05-10"
      }
    ],
    "demandSent": true,
    "additionalInfo": "Dłużnik uznał dług mailowo w dniu ..."
  }
}
Response
{
  "submissionId": "clx123abc...",
  "status": "RECEIVED",
  "orderId": "a1b2c3..."
}
GET/api/v1/submissions/{id}

Zwraca status zgłoszenia, a po zakończeniu - przygotowany pozew (HTML) wraz z linkiem do dokumentu.

Response
{
  "submissionId": "clx123abc...",
  "status": "COMPLETED",
  "result": {
    "lawsuitHtml": "<div>POZEW O ZAPŁATĘ…</div>",
    "googleDocUrl": "https://docs.google.com/…"
  }
}
GET/api/v1/submissions

Lista Twoich zgłoszeń (najnowsze pierwsze) z paginacją kursorową. Parametry: status, limit, cursor.

Response
{
  "items": [
    {
      "submissionId": "clx…",
      "claimType": "b2b_payment_missing",
      "status": "COMPLETED"
    }
  ],
  "nextCursor": null
}

Kody błędów

HTTPcodeZnaczenie
401invalid_keyBrak, zły, unieważniony lub wygasły klucz.
403claim_type_forbiddenTwoje konto nie ma uprawnień do tego typu sprawy.
403client_suspendedKonto zawieszone - skontaktuj się z nami.
422validation_failedPola nie przeszły walidacji (szczegóły w issues).
429rate_limited / quota_exceededPrzekroczony limit zapytań lub miesięczna kwota.

Typy spraw i pola formularza

Pole data w POST /api/v1/submissions zależy od claimType. Poniżej pełny zestaw pól każdego typu.

b2b_payment_missingB2B — brak zapłaty

Pozew o zapłatę w sporze gospodarczym (przedsiębiorca vs przedsiębiorca) za wykonaną usługę lub dostarczony towar.

PoleTypWymaganeOpis
plaintiffobiekt: stronatakDane strony dochodzącej roszczenia (Twój klient końcowy).
defendantobiekt: stronatakDane dłużnika / strony pozwanej.
claimAmountkwota (PLN)takŁączna dochodzona kwota należności głównej w PLN.
claimInteresttrue/falsenieCzy żądać odsetek ustawowych za opóźnienie w transakcjach handlowych.
claimBusinessCoststrue/falsenieCzy żądać rekompensaty za koszty odzyskiwania należności.
contractSubjectteksttakKrótki tytuł: czego dotyczyła współpraca.
contractDescriptiontekst (długi)nieSzczegółowy opis zakresu umowy i wykonanych prac/dostaw.
contractDatedata (YYYY-MM-DD)nieData zawarcia umowy (YYYY-MM-DD).
paymentDuedata (YYYY-MM-DD)nieData wymagalności zapłaty (YYYY-MM-DD).
invoiceslista fakturnieLista nieopłaconych faktur (kwota + termin). Suma nie musi równać się kwocie roszczenia.
demandSenttrue/falsenieCzy wysłano przedsądowe wezwanie do zapłaty.
additionalInfotekst (długi)nieDowolny kontekst pomocny przy redakcji pozwu.
Przykładowy request
curl -X POST https://pozywacz.pl/api/v1/submissions \
  -H "Authorization: Bearer pk_live_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "claimType": "b2b_payment_missing",
  "data": {
    "plaintiff": {
      "name": "Przykład Sp. z o.o.",
      "street": "ul. Przykładowa",
      "houseNumber": "12",
      "city": "Warszawa",
      "postalCode": "00-001",
      "nip": "5252525252"
    },
    "defendant": {
      "name": "Dłużnik S.A.",
      "street": "ul. Przykładowa",
      "houseNumber": "12",
      "city": "Warszawa",
      "postalCode": "00-001",
      "nip": "7010101010"
    },
    "claimAmount": 12000,
    "claimInterest": true,
    "claimBusinessCosts": true,
    "contractSubject": "Wykonanie instalacji elektrycznej",
    "contractDescription": "Kompleksowe wykonanie instalacji elektrycznej w lokalu przy ul. ...",
    "contractDate": "2026-01-15",
    "paymentDue": "2026-05-10",
    "invoices": [
      {
        "fileName": "FV 1/2026",
        "amount": 12000,
        "dueDate": "2026-05-10"
      }
    ],
    "demandSent": true,
    "additionalInfo": "Dłużnik uznał dług mailowo w dniu ..."
  }
}'
otherInna sprawa

Sprawa cywilna niebędąca typowym pozwem B2B o zapłatę. Opisz fakty możliwie dokładnie w polach tekstowych — generator dobierze formę pozwu.

PoleTypWymaganeOpis
plaintiffobiekt: stronatakDane strony dochodzącej roszczenia (Twój klient końcowy).
defendantobiekt: stronatakDane dłużnika / strony pozwanej.
claimAmountkwota (PLN)nieKwota roszczenia w PLN, jeśli sprawa jest majątkowa.
contractSubjectteksttakJednozdaniowe streszczenie sprawy.
whatWentWrongtekst (długi)takCo się wydarzyło, na czym polega spór, czego oczekuje powód.
additionalInfotekst (długi)nieDodatkowy kontekst, dowody, przebieg korespondencji.
Przykładowy request
curl -X POST https://pozywacz.pl/api/v1/submissions \
  -H "Authorization: Bearer pk_live_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "claimType": "other",
  "data": {
    "plaintiff": {
      "name": "Przykład Sp. z o.o.",
      "street": "ul. Przykładowa",
      "houseNumber": "12",
      "city": "Warszawa",
      "postalCode": "00-001",
      "nip": "5252525252"
    },
    "defendant": {
      "name": "Dłużnik S.A.",
      "street": "ul. Przykładowa",
      "houseNumber": "12",
      "city": "Warszawa",
      "postalCode": "00-001",
      "nip": "7010101010"
    },
    "claimAmount": 8000,
    "contractSubject": "Zwrot zaliczki za niewykonaną usługę",
    "whatWentWrong": "Wykonawca pobrał zaliczkę i nie przystąpił do prac mimo upływu terminu...",
    "additionalInfo": "Strony wymieniły korespondencję mailową w okresie ..."
  }
}'

Webhooki

Jeśli skonfigurujemy dla Ciebie adres webhooka, po zakończeniu przygotowania wyślemy na niego POST z wynikiem. Treść jest podpisana Twoim sekretem:

X-Pozywacz-Signature: sha256=<hmac_sha256(webhookSecret, body)>

Zweryfikuj podpis, licząc HMAC-SHA256 z surowego ciała żądania i porównując go z nagłówkiem. Przykładowa treść:

{
  "event": "submission.updated",
  "submissionId": "clx123abc...",
  "status": "COMPLETED",
  "result": {
    "lawsuitHtml": "<div>…</div>",
    "googleDocUrl": "https://docs.google.com/…"
  },
  "error": null
}
  • Ponawiamy dostarczenie do 5 razy przy błędzie. Odpowiedz 2xx, aby potwierdzić odbiór.
  • Webhook jest opcjonalny - zawsze możesz zamiast tego odpytywać GET /api/v1/submissions/{id}.

Limity i rozliczenia

  • Rate limit - liczba zapytań na minutę, ustalana per konto (domyślnie 60/min).
  • Kwota miesięczna - opcjonalny limit liczby zgłoszeń w miesiącu kalendarzowym. Po przekroczeniu zwracamy 429 quota_exceeded.
  • Rozliczenie - na podstawie liczby zgłoszeń, jedną fakturą zbiorczą miesięcznie na dane Twojej firmy (zgodnie z umową).

Jak uzyskać klucz API

Dostęp nadajemy indywidualnie po kontakcie. Napisz do nas, opisz swój przypadek użycia i przewidywany wolumen - ustalimy warunki, limity i skonfigurujemy webhook, a następnie przekażemy Ci klucz.

Napisz: help@pozywacz.pl

Masz już pytania techniczne? Skorzystaj z formularza kontaktowego.