spicyapiDokumentacja
Aplikacje i wtyczki
Treść główna

n8n

Używaj modeli obrazu, wideo, dźwięku i czatu SpicyAPI w przepływach n8n. Zainstaluj węzeł społeczności, zaimportuj szablony HTTP Request albo skieruj poświadczenie OpenAI w n8n na SpicyAPI dla węzłów AI Agent.

n8n to narzędzie do automatyzacji przepływów pracy. SpicyAPI daje mu modele obrazu, wideo, dźwięku i czatu za jednym API i jednym przedpłaconym saldem. Są trzy sposoby ich podłączenia i można je mieszać w jednym przepływie:

Chcesz…UżyjDziała na
Generować obrazy, wideo i dźwięk gotowym węzłemWęzła społeczności SpicyAPISelf-hosted n8n
Generować media na n8n Cloud albo bez instalowania czegokolwiekSzablonów HTTP RequestSelf-hosted n8n i n8n Cloud
Używać modeli czatu w AI Agent, Basic LLM Chain i innych węzłach AIWbudowanego poświadczenia OpenAI z nowym Base URLSelf-hosted n8n i n8n Cloud

Wszystkie trzy korzystają z tego samego konta, klucza, modeli i cen. Przy generowaniu multimediów węzeł i szablony HTTP Request sprawdzają cenę przed wysłaniem żądania. Ponowne wysłanie tego samego przyjętego żądania multimedialnego z oryginalnym Idempotency-Key zwraca istniejące zadanie.

Na początek skorzystaj z przewodnika po obrazach NSFW w n8n: wybór modelu, edycja z referencją, pierwszy portret i przykładowe koszty. Poniższe kroki pozwalają połączyć workflow z Twoją instancją n8n.

W skrócie

  1. Utwórz klucz API w konsoli. Nadaj mu dzienny limit wydatków.
  2. Self-hosted: w n8n otwórz Settings > Community Nodes > Install, wpisz @spicyapi/n8n-nodes-spicyapi, a potem dodaj poświadczenie SpicyAPI (spicyapi.ai) API.
  3. n8n Cloud: zaimportuj szablon z folderu przykładów węzła i nadaj jego węzłom HTTP Request poświadczenie Bearer Auth.
  4. Czat w węzłach AI: utwórz poświadczenie OpenAI z Base URL https://api.spicyapi.ai/v1 i swoim kluczem SpicyAPI.

Zanim zaczniesz

  • Klucz API. Utworzysz go w konsoli; zaczyna się od sk-spicy-. Jeśli nie masz jeszcze konta, zobacz Przygotuj konto.
  • Saldo. Przed pierwszym generowaniem dodaj środki w sekcji Billing konsoli. Workflow n8n, Studio i API korzystają z tego samego salda konta. Zobacz Rozliczenia, aby poznać sposób rozliczania opłat.
  • Jeden klucz na automatyzację. Przepływy mogą działać znacznie częściej, niż człowiek klika. Utwórz osobny klucz dla n8n i ustaw na nim dzienny albo miesięczny limit wydatków, aby błąd w pętli miał pułap. Zobacz Uwierzytelnianie.
  • n8n ma dostęp do api.spicyapi.ai. Wywołania wykonuje serwer n8n, a nie twoja przeglądarka.

Opcja 1: węzeł społeczności SpicyAPI

Węzeł ma otwarty kod (MIT) na github.com/spicyapi-ai/n8n-nodes-spicyapi i jest opublikowany w npm jako @spicyapi/n8n-nodes-spicyapi. Nie ma zależności uruchomieniowych i łączy się wyłącznie z api.spicyapi.ai.

Tylko self-hosted n8n

n8n Cloud może instalować tylko węzły społeczności zweryfikowane przez n8n, a ten nie jest zweryfikowany. Na n8n Cloud użyj szablonów HTTP Request opisanych niżej. Wywołują to samo API.

Inne pakiety npm mają podobne nazwy, ale należą do niepowiązanych usług. Ten to pakiet o nazwie @spicyapi/n8n-nodes-spicyapi, a jego poświadczenie nazywa się SpicyAPI (spicyapi.ai) API.

Instalacja

Zainstaluj pakiet

W n8n otwórz Settings > Community Nodes, wybierz Install, wpisz @spicyapi/n8n-nodes-spicyapi, zaznacz pole potwierdzające instalację niezweryfikowanego kodu i zatwierdź. Musisz być właścicielem instancji albo administratorem.

