# Documentação da API Taisly - **OpenAPI Version:** `3.1.0` - **API Version:** `1.0.0` # Documentação da API Taisly A API Taisly permite automatizar a publicação e redistribuição de vídeos em múltiplas redes sociais usando autenticação por chave API simples. ## Funcionalidades - Carregar e publicar vídeos em várias plataformas simultaneamente - Configurar redistribuição automática de uma plataforma para outras - Agendar publicações para mais tarde - Gerir contas de redes sociais conectadas - Controlar histórico e estado das publicações ## Requisitos - **Plano**: STARTER, INFLUENCER ou PRO (chaves API não disponíveis no plano FREE) - **Chave API**: Gere a partir do seu painel em - **HTTPS**: Todos os pedidos API devem usar HTTPS ## Limites de Pedidos | Plano | Pedidos por Hora | | ---------- | ---------------- | | STARTER | 50 | | INFLUENCER | 200 | | PRO | 1000 | Quando exceder o limite, receberá um erro 429 com um campo `retryAfter` indicando quantos segundos deve esperar. ## Melhores Práticas de Segurança 1. Nunca faça commit de chaves API para controle de versão 2. Armazene chaves em variáveis de ambiente 3. Regenere imediatamente se comprometidas 4. Use apenas HTTPS ## Requisitos de Vídeo - **Formato**: MP4, MOV ou outros formatos de vídeo comuns - **Tamanho**: Máximo 500MB - **Duração**: 3-90 segundos - **Orientação**: Vertical (9:16) ## Exemplo de Início Rápido ```bash # 1. Obtenha as suas plataformas conectadas curl -X GET https://app.taisly.com/api/private/platform/platforms \ -H "Authorization: Bearer taisly_your_api_key_here" # 2. Carregue um vídeo 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=Veja o meu novo vídeo!" # 3. Verifique o histórico de publicações curl -X GET https://app.taisly.com/api/private/post/history \ -H "Authorization: Bearer taisly_your_api_key_here" ``` ## Exemplo em Python ```python import requests API_KEY = 'taisly_your_api_key_here' BASE_URL = 'https://app.taisly.com/api/private' headers = { 'Authorization': f'Bearer {API_KEY}' } # Obter plataformas response = requests.get(f'{BASE_URL}/platform/platforms', headers=headers) platforms = response.json()['data'] print(f"Plataformas conectadas: {len(platforms)}") # Carregar vídeo files = {'video': open('video.mp4', 'rb')} data = { 'platforms': str([platforms[0]['_id']]), 'description': 'Descrição do meu vídeo' } 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:** Servidor de produção ## Operations ### Obter Informações da Chave API - **Method:** `GET` - **Path:** `/user/api-key` - **Tags:** API Key Management Obter informações sobre a sua chave API atual. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 403 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Gerar Chave API - **Method:** `POST` - **Path:** `/user/api-key/generate` - **Tags:** API Key Management Gerar uma nova chave API ou regenerar se já existir uma. **IMPORTANTE**: - A chave API completa apenas é mostrada uma vez. Guarde-a de forma segura. - Se regenerar, a chave antiga será invalidada imediatamente. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Revogar Chave API - **Method:** `POST` - **Path:** `/user/api-key/revoke` - **Tags:** API Key Management Revogar imediatamente a sua chave API atual. Todos os pedidos usando esta chave falharão. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 403 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Obter Plataformas Conectadas - **Method:** `GET` - **Path:** `/platform/platforms` - **Tags:** Platforms Obter todas as contas de redes sociais conectadas à sua conta. #### 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 ### Criar Publicação - **Method:** `POST` - **Path:** `/post` - **Tags:** Posts Carregar um vídeo para uma ou mais plataformas conectadas. **Requisitos de vídeo:** - Formato: MP4, MOV ou outros formatos de vídeo comuns - Tamanho: Máximo 500MB - Duração: 3-90 segundos - Orientação: Vertical (9:16) **Agendamento:** - Passe `scheduled` como timestamp Unix em milissegundos para publicação agendada (omite este parâmetro se não quiser agendar) #### Request Body ##### Content-Type: multipart/form-data - **`platforms` (required)** `array` — Lista de IDs **Items:** `string` - **`video` (required)** `string`, format: `binary` — - **`description`** `string` - **`previewTime`** `number` — Timestamp em segundos para pré-visualização do vídeo (padrão: 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 ### Obter Histórico de Publicações - **Method:** `GET` - **Path:** `/post/history` - **Tags:** Posts Obter o seu histórico de publicações com informações de estado para cada plataforma. **Paginação:** - Use o parâmetro `page` para paginação (10 itens por página) - Ou use `startTime` e `endTime` para filtragem por intervalo de datas (retorna todas as publicações correspondentes) **Valores de estado:** - PENDING: Publicação em fila - SUCCESS: Publicada com sucesso - FAILED: Publicação falhou (verifique o campo de mensagem para o código de erro) #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Cancelar Publicação Agendada - **Method:** `GET` - **Path:** `/post/cancelSchedule` - **Tags:** Posts Cancelar uma publicação agendada para mais tarde. A publicação será eliminada permanentemente. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Obter Configurações de Redistribuição - **Method:** `GET` - **Path:** `/reposts` - **Tags:** Reposts Obter todas as regras de redistribuição automática configuradas. Quando publica numa plataforma 'de', o conteúdo será automaticamente redistribuído para todas as plataformas 'para'. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Adicionar Configuração de Redistribuição - **Method:** `POST` - **Path:** `/repost/add` - **Tags:** Reposts Configurar redistribuição automática de uma plataforma para outras. **Como funciona:** - Quando publica conteúdo na plataforma 'de', será automaticamente redistribuído para todas as plataformas 'para' **Nota**: Dependências circulares são impedidas. Não pode criar A→B se B→A já existir. #### Request Body ##### Content-Type: application/json - **`from` (required)** `string` — ID da Plataforma - **`to` (required)** `array` — Lista de IDs de Plataformas **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 ### Eliminar Configuração de Redistribuição - **Method:** `POST` - **Path:** `/repost/delete` - **Tags:** Reposts Remover uma regra de redistribuição automática. Publicações futuras para a plataforma de origem já não serão automaticamente redistribuídas. #### 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 ### Pausar/Retomar Configuração de Redistribuição - **Method:** `POST` - **Path:** `/repost/pause` - **Tags:** Reposts Pausar ou retomar temporariamente a redistribuição automática. Útil quando quiser parar a redistribuição temporariamente sem eliminar a configuração. #### Request Body ##### Content-Type: application/json - **`id` (required)** `string` - **`isPaused` (required)** `boolean` **Example:** ```json { "id": "", "isPaused": true } ``` #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json