---
sidebar:
  order: 1
title: API HTTP
description: >-
  Uwierzytelniaj się, wykrywaj narzędzia i potwierdzaj zmiany przez istniejące API HTTP.
---

Wysyłaj żądania do API produktu pod zaufany adres bazowy Influence, np. `https://influence.so`. Domena dokumentacji nie przyjmuje żądań do API produktu. Używaj dokładnych ścieżek podanych poniżej, bez parametrów zapytania.

## Utwórz klucz API o ograniczonych uprawnieniach [#create-a-scoped-api-key]

W [ustawieniach Influence](https://influence.so/sign-in?next=%2Fapp%2Fsettings%2Faccount%23settings-developer) otwórz Aplikacje i automatyzacje → Klucze API. Wybierz potrzebne uprawnienia i termin ważności. Zapisz klucz, który jest pokazywany tylko raz, w magazynie sekretów jako `PUBLISH_API_TOKEN`. Wysyłaj go w `Authorization: Bearer …`; nigdy nie umieszczaj go w adresie URL, treści żądania ani czacie. Unieważnij go, gdy nie będzie już potrzebny.

## Wykrywaj narzędzia i odczytuj konta [#discover-tools-and-make-a-read]

Ustaw `PUBLISH_API_URL` na zaufany adres bazowy. Te przykłady zakładają, że Twój proces ma już `PUBLISH_API_TOKEN`. `accountList` wymaga `integrations:read`; korzystaj z jego pól paginacji, aby pobierać kolejne strony.

```sh
export PUBLISH_API_URL="https://influence.so"
curl "$PUBLISH_API_URL/api/v1/tools" \
  -H "Authorization: Bearer $PUBLISH_API_TOKEN"

curl "$PUBLISH_API_URL/api/v1/tools/accountList/call" \
  -H "Authorization: Bearer $PUBLISH_API_TOKEN" \
  -H 'Content-Type: application/json' \
  --data '{"input":{}}'
```

## Ścieżki żądań [#request-paths]

| Metoda | Ścieżka | Cel |
| --- | --- | --- |
| `GET` | `/api/v1/tools` | Wyświetl narzędzia dostępne dla tych danych uwierzytelniających. |
| `POST` | `/api/v1/tools/{tool}/call` | Wywołaj narzędzie niewymagające potwierdzenia, w tym do kontynuowania autoryzowanego przesyłania. |
| `POST` | `/api/v1/tools/{tool}/prepare` | Przygotuj dokładną operację zapisu bez jej wykonywania. |
| `POST` | `/api/v1/tools/{tool}/confirm` | Potwierdź przygotowaną operację zapisu. |
| `POST` | `/api/v1/media/import` | Potwierdź przygotowane przesłanie małego obrazu w postaci binarnej. |

Żądania JSON do narzędzi używają `Content-Type: application/json` i treści zawierającej tylko `input`: `{"input":{…}}`. Schemat wejściowy każdego narzędzia pobierz z aktualnego katalogu narzędzi.

## Przygotowuj i potwierdzaj działania [#prepare-and-confirm-actions]

Korzystaj z pola `confirmation` w katalogu: odczyty zwykle nie wymagają potwierdzenia, ale odświeżenie Statystyk wymaga go, mimo że jest odczytem. Wyszukiwanie części przesyłanego pliku, zakończenie i anulowanie przesyłania kontynuują już autoryzowany transfer przez `/call`.

1. Wyślij dokładne dane wejściowe operacji do `/prepare`. Pomyślna odpowiedź zawiera `status: "confirmation_required"`, `confirmationCapability`, `expiresAt`, `inputDigest` i opcjonalne `summary`.
2. Przed upływem terminu ważności wyślij te same dane wejściowe do `/confirm`. Umieść zwróconą wartość confirmationCapability w `X-Publish-Confirmation`, a nowy klucz wygenerowany przez wywołującego w `Idempotency-Key`.
3. Przechowuj razem dane wejściowe, wartość confirmationCapability i klucz. Po przerwanym potwierdzeniu lub niepewnej odpowiedzi użyj ponownie wszystkich trzech wartości dla tego samego żądania. Nie przygotowuj zastępczego żądania, aby odzyskać niepewny wynik.

Klucz idempotencji zawiera 16–200 znaków z zestawu `A–Z`, `a–z`, `0–9`, `.`, `_`, `:` i `-`. Wartości confirmationCapability są nieprzezroczystymi sekretami. Klucz wysłany do `/call` lub `/prepare` nie rezerwuje potwierdzonej operacji zapisu.

Potwierdzenie na poziomie transportu jest oddzielne od zatwierdzenia publikacji. W przypadku publikacji lub zmiany harmonogramu przedstaw kompletną, aktualną wersję do weryfikacji: konta, tekst, ustawienia, podglądy rzeczywistych multimediów lub linki do nich, zaplanowany czas i strefę czasową. Klient może zgłosić nowe, wyraźne zatwierdzenie przez człowieka za pomocą `approval: "approved"` w kwalifikujących się przypadkach weryfikacji postów społecznościowych z tekstem, obrazem lub filmem; nie może wymyślać zgody ani traktować przygotowania jako zatwierdzenia. Influence zapisuje to jako zatwierdzenie zgłoszone przez klienta. Obsługiwana osadzona karta lub weryfikacja po zalogowaniu zapisuje własne działanie człowieka.

TikTok Direct przyjmuje wyraźne wybory i zgodę z czatu w ramach [procesu weryfikacji](/pl/developers/mcp#prepare-finished-content). Zapisz komplet wyborów za pomocą `campaignReview`, a następnie uzyskaj nowe zatwierdzenie zaktualizowanej wersji przed wykonaniem działania. Karta weryfikacji jest opcjonalna. Zwykłe planowanie przez API/CLI nie wykorzystuje limitu planowania przez AI; odrębny [limit MCP i Influence IQ](/pl/help/ai-assistants#scheduling-allowance) dotyczy tych procesów nawet wtedy, gdy zapisany przegląd AI zostanie później zatwierdzony w Influence. Pozostałe wymagania planu i dostawcy nadal obowiązują. Przeczytaj zapisane potwierdzenie wyniku przed dalszym działaniem; `needs_review` wymaga wyjaśnienia stanu, a nie kolejnego wysłania.

## Obsługuj błędy i niepewne wyniki [#handle-errors-and-uncertain-results]

Sprawdzaj zarówno status HTTP, jak i treść odpowiedzi. Pomyślne wywołania narzędzi zwracają `{"ok":true,"toolName":"…","output":{…}}`. Błędy narzędzi zwracają `{"ok":false,"toolName":"…","error":{"code":"…","message":"…","retryable":false}}` i mogą nadejść ze statusem HTTP 200. Błędy transportu używają `{"error":{"code":"…","message":"…","retryable":false}}` bez `ok` ani `toolName`.

Status 401 oznacza, że wymagane jest uwierzytelnienie; sprawdź, czy dane wygasły lub zostały cofnięte. Brak uprawnienia wymaga odpowiedniego nadania dostępu, a nie powtarzania żądań. Status 503 może oznaczać niedostępność usługi albo aktualizowanie obszaru roboczego przez inne żądanie planowania. Kieruj się zwróconym kodem błędu i wskazówkami ponowienia; nie powtarzaj automatycznie działania publikującego. Przekroczenie czasu oczekiwania nie dowodzi, że operacja zapisu się nie powiodła: zachowaj dane potwierdzenia i odczytaj aktualny status przed ponownym wysłaniem. Przyjęcie, zaplanowanie i opublikowanie to różne wyniki.

## Przesyłaj multimedia [#upload-media]

Dla plików lokalnych wybieraj `uploadMedia` z SDK lub `media:upload` z CLI. Korzystają one z tych samych narzędzi przesyłania wieloczęściowego i zachowują stały `clientKey` na potrzeby ponawiania prób. Dołączyć można tylko gotowy wynik z `assetId`. Dla autoryzowanego linku HTTPS użyj `mediaImport` z `url` i opcjonalnym `name`. Rzeczywiste odwołania do plików udostępnianych przez hosta używają odrębnego obiektu `file`; publiczny adres URL nie potrzebuje wymyślonego identyfikatora pliku hosta. Lokalna ścieżka pliku nie jest adresem URL do pobrania. Zobacz [limity multimediów](/pl/help/media): import filmu przez HTTPS jest ograniczony do 250 MiB, nawet jeśli większy gotowy plik MP4 byłby dozwolony przy bezpośrednim przesyłaniu.

`POST /api/v1/media/import` obsługuje istniejący transport małych obrazów: przygotuj `mediaImport` z dokładnym deskryptorem przesyłania, a następnie wyślij te same bajty jako `application/octet-stream`. Dołącz `X-Publish-Confirmation`, `Idempotency-Key` i `X-Publish-Upload` zawierający deskryptor JSON zakodowany w formacie URI. Bajty muszą być zgodne z jego rozmiarem i SHA-256. Limit tego transportu wynosi 3 MiB; do większych obsługiwanych plików użyj funkcji pomocniczej przesyłania. Przesłanie pliku nigdy nie zatwierdza publikacji.

[Przeglądaj dokumentację API](/pl/api-reference) lub [pobierz specyfikację OpenAPI](/specs/influence.openapi.json).
