EN ZalogujZałóż konto
Startujemy w październiku 2026. Działają konta, katalog modeli, kalkulator i dokumentacja. Studio jest dostępne w podglądzie; generowanie czeka na uruchomienie.

n8n, Make i Zapier

Wszystkie strony dokumentacji

Jantaris to zwykłe REST API, więc obsłuży je każde narzędzie do automatyzacji z krokiem HTTP. Poniżej konkretne ustawienia dla n8n, Make i Zapiera. Prawie wszystko sprowadza się do dwóch schematów:

  • Krótkie zadania (czat, obrazy): jedno zapytanie HTTP. Przy obrazach dopisz ?wait=60 do /v1/generate, a odpowiedź od razu zawiera wynik.
  • Długie zadania (wideo, muzyka): uruchamiasz zadanie, a potem albo odpytujesz /v1/tasks/{id} w pętli, albo odbierasz webhook w drugim scenariuszu.

Zanim zaczniesz, utwórz w panelu osobny klucz API z miesięcznym limitem wydatków. Jeśli automatyzacja przez pomyłkę się zapętli, limit ją zatrzyma.

n8n

Poświadczenie

Utwórz poświadczenie typu Header Auth:

PoleWartość
NameAuthorization
ValueBearer sk-jt-...

W węzłach HTTP Request wybierz Authentication: Generic Credential Type, potem Header Auth i to poświadczenie.

Czat przez węzły OpenAI

Poświadczenie OpenAI w n8n ma pole Base URL. Utwórz poświadczenie OpenAI z wartościami:

PoleWartość
API Keysk-jt-...
Base URLhttps://jantaris.com/v1

Potem użyj węzła OpenAI Chat Model (samodzielnie albo w AI Agent) i wybierz model By ID, np. claude-sonnet-5, gpt-6-luna albo gemini-3.8-flash.

Obraz w jednym węźle

Węzeł HTTP Request:

UstawienieWartość
MethodPOST
URLhttps://jantaris.com/v1/generate?wait=60
Authenticationpoświadczenie Header Auth z góry
Send Bodywłączone
Body Content TypeJSON
Specify BodyUsing JSON
Options, Timeout130000 (ms, więcej niż wait)

Ciało JSON:

json
{
  "model": "gpt-image-2.5",
  "input": {
    "prompt": "{{ $json.prompt }}",
    "aspect_ratio": "1024x1024"
  }
}

Element wyjściowy ma status i output. Podepnij {{ $json.output[0].url }} do drugiego węzła HTTP Request z Response Format File, żeby pobrać obraz, a potem zapisz go, gdzie chcesz (Google Drive, S3 itd.). Przed pobieraniem wstaw węzeł IF sprawdzający, czy {{ $json.status }} równa się succeeded, bo zakończone zadanie może też mieć status failed.

Wideo z pętlą odpytywania

text
[Start generacji] -> [Wait 30 s] -> [Sprawdź zadanie] -> [IF gotowe?] --true--> [Pobierz]
                         ^                                    |
                         +--------------- false --------------+
WęzełTypUstawienia
Start generacjiHTTP RequestPOST https://jantaris.com/v1/generate, ciało JSON z model: "seedance-2.5" i input
Wait 30 sWaitResume: After Time Interval, 30 sekund
Sprawdź zadanieHTTP RequestGET {{ $('Start generacji').item.json.poll_url }}, to samo poświadczenie
IF gotowe?IF{{ $json.status }} równe succeeded LUB równe failed
PobierzHTTP RequestGET {{ $json.output[0].url }}, Response Format File

Wyjście false węzła IF podłącz z powrotem do Wait. Za gałęzią true dodaj drugi IF, który kieruje zadania failed na ścieżkę błędu (np. wiadomość na Slacku z {{ $json.error.message }}).

Wideo z webhookiem

Workflow A uruchamia zadanie:

json
{
  "model": "kling-3.0",
  "input": { "prompt": "{{ $json.prompt }}", "duration": 5 },
  "webhook_url": "https://twoje-n8n.example.com/webhook/jantaris-done-7f3a9c"
}

Workflow B odbiera wynik:

WęzełUstawienia
WebhookHTTP Method POST, Path jantaris-done-7f3a9c, Respond: Immediately. Production URL wklej jako webhook_url
HTTP RequestGET https://jantaris.com/v1/tasks/{{ $json.body.id }} z poświadczeniem Header Auth
IF{{ $json.status }} równe succeeded
HTTP RequestGET {{ $json.output[0].url }}, Response Format File