W trybie kolejki albo jeśli zarządzasz węzłami ręcznie, uruchom to w folderze danych n8n i zrestartuj n8n:

cd ~/.n8n/nodes
npm install @spicyapi/n8n-nodes-spicyapi

Opcje obsługiwane przez twoją konfigurację opisuje przewodnik po węzłach społeczności n8n.

Dodaj poświadczenie

Utwórz poświadczenie SpicyAPI (spicyapi.ai) API:

PoleWartość
API KeyTwój klucz, zaczynający się od sk-spicy-
Base URLZostaw https://api.spicyapi.ai bez zmian

Zapisanie poświadczenia sprawdza klucz na podstawie salda twojego konta.

Dodaj węzeł do przepływu

Wyszukaj SpicyAPI w panelu węzłów, wybierz zasób i operację, a potem poświadczenie.

Operacje

ZasóbOperacjaCo robi
ImageGenerateTekst na obraz, edycja obrazu, powiększanie, usuwanie tła i inne modele obrazu
VideoGenerateTekst na wideo, obraz na wideo i inne modele wideo
AudioGenerateZamiana tekstu na mowę, muzyka, transkrypcja i inne modele dźwięku
TaskGetOdczytuje zadanie po identyfikatorze, opcjonalnie czeka na nie i pobiera jego pliki
FileUploadPrzesyła plik binarny i zwraca URI spicy:// do użycia jako dane wejściowe modelu
ModelGet ManyKatalog modeli z cenami, filtrowany według modalności i słowa kluczowego
ModelGetJeden model ze schematem wejścia i przykładami
ModelGet QuoteDokładna cena żądania, bez jego uruchamiania
AccountGet BalanceSaldo dostępne, zablokowane i łączne w dolarach amerykańskich
ChatMessage a ModelJedno uzupełnienie czatu z modelu tekstowego

Generowanie obrazów, wideo i dźwięku

Trzy operacje Generate mają te same pola:

  1. Model. Wybierz z listy, która pokazuje modele dla wybranego zasobu wraz z ceną wyjściową, albo wpisz identyfikator modelu ręcznie. Każdy model i jego parametry są wymienione na spicyapi.ai/models.
  2. Prompt. Główne wejście tekstowe modelu. W modelach mowy to tekst do wypowiedzenia. Zostaw puste dla modeli, które nie mają promptu, takich jak powiększacze.
  3. Media Inputs. Obrazy, wideo lub dźwięk, które model czyta. Wybierz pole (lista pokazuje pliki wejściowe wybranego modelu), a potem użyj pola binarnego z poprzedniego węzła albo adresu URL. Pliki binarne są przesyłane do SpicyAPI automatycznie. Dodaj kilka wejść dla tego samego pola, aby wypełnić pola listowe, takie jak obrazy referencyjne.
  4. Model Parameters. Formularz wygenerowany ze schematu wybranego modelu: proporcje obrazu, rozdzielczość, czas trwania, seed i tak dalej. Pola, które zostawisz puste, nie są wysyłane, więc model użyje własnej wartości domyślnej.
  5. Additional Parameters (JSON). Wszelkie inne pola wejściowe jako obiekt JSON. Zastępują pola powyżej.

Wynik zawiera rekord zadania (taskId, state, cost, settled, output). Przy włączonym Download Output, co jest wartością domyślną, pliki są też dołączane jako dane binarne w data, data_1 i tak dalej. Linki w output.assets[].url wygasają po około 20 minutach; kopie binarne nie.

Duże wideo są trzymane w pamięci, jeśli n8n nie przechowuje danych binarnych na dysku. Na self-hosted n8n ustaw N8N_DEFAULT_BINARY_DATA_MODE=filesystem, gdy pracujesz z wideo.

Kontrola kosztów i ponowienia

  • Każdy element jest najpierw wyceniany. Węzeł prosi o wycenę. Jeśli wycena przekracza Max Cost per Item (USD), domyślnie $2, zatrzymuje się z błędem, zanim cokolwiek zostanie utworzone, i nic nie jest pobierane. Ustaw limit na 0, aby go usunąć.
  • Zadanie jest tworzone z wycenioną ceną. Jeśli cena zmieni się między wyceną a wysłaniem, węzeł wycenia ponownie, sprawdza limit jeszcze raz i wysyła ponownie.
  • Ponowienia nie pobierają opłaty dwa razy. Zobacz Limity kosztów i ponowienia.

