Ortobeta

Dla deweloperów

Integruj Orto ze swoimi aplikacjami.

Endpoint
POST https://ortoskrypt.pl/api/correction/correct
Uwierzytelnianie

Klucz API należy przekazać w nagłówku Authorization:

Authorization: Bearer sk_live_...
Parametry żądania
textwymagany
Tekst do korekty. Maks. 20 000 znaków.
intervention_levelwymagany
Poziom korekty: „high" (pełna – gramatyka, styl, leksyka) lub „low" (minimalna – tylko ortografia i interpunkcja).
do_not_saveopcjonalny
Jeśli true, korekta nie zostanie zapisana w historii.
Przykład: curl
curl -X POST https://ortoskrypt.pl/api/correction/correct \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Twój tekst do korekty...",
    "intervention_level": "high"
  }'
Przykład – JavaScript
const response = await fetch(
  'https://ortoskrypt.pl/api/correction/correct',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer sk_live_...',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      text: 'Twój tekst do korekty...',
      intervention_level: 'high',
    }),
  }
);

const data = await response.json();
console.log(data.corrected_text);
Odpowiedź (200 OK)
original_textOryginalny tekst przekazany do korekty.
corrected_textTekst po korekcie.
processing_timeCzas przetwarzania w sekundach.
{
  "original_text": "...",
  "corrected_text": "...",
  "processing_time": 1.23
}
Limity zapytań

Konta z kluczem API mogą wykonać 20 zapytań na 5 minut. Aktualne limity zwracane są w nagłówkach każdej odpowiedzi:

X-RateLimit-LimitMaksymalna liczba zapytań w oknie czasowym.
X-RateLimit-RemainingPozostała liczba zapytań w bieżącym oknie.
X-RateLimit-ResetCzas resetu limitu (Unix timestamp w ms).
Kody błędów
400Nieprawidłowe dane wejściowe (brak tekstu, tekst pusty lub za długi).
401Brak klucza API lub klucz nieprawidłowy/nieaktywny.
403Brak planu biznesowego.
429Przekroczono limit zapytań. Sprawdź X-RateLimit-Reset.
500Błąd serwera. Spróbuj ponownie po chwili.

API asynchroniczne

Korekta – w zależności od długości tekstu – może trwać kilka–kilkanaście minut. Zamiast czekać na odpowiedź, możesz użyć trybu asynchronicznego.

Krok 1: wyślij zadanie
POST https://ortoskrypt.pl/api/correction/queue

Przyjmuje te same parametry co endpoint synchroniczny. Zwraca natychmiast z kodem 202:

{
  "job_id": "uuid...",
  "status": "pending"
}
Krok 2: sprawdź status
GET https://ortoskrypt.pl/api/correction/jobs/{job_id}

Pole status przyjmuje wartości:

pendingZadanie oczekuje w kolejce.
processingTrwa korekta.
completedGotowe. Odpowiedź zawiera pole result.
failedBłąd. Odpowiedź zawiera pole error.
Przykład: curl
curl -H "Authorization: Bearer sk_live_..." \
  https://ortoskrypt.pl/api/correction/jobs/twój-job-id
Przykład: JavaScript
// 1. Wyślij zadanie
const { job_id } = await fetch(
  'https://ortoskrypt.pl/api/correction/queue',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer sk_live_...',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      text: 'Twój tekst do korekty...',
      intervention_level: 'high',
    }),
  }
).then(r => r.json())

// 2. Sprawdzaj co 2 sekundy
const result = await new Promise((resolve, reject) => {
  const poll = setInterval(async () => {
    const res = await fetch(
      `https://ortoskrypt.pl/api/correction/jobs/${job_id}`,
      { headers: { 'Authorization': 'Bearer sk_live_...' } }
    ).then(r => r.json())

    if (res.status === 'completed') {
      clearInterval(poll)
      resolve(res.result)
    } else if (res.status === 'failed') {
      clearInterval(poll)
      reject(new Error(res.error))
    }
  }, 2000)
})

console.log(result.corrected_text)