Drugi krok czyta zadanie ponownie twoim kluczem, więc działasz tylko na danych z API, nawet bez sprawdzania podpisu. Jeśli chcesz weryfikować x-jantaris-signature, włącz w węźle Webhook opcję Raw Body i policz HMAC-SHA256 w węźle Code, jak w Webhookach. Workflow B musi być aktywny, żeby Production URL działał.

Make

Obraz albo czat: HTTP "Make a request"

PoleWartość
URLhttps://jantaris.com/v1/generate?wait=60
MethodPOST
HeadersAuthorization = Bearer sk-jt-...
Body typeRaw
Content typeJSON (application/json)
Request contentJSON poniżej
Parse responseYes
Timeout (ustawienia zaawansowane)130
json
{
  "model": "flux-2-pro",
  "input": { "prompt": "{{1.prompt}}", "aspect_ratio": "16:9" }
}

Sparsowane ciało trafia do data: {{2.data.status}}, {{2.data.output}}. Dodaj Iterator na {{2.data.output}} i moduł HTTP Get a file z polem url z iteratora, żeby pobrać każdy obraz.

Do czatu ten sam moduł z URL https://jantaris.com/v1/chat/completions i ciałem:

json
{
  "model": "claude-sonnet-5",
  "messages": [{ "role": "user", "content": "Streść: {{1.text}}" }]
}

Odpowiedź jest w {{2.data.choices[1].message.content}} (Make numeruje elementy tablic od 1).

Wideo z webhookiem

  1. Utwórz scenariusz B z wyzwalaczem Webhooks > Custom webhook. Skopiuj jego adres.
  2. W scenariuszu A wyślij POST /v1/generate z "webhook_url": "<ten adres>", bez wait.
  3. W scenariuszu B po wyzwalaczu dodaj HTTP Make a request: GET https://jantaris.com/v1/tasks/{{1.id}} z nagłówkiem Authorization, Parse response Yes.
  4. Na ścieżce ustaw filtr: {{2.data.status}} równe succeeded.
  5. Iterator na {{2.data.output}}, potem HTTP Get a file z url, potem moduł zapisu plików.

Scenariusz B musi być włączony. Jantaris ponawia webhook, jeśli Make nie odpowie kodem 2xx, więc jeśli duplikaty coś psują, dodaj odsiewanie (np. Data Store z kluczem po id zadania).

Zapier

Start zadania: Webhooks by Zapier, Custom Request

PoleWartość
MethodPOST
URLhttps://jantaris.com/v1/generate
DataJSON poniżej
HeadersAuthorization = Bearer sk-jt-..., Content-Type = application/json
json
{
  "model": "seedance-2.5",
  "input": { "prompt": "PROMPT Z POPRZEDNIEGO KROKU", "duration": 5, "aspect_ratio": "9:16" },
  "webhook_url": "https://hooks.zapier.com/hooks/catch/..."
}

Prompt z wcześniejszego kroku wstawiasz selektorem pól Zapiera. Przy obrazach możesz dopisać ?wait=20 do URL i od razu użyć wyniku w następnym kroku. Zapier ucina wolne zapytania, więc trzymaj wait krótko, a do wszystkiego dłuższego używaj webhooka.

Odbiór wyniku: drugi Zap

KrokAplikacja i zdarzenieUstawienia
TriggerWebhooks by Zapier, Catch HookAdres hooka wklej jako webhook_url wyżej
ActionWebhooks by Zapier, GETURL https://jantaris.com/v1/tasks/ + pole id z triggera, nagłówek Authorization = Bearer sk-jt-...
FilterFilter by Zapierpole statusu (Text) exactly matches succeeded
ActionGoogle Drive (albo inna) Upload FileFile = pole z adresem wyniku z kroku GET

Czat

Custom Request z POST https://jantaris.com/v1/chat/completions i tymi samymi nagłówkami:

json
{
  "model": "gpt-6-luna",
  "messages": [{ "role": "user", "content": "Napisz odpowiedź na tego maila: TREŚĆ MAILA" }]
}

Zapier spłaszcza zagnieżdżony JSON, więc odpowiedź znajdziesz w wyniku kroku jako pole z treścią wiadomości pod choices.

Koszty w automatyzacjach

Każde uruchomienie rozlicza się jak zwykłe wywołanie API: czat za tokeny, media za jednostkę (GPT Image 2.5 0,254 zł za obraz, Seedance 2.5 od 1,51 zł za sekundę). Nieudane zadania kosztują 0. Dodaj cykliczne sprawdzanie GET /v1/balance z powiadomieniem, gdy low_balance ma wartość true, żeby scenariusze nie stanęły na 402.