Długo trwające zadania

Opcje i to, kiedy której użyć, opisuje sekcja Długo trwające zadania wideo.

Opcja 2: szablony HTTP Request

Dwa przepływy do zaimportowania używają wyłącznie wbudowanych węzłów n8n, więc działają na self-hosted n8n i na n8n Cloud, bez węzła społeczności. Znajdują się w folderze przykładów w repozytorium węzła.

PlikCo robi
http-request-image.jsonPobiera wycenę, zatrzymuje się, jeśli przekracza limit ceny, tworzy zadanie, odpytuje do zakończenia i pobiera obraz jako plik binarny
http-request-chat.jsonJedno uzupełnienie czatu przez endpoint zgodny z OpenAI

Zaimportuj przepływ

Pobierz plik .json. W n8n wybierz Workflow menu > Import from File.

Utwórz poświadczenie Bearer Auth

Utwórz poświadczenie Bearer Auth, wklej swój klucz SpicyAPI jako token i wybierz je w każdym węźle HTTP Request, który wywołuje api.spicyapi.ai. Szablon obrazu ma ich cztery.

Edytuj ustawienia i uruchom

Otwórz węzeł Settings. W szablonie obrazu możesz zmienić model, prompt, proporcje obrazu i maksymalną cenę w dolarach amerykańskich (maxCostUsd). Zastąp model identyfikatorem z katalogu modeli, a potem uruchom przepływ.

Jak zbudowany jest szablon obrazu

Te same kroki działają dla każdego modelu medialnego, więc możesz skopiować ten wzorzec do własnego przepływu.

KrokWęzełŻądanie
1HTTP RequestPOST https://api.spicyapi.ai/api/v1/jobs/quote z model i input zwraca quoteId i estimatedCost
2IfZatrzymuje się z błędem, gdy wycena przekracza twój limit. Nic jeszcze nie zostało pobrane
3HTTP RequestPOST https://api.spicyapi.ai/api/v1/jobs/createTask z quoteId, expectedCost i nagłówkiem Idempotency-Key. Szablon dodaje ?wait=50, aby szybkie modele obrazu odpowiadały w tym samym żądaniu
4If, Wait, HTTP RequestJeśli zadanie nadal ma stan queued albo running, poczekaj 5 sekund i wywołaj GET https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=…, a potem sprawdź ponownie
5HTTP RequestPobiera output.assets[0].url jako plik

Kształty żądań i odpowiedzi opisują Zadania asynchroniczne, Wyceny i zgodność protokołów i Media. Pliki, które model czyta, takie jak obraz początkowy, mogą być publicznym adresem URL albo przesłanym plikiem spicy://.

Opcja 3: modele czatu w AI Agent i innych węzłach AI

Endpoint czatu SpicyAPI jest zgodny z OpenAI, więc mogą go używać własne węzły OpenAI w n8n. Nie potrzebujesz do tego węzła społeczności i działa to na n8n Cloud.

Utwórz poświadczenie OpenAI

W n8n utwórz nowe poświadczenie OpenAI. Wklej swój klucz SpicyAPI jako API Key i ustaw Base URL na:

https://api.spicyapi.ai/v1

Wybierz model czatu

Dodaj OpenAI Chat Model do swojego AI Agent albo Basic LLM Chain i wybierz poświadczenie. Wybierz model, którego identyfikator kończy się na /chat (na tej stronie zapisany jako MODEL_ID_FROM_CATALOG: skopiuj prawdziwy identyfikator z aktualnego katalogu (GET /api/v1/models)). Pełna lista jest pod adresem GET https://api.spicyapi.ai/v1/models?modality=text.

