# Dokumentacja API Taisly - **OpenAPI Version:** `3.1.0` - **API Version:** `1.0.0` # Dokumentacja API Taisly API Taisly pozwala automatyzowac publikowanie i republikowanie filmow na wielu platformach spolecznosciowych przy uzyciu prostej autoryzacji kluczem API. ## Funkcje - Przesylanie i publikowanie filmow na wielu platformach jednoczesnie - Konfigurowanie automatycznego republikowania z jednej platformy na inne - Planowanie publikacji na pozniej - Zarzadzanie polaczonymi kontami w mediach spolecznosciowych - Sledzenie historii i statusu publikacji ## Wymagania - **Plan**: STARTER, INFLUENCER lub PRO (klucze API nie sa dostepne w planie FREE) - **Klucz API**: Wygeneruj go w panelu na - **HTTPS**: Wszystkie zadania API musza uzywac HTTPS ## Limity zadan | Plan | Zadania na godzine | | ---------- | ------------------ | | STARTER | 50 | | INFLUENCER | 200 | | PRO | 1000 | Po przekroczeniu limitu otrzymasz blad 429 z polem `retryAfter`, ktore wskazuje, ile sekund nalezy poczekac. ## Najlepsze praktyki bezpieczenstwa 1. Nigdy nie zapisuj kluczy API w systemie kontroli wersji 2. Przechowuj klucze w zmiennych srodowiskowych 3. Natychmiast wygeneruj nowy klucz, jesli zostal ujawniony 4. Uzywaj tylko HTTPS ## Wymagania dotyczace wideo - **Format**: MP4, MOV lub inne popularne formaty wideo - **Rozmiar**: Maksymalnie 500MB - **Czas trwania**: 3-90 sekund - **Orientacja**: Pionowa (9:16) ## Przyklad szybkiego startu ```bash # 1. Pobierz polaczone platformy curl -X GET https://app.taisly.com/api/private/platform/platforms \ -H "Authorization: Bearer taisly_your_api_key_here" # 2. Przeslij film curl -X POST https://app.taisly.com/api/private/post \ -H "Authorization: Bearer taisly_your_api_key_here" \ -F "video=@/path/to/video.mp4" \ -F "platforms=[\"platform_id_1\"]" \ -F "description=Zobacz moj nowy film!" # 3. Sprawdz historie publikacji curl -X GET https://app.taisly.com/api/private/post/history \ -H "Authorization: Bearer taisly_your_api_key_here" ``` ## Przyklad w Pythonie ```python import requests API_KEY = 'taisly_your_api_key_here' BASE_URL = 'https://app.taisly.com/api/private' headers = { 'Authorization': f'Bearer {API_KEY}' } # Pobierz platformy response = requests.get(f'{BASE_URL}/platform/platforms', headers=headers) platforms = response.json()['data'] print(f"Polaczone platformy: {len(platforms)}") # Przeslij film files = {'video': open('video.mp4', 'rb')} data = { 'platforms': str([platforms[0]['_id']]), 'description': 'Opis mojego filmu' } response = requests.post(f'{BASE_URL}/post', headers=headers, files=files, data=data) print(response.json()) ``` ## Servers - **URL:** `https://app.taisly.com/api/private` - **Description:** Serwer produkcyjny ## Operations ### Pobierz informacje o kluczu API - **Method:** `GET` - **Path:** `/user/api-key` - **Tags:** API Key Management Pobierz informacje o aktualnym kluczu API. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 403 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Wygeneruj klucz API - **Method:** `POST` - **Path:** `/user/api-key/generate` - **Tags:** API Key Management Wygeneruj nowy klucz API lub utworz go ponownie, jesli juz istnieje. **WAZNE**: - Pelny klucz API jest pokazywany tylko raz. Zapisz go bezpiecznie. - Jesli wygenerujesz go ponownie, stary klucz zostanie natychmiast uniewazniony. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Uniewaznij klucz API - **Method:** `POST` - **Path:** `/user/api-key/revoke` - **Tags:** API Key Management Natychmiast uniewaznij aktualny klucz API. Wszystkie zadania uzywajace tego klucza zakoncza sie niepowodzeniem. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 403 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Pobierz polaczone platformy - **Method:** `GET` - **Path:** `/platform/platforms` - **Tags:** Platforms Pobierz wszystkie konta w mediach spolecznosciowych polaczone z Twoim kontem. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 403 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Utworz publikacje - **Method:** `POST` - **Path:** `/post` - **Tags:** Posts Przeslij film na jedna lub wiecej polaczonych platform. **Wymagania dotyczace wideo:** - Format: MP4, MOV lub inne popularne formaty wideo - Rozmiar: maksymalnie 500MB - Czas trwania: 3-90 sekund - Orientacja: pionowa (9:16) **Planowanie:** - Przekaz `scheduled` jako znacznik czasu Unix w milisekundach dla zaplanowanej publikacji (pomin ten parametr, jesli nie chcesz planowac) #### Request Body ##### Content-Type: multipart/form-data - **`platforms` (required)** `array` — Lista identyfikatorow **Items:** `string` - **`video` (required)** `string`, format: `binary` — - **`description`** `string` - **`previewTime`** `number` — Znacznik czasu w sekundach do wygenerowania miniatury (domyslnie: 0) - **`scheduled`** `string` **Example:** ```json { "video": {}, "platforms": [ "" ], "description": "", "previewTime": 1, "scheduled": "" } ``` #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 403 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Pobierz historie publikacji - **Method:** `GET` - **Path:** `/post/history` - **Tags:** Posts Pobierz historie publikacji wraz z informacjami o statusie dla kazdej platformy. **Paginacja**: - Uzyj parametru `page` do paginacji (10 elementow na strone) - Lub uzyj `startTime` i `endTime`, aby filtrowac zakres dat (zwraca wszystkie pasujace publikacje) **Wartosci statusu**: - PENDING: publikacja jest w kolejce - SUCCESS: opublikowano pomyslnie - FAILED: publikacja nie powiodla sie (sprawdz pole message, aby poznac kod bledu) #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Anuluj zaplanowana publikacje - **Method:** `GET` - **Path:** `/post/cancelSchedule` - **Tags:** Posts Anuluj publikacje zaplanowana na pozniej. Publikacja zostanie trwale usunieta. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Pobierz konfiguracje republikowania - **Method:** `GET` - **Path:** `/reposts` - **Tags:** Reposts Pobierz wszystkie skonfigurowane reguly automatycznego republikowania. Gdy opublikujesz tresc na platformie 'from', zostanie ona automatycznie zrepublikowana na wszystkich platformach 'to'. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Dodaj konfiguracje republikowania - **Method:** `POST` - **Path:** `/repost/add` - **Tags:** Reposts Skonfiguruj automatyczne republikowanie z jednej platformy na inne. **Jak to dziala**: - Gdy opublikujesz tresc na platformie 'from', zostanie ona automatycznie zrepublikowana na wszystkich platformach 'to' **Uwaga**: Zaleznosci cykliczne sa blokowane. Nie mozesz utworzyc A->B, jesli B->A juz istnieje. #### Request Body ##### Content-Type: application/json - **`from` (required)** `string` — Identyfikator platformy - **`to` (required)** `array` — Lista identyfikatorow platform **Items:** `string` **Example:** ```json { "from": "", "to": [ "" ] } ``` #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 400 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Usun konfiguracje republikowania - **Method:** `POST` - **Path:** `/repost/delete` - **Tags:** Reposts Usun regule automatycznego republikowania. Przyszle publikacje z platformy zrodlowej nie beda juz automatycznie republikowane. #### Request Body ##### Content-Type: application/json - **`id` (required)** `string` **Example:** ```json { "id": "" } ``` #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Wstrzymaj/wznow konfiguracje republikowania - **Method:** `POST` - **Path:** `/repost/pause` - **Tags:** Reposts Tymczasowo wstrzymaj lub wznow automatyczne republikowanie. Przydatne, gdy chcesz czasowo zatrzymac republikowanie bez usuwania konfiguracji. #### Request Body ##### Content-Type: application/json - **`id` (required)** `string` - **`pause` (required)** `boolean` - **`isPaused`** `boolean` **Example:** ```json { "id": "", "pause": true, "isPaused": true } ``` #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json