EN ZalogujOtwórz Studio
Wersja podglądowa. Katalog modeli, ceny, kalkulator i dokumentacja działają. Generowanie uruchomimy po starcie serwisu.

Automat do rolek w n8n albo Make - generowanie wideo przez API Kadrarisa

Automat do rolek AI w n8n lub Make: zatwierdzenie budżetu, zlecenie filmu przez API Kadrarisa, odpytywanie zadania i zapis pliku bez dubli.

Najdroższy błąd w automacie do rolek nie bierze się z promptu. Bierze się z ponowienia: scenariusz pada po tym, jak API przyjęło zlecenie, ktoś klika "uruchom jeszcze raz" i za chwilę masz dwa płatne filmy zamiast jednego. Dlatego ten przepis zaczynam od pamięci zleceń i zgody na koszt, a sam węzeł generowania jest tylko jednym z elementów.

Jak wygląda cały scenariusz

Rozpisuję go na etapy, z których każdy da się sprawdzić osobno:

  • Wejście. Formularz albo ręczny start z tematem, proporcjami, długością i folderem na wynik.
  • Szkic promptu. Agent tekstowy pisze opis sceny. Na tym etapie nic jeszcze nie idzie do generowania.
  • Kosztorys. Scenariusz czyta schemat modelu, liczy budżet, a człowiek zatwierdza konkretny model, parametry i liczbę wersji.
  • Zlecenie. Jeden POST na /v1/generate. Zwrócone id od razu ląduje w trwałym magazynie (data store, tabela, arkusz).
  • Czekanie. GET /v1/tasks/{id} w pętli, aż status zmieni się na succeeded albo failed, z twardym limitem prób.
  • Odbiór. Plik z output trafia do twojego magazynu, ktoś go ogląda. Publikacja w social mediach to już oddzielny scenariusz.

Węzeł HTTP: co wpisać

W obu narzędziach wysyłasz identyczny JSON, różni się tylko nazwa modułu:

  • w n8n to HTTP Request z metodą POST, adresem https://kadraris.com/v1/generate i treścią typu JSON,
  • w Make wybierasz moduł HTTP "Make a request", metodę POST i body w JSON,
  • nagłówki: Authorization: Bearer sk-kd-... oraz Content-Type: application/json,
  • klucz trzymasz w poświadczeniach (credentials / connections), nigdy w polu tekstowym scenariusza.
json
{
  "model": "seedance-2.5",
  "input": {
    "prompt": "A cup of coffee on a wooden table, soft morning light, slow camera push, no text",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "9:16"
  }
}

Zanim odpalisz scenariusz pierwszy raz, zajrzyj w GET /v1/models/seedance-2.5 i porównaj nazwy pól. Ten JSON służy do jednego, świadomie zatwierdzonego zlecenia. Nie podpinaj go pod automatyczne ponawianie po błędzie.

Uwaga przy eksporcie: plik scenariusza z n8n czy Make często wędruje na GitHuba albo do kolegi. Jeśli klucz siedzi w polu nagłówka zamiast w poświadczeniach, wędruje razem z nim. To samo dotyczy rozmowy z agentem, który pomaga budować workflow.

Ile to kosztuje i kto mówi "tak"

Seedance 2.5 kosztuje od 1,50 zł za sekundę. Stawka jest liczona od sekundy, więc mnożę długość przez liczbę wersji i dopiero tę sumę pokazuję do akceptacji. Konkretne ustawienia przeliczysz w kalkulatorze kosztów, a stawki pozostałych modeli są w cenniku.

Pole estimated_cost przychodzi w odpowiedzi na POST, czyli wtedy, gdy zadanie już przyjęto. Nie traktuj go jako zgody - zgoda musi paść wcześniej, na etapie kosztorysu.

Jeśli scenariusz rozmawia z Kadrarisem przez klienta MCP, ma do dyspozycji estimate_cost, które zwraca wycenę i confirm_token. Token przekazujesz potem do generate. W zwykłym REST takiego pola nie ma i nie warto go tam dopisywać. Szczegóły w dokumentacji MCP.

Pętla odpytywania bez dubli

Tu zwykle sypią się automaty, więc rozpisuję reguły:

  • Stan trzymasz w magazynie, nie w węźle. Po POST zapisujesz id. Ostatnia odpowiedź węzła zniknie przy kolejnym uruchomieniu.
  • Odstęp między odczytami. Wait/Sleep na kilka sekund (u mnie 5), potem GET z tym samym nagłówkiem.
  • queued i running oznaczają tylko kolejny odczyt. Ustaw sufit, na przykład 120 prób. Po nim zadanie trafia do człowieka, a nie do nowego POST.
  • failed zapisujesz z komunikatem i kończysz gałąź. Za nieudaną generację nie płacisz - zablokowane środki wracają na saldo.
  • succeeded to sygnał do pobrania każdego pliku z output. Sprawdź status pobrania i nadaj plikowi nazwę z id zadania, wtedy łatwo go potem znaleźć.
  • 429 oznacza zwolnienie tempa odczytów. Timeout na samym POST to moment, żeby zajrzeć do panelu, a nie żeby wysłać zlecenie drugi raz.

Zamiast pętli możesz użyć webhooka. Wtedy odbiornik musi sprawdzić podpis z nagłówka x-kadraris-signature i odrzucić powtórzone powiadomienia. Sam fakt, że ktoś zna adres odbiornika, niczego nie dowodzi.

Czego nie sprawdziłem

Kształt zapytania i odczyt zakończonego zadania testowałem na lokalnej instancji API z atrapami modeli. Nie był to płatny test jakości filmu ani przejście scenariusza na zalogowanym koncie n8n czy Make. Import scenariusza i poświadczenia dopasujesz do swojej wersji narzędzia.

Prostszą drogę przez agenta w edytorze (Claude Code, Codex, Cursor) opisuje strona o agentach AI, a pełny opis zlecania zadań przez REST jest w dokumentacji generowania.

Pytania

Scenariusz padł po POST. Mam uruchomić go od nowa?

Nie od początku. Sprawdź w magazynie, czy jest zapisane id, i wznów od etapu odczytu. Ponowne uruchomienie całości wyśle kolejne zlecenie i drugą opłatę.

Czy da się dopiąć automatyczną publikację na TikToku albo Instagramie?

Da się, ale to osobne połączenie z daną platformą i osobna decyzja. Ten przepis kończy pracę na zapisanym pliku, który ktoś ogląda przed wrzuceniem.

Muszę konfigurować MCP, żeby to działało?

Nie. Do REST wystarczy moduł HTTP. MCP ma sens, gdy agent ma sam wybierać model i wyceniać zlecenie przed wysłaniem.

Ile wersji jednej rolki zamawiać naraz?

Tyle, ile zatwierdzisz w kosztorysie. Każda wersja to osobne zadanie z własną opłatą, więc na początek zamawiam jedną, oglądam ją i dopiero wtedy dokładam kolejne.