Warto wiedzieć:

  • Lista modeli zawiera modele obrazu i wideo. Przy niestandardowym Base URL n8n pokazuje wszystko, co zwraca /v1/models, a lista SpicyAPI obejmuje wszystkie jego modele. Wybierz taki, który kończy się na /chat, albo wpisz identyfikator w trybie wyrażenia. Modele obrazu i wideo nie są modelami czatu i w agencie zawiodą.
  • Use Responses API. Nowsze wersje węzła OpenAI Chat Model mogą wysyłać żądania do /v1/responses zamiast /v1/chat/completions. SpicyAPI obsługuje /v1/responses, ale nie previous_response_id. Jeśli żądanie agenta kończy się błędem przy włączonym Responses API, wyłącz Use Responses API w węźle.
  • Ustawienia próbkowania. Jeśli ustawisz opcję, której model nie deklaruje, taką jak temperature w modelu z rozumowaniem, SpicyAPI ją ignoruje zamiast zgłosić błąd i wymienia zignorowane nazwy w nagłówku odpowiedzi X-Spicy-Ignored-Params; wartość spoza zakresu modelu jest zmieniana na najbliższą dozwoloną i wymieniana w X-Spicy-Adjusted-Params. Inne niezadeklarowane pola nadal zwracają 400.
  • Narzędzia i wyjście JSON zależą od modelu. Sprawdź supported_parameters modelu w /v1/models.
  • Modele z rozumowaniem wliczają tokeny rozumowania do max_tokens. Przy bardzo małej wartości, na przykład 20, model z rozumowaniem może zużyć cały budżet na myślenie i nie zwrócić tekstu (upstream_failed: „the output budget was spent on reasoning”). Zwiększ max_tokens albo obniż reasoning_effort. Wartości reasoning_effort różnią się zależnie od modelu.
  • Streaming i koszt. Czat jest rozliczany według tokenów po wywołaniu. Szczegóły są na stronie Tekst i streaming, a przykłady żądań w Chat recipes.

Limity kosztów i ponowienia

Limity wydatków

  • Użyj osobnego klucza dla n8n z dziennym albo miesięcznym limitem wydatków w konsoli oraz listą dozwolonych modeli, jeśli przepływ potrzebuje tylko kilku. Gdy limit zostanie osiągnięty, wywołanie kończy się błędem 40202 i nic za nie nie jest pobierane.
  • Dla modeli medialnych najpierw wycenia się żądanie. Węzeł robi to za ciebie; szablony robią to węzłami Get Quote i If. Wycena to dokładna cena tego żądania, łącznie z dodatkami, takimi jak opłaty za każdy obraz referencyjny, więc kontrola ceny oparta na wycenie jest wiarygodna, a oparta na tabeli katalogu nie.
  • Zwykłe niepowodzenia i wygasłe zadania zwalniają całą rezerwację. Niektóre odmowy treści są płatne wyłącznie wtedy, gdy strona modelu mówi o tym wprost. Ostateczną opłatę sprawdzisz w settled i cost; zobacz Rozliczenia.

Dlaczego ponowienie nie pobiera opłaty dwa razy

Każde wywołanie tworzące zadanie niesie Idempotency-Key. Jeśli ten sam klucz dotrze ponownie z tym samym żądaniem, SpicyAPI zwraca zadanie, które już utworzyło, zamiast tworzyć drugie, więc nie ma drugiej blokady ani opłaty. Ma to znaczenie w n8n, bo żądanie może zostać wysłane dwa razy bez twojego udziału: przez Retry On Fail na węźle albo przez przekroczenie czasu, gdy pierwsze żądanie faktycznie przeszło.

  • Węzeł społeczności buduje klucz z wykonania, węzła, elementu i jego wejścia. Ponowienie węzła używa tego samego klucza. Nowe wykonanie, zmienione wejście albo kolejny przebieg pętli to nowa praca i dostaje nowy klucz.
  • Szablony budują go z identyfikatora wykonania i indeksu elementu, na przykład n8n-<execution id>-<item index>. Jeśli kopiujesz ten wzorzec do pętli, dodaj do klucza licznik pętli, bo inaczej każdy przebieg zwróci zadanie z pierwszego przebiegu.
  • Nie używaj wartości losowej, która zmienia się przy każdej próbie, takiej jak $now: sprawia, że każde ponowienie wygląda jak nowa praca.

Więcej w Idempotentność.

Długo trwające zadania wideo

Modele obrazu i dźwięku zwykle kończą w jednym żądaniu. Wideo może trwać minuty. Masz trzy sposoby, by sobie z tym poradzić, od najprostszego do najlżejszego dla n8n:

