# Documentación de la API de Taisly - **OpenAPI Version:** `3.1.0` - **API Version:** `1.0.0` # Documentación de la API de Taisly La API de Taisly te permite automatizar la publicación y republicación de vídeos en múltiples plataformas de redes sociales utilizando autenticación simple con clave API. ## Características - Subir y publicar vídeos en varias plataformas simultáneamente - Configurar republicación automática de una plataforma a otras - Programar publicaciones para más tarde - Gestionar cuentas de redes sociales conectadas - Seguimiento del historial y estado de publicaciones ## Requisitos - **Plan**: STARTER, INFLUENCER o PRO (claves API no disponibles en el plan FREE) - **Clave API**: Genera una desde tu panel en - **HTTPS**: Todas las solicitudes API deben usar HTTPS ## Límites de solicitudes | Plan | Solicitudes por hora | | ---------- | -------------------- | | STARTER | 50 | | INFLUENCER | 200 | | PRO | 1000 | Cuando exceedas el límite, recibirás un error 429 con un campo `retryAfter` indicando cuántos segundos esperar. ## Mejores prácticas de seguridad 1. Nunca cometas claves API en control de versiones 2. Almacena las claves en variables de entorno 3. Regenera inmediatamente si se comprometen 4. Usa solo HTTPS ## Requisitos de vídeo - **Formato**: MP4, MOV u otros formatos de vídeo comunes - **Tamaño**: Máximo 500MB - **Duración**: 3-90 segundos - **Orientación**: Vertical (9:16) ## Ejemplo de inicio rápido ```bash # 1. Obtén tus plataformas conectadas curl -X GET https://app.taisly.com/api/private/platform/platforms \ -H "Authorization: Bearer taisly_your_api_key_here" # 2. Sube un 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=¡Mira mi nuevo vídeo!" # 3. Consulta el historial de publicaciones curl -X GET https://app.taisly.com/api/private/post/history \ -H "Authorization: Bearer taisly_your_api_key_here" ``` ## Ejemplo en 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}' } # Obtener plataformas response = requests.get(f'{BASE_URL}/platform/platforms', headers=headers) platforms = response.json()['data'] print(f"Plataformas conectadas: {len(platforms)}") # Subir vídeo files = {'video': open('video.mp4', 'rb')} data = { 'platforms': str([platforms[0]['_id']]), 'description': 'Descripción de mi 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 producción ## Operations ### Obtener información de clave API - **Method:** `GET` - **Path:** `/user/api-key` - **Tags:** API Key Management Recuperar información sobre tu clave API actual. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 403 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Generar clave API - **Method:** `POST` - **Path:** `/user/api-key/generate` - **Tags:** API Key Management Generar una nueva clave API o regenerar si ya existe una. **IMPORTANTE**: - La clave API completa solo se muestra una vez. Guárdala de forma segura. - Si la regeneras, la clave antigua se invalidará inmediatamente. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Revocar clave API - **Method:** `POST` - **Path:** `/user/api-key/revoke` - **Tags:** API Key Management Revocar inmediatamente tu clave API actual. Todas las solicitudes que usen esta clave fallarán. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 403 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Obtener plataformas conectadas - **Method:** `GET` - **Path:** `/platform/platforms` - **Tags:** Platforms Recuperar todas las cuentas de redes sociales conectadas a tu cuenta. #### 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 ### Crear una publicación - **Method:** `POST` - **Path:** `/post` - **Tags:** Posts Subir un vídeo a una o más plataformas conectadas. **Requisitos de vídeo:** - Formato: MP4, MOV u otros formatos de vídeo comunes - Tamaño: Máximo 500MB - Duración: 3-90 segundos - Orientación: Vertical (9:16) **Programación:** - Pasa `scheduled` como marca de tiempo Unix en milisegundos para publicación programada (omite este parámetro si no quieres programar) #### Request Body ##### Content-Type: multipart/form-data - **`platforms` (required)** `array` — Lista de IDs **Items:** `string` - **`video` (required)** `string`, format: `binary` — - **`description`** `string` - **`previewTime`** `number` — Marca de tiempo en segundos para vista previa del vídeo (predeterminado: 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 ### Obtener historial de publicaciones - **Method:** `GET` - **Path:** `/post/history` - **Tags:** Posts Recuperar tu historial de publicaciones con información de estado para cada plataforma. **Paginación:** - Usa el parámetro `page` para paginación (10 elementos por página) - O usa `startTime` y `endTime` para filtrar por rango de fechas (devuelve todas las publicaciones coincidentes) **Valores de estado:** - PENDING: La publicación está en cola - SUCCESS: Publicada exitosamente - FAILED: Publicación fallida (consulta el campo de mensaje para el código de error) #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Cancelar publicación programada - **Method:** `GET` - **Path:** `/post/cancelSchedule` - **Tags:** Posts Cancelar una publicación programada para más tarde. La publicación se eliminará permanentemente. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Obtener configuraciones de republicación - **Method:** `GET` - **Path:** `/reposts` - **Tags:** Reposts Recuperar todas las reglas de republicación automática configuradas. Cuando publicas en una plataforma 'desde', el contenido se republicará automáticamente a todas las plataformas 'hacia'. #### Responses ##### Status: 200 ###### Content-Type: application/json ##### Status: 401 ###### Content-Type: application/json ##### Status: 500 ###### Content-Type: application/json ### Agregar configuración de republicación - **Method:** `POST` - **Path:** `/repost/add` - **Tags:** Reposts Configurar republicación automática de una plataforma a otras. **Cómo funciona:** - Cuando publicas contenido en la plataforma 'desde', se republicará automáticamente a todas las plataformas 'hacia' **Nota**: Se previenen las dependencias circulares. No puedes crear A→B si B→A ya existe. #### Request Body ##### Content-Type: application/json - **`from` (required)** `string` — ID de 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 configuración de republicación - **Method:** `POST` - **Path:** `/repost/delete` - **Tags:** Reposts Eliminar una regla de republicación automática. Las publicaciones futuras a la plataforma de origen ya no se republicarán automáticamente. #### 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/Reanudar configuración de republicación - **Method:** `POST` - **Path:** `/repost/pause` - **Tags:** Reposts Pausar o reanudar temporalmente la republicación automática. Útil cuando quieres detener la republicación temporalmente sin eliminar la configuración. #### 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