PodejścieJakKompromis
Czekaj wewnątrz węzła (domyślnie)Węzeł społeczności odpytuje ze wzrastającym opóźnieniem, aż zadanie się zakończy albo minie Max Wait TimeProste, ale wykonanie pozostaje otwarte, gdy wideo jest renderowane
Wyślij, potem poczekaj i sprawdźWyłącz Wait for Completion, dodaj węzeł Wait, potem Task > Get. Szablony robią to samo węzłami Wait, Get Task i If w pętliJedno miejsce wykonania jest zajęte tylko na krótkie wywołania
CallbackUstaw Callback URL na {{ $execution.resumeUrl }} i dodaj po nim węzeł Wait ustawiony na wznowienie po wywołaniu webhookan8n musi być osiągalne przez publiczny HTTPS. Gdy wywołanie nadejdzie, odczytaj zadanie przez Task > Get i nie ufaj treści callbacku

Jeśli węzeł przestanie czekać, zadanie nadal działa w SpicyAPI i jeśli się powiedzie, jest płatne. Pobierz je później przez Task > Get; nie wysyłaj go ponownie. Znajdziesz je też w sekcji Logs w konsoli.

Wyniki są przechowywane przez ograniczony czas, a linki do pobrania działają około 20 minut. Jeśli potrzebujesz ich na dłużej, zapisz pliki w przepływie, na przykład w magazynie w chmurze. Zobacz Przechowywanie i usuwanie danych.

Rozwiązywanie problemów

Co widziszCo zrobić
Test poświadczenia kończy się niepowodzeniem albo 401Skopiuj klucz ponownie z konsoli. Unieważniony klucz przestaje działać natychmiast. W poświadczeniu OpenAI sprawdź, czy Base URL kończy się na /v1.
SpicyAPI nie pojawia się w panelu węzłówPrawdopodobnie jesteś na n8n Cloud albo n8n nie zostało zrestartowane po ręcznej instalacji. Cloud nie może instalować niezweryfikowanych węzłów; użyj szablonów.
W Community Nodes brakuje przycisku InstallPakiety społeczności są wyłączone albo nie jesteś właścicielem ani administratorem. Zapytaj osobę, która prowadzi instancję, albo zainstaluj ręcznie w ~/.n8n/nodes.
40201Za małe saldo. Doładuj konto w konsoli i uruchom ponownie. Ponowienie z tym samym kluczem jest bezpieczne.
40202Klucz osiągnął dzienny, miesięczny albo całkowity limit wydatków. Zwiększ limit albo poczekaj, aż się odnowi.
40310Adres e-mail twojego konta nie jest zweryfikowany. Otwórz link z wiadomości rejestracyjnej.
40004Żadne wdrożenie nie obsługuje tej kombinacji opcji. Zmień opcję wskazaną w komunikacie.
40901Wycena już nie pasuje, zwykle dlatego, że wygasła (wyceny ważne są 5 minut). Wyceń ponownie i wyślij ponownie z tym samym Idempotency-Key.
Błąd, że cena przekracza twój limitWycena jest wyższa niż Max Cost per Item albo maxCostUsd. Zwiększ limit albo wybierz tańsze opcje. Nic nie zostało pobrane.
Agent zawodzi na modeluMożliwe, że wybrano model, który nie jest modelem czatu. Użyj identyfikatora kończącego się na /chat. Spróbuj też wyłączyć Use Responses API.
Model z rozumowaniem zwraca pustą odpowiedźZwiększ max_tokens albo obniż reasoning_effort.
Link do pobrania w wyniku później zwraca błądLinki wygasają po około 20 minutach. Użyj Task > Get, aby dostać nowy link, albo zachowaj kopię binarną.
Memory, heap albo restarty przy obsłudze wideoDane binarne są domyślnie trzymane w pamięci. Ustaw N8N_DEFAULT_BINARY_DATA_MODE=filesystem.
Callback nigdy nie wznawia przepływuAdres musi być publicznym HTTPS na porcie 443 albo 80, a nie localhost. Sprawdź, czy adres wznowienia wykonania jest tym, który twoje n8n pokazuje publicznie.

Błędy ze SpicyAPI kończą się request_id albo identyfikatorem zadania. Podaj go wsparciu, a żądanie da się dokładnie odnaleźć. Kody błędów wyjaśnia strona Błędy, a szerszą listę kontrolną znajdziesz w Rozwiązywanie problemów i odzyskiwanie.

Korzystanie z modeli podlega regulaminowi SpicyAPI oraz warunkom edycji n8n, której używasz.

Na tej stronie