Inicio rápido de la API
La API pública de ANKK es una API RESTful que permite la gestión programática de sus operaciones de redes sociales multicanal utilizando una sola clave de API con alcance de marca (spk_...).
📌 Descripción general de los puntos finales
섹션 제목: “📌 Descripción general de los puntos finales”- URL base:
https://api.ankk.app - Swagger / Documentación interactiva:
https://api.ankk.app/v1/docs - Especificación JSON de OpenAPI:
https://api.ankk.app/v1/openapi.json
1. Verificar la salud del servicio
섹션 제목: “1. Verificar la salud del servicio”Los puntos finales de control de salud no requieren encabezados de autenticación.
curl https://api.ankk.app/v1/health{ "service": "api-public", "status": "ok"}2. Obtener y exportar su clave de API
섹션 제목: “2. Obtener y exportar su clave de API”En la aplicación web (https://app.ankk.app), navegue a Configuración de la marca → Claves de API para generar una clave y luego expórtela:
export ANKK_API_KEY='spk_live_xxxxxxxxxxxxxxxx'3. Recuperar marca y conexiones de SNS
섹션 제목: “3. Recuperar marca y conexiones de SNS”Verifique el estado de su marca y liste las cuentas de SNS conectadas para obtener los connection_id de destino.
cURL
섹션 제목: “cURL”# 1. Inspect brand detailscurl https://api.ankk.app/v1/brand \ -H "Authorization: Bearer $ANKK_API_KEY"
# 2. List connected SNS accountscurl https://api.ankk.app/v1/brand/connections \ -H "Authorization: Bearer $ANKK_API_KEY"TypeScript / JavaScript
섹션 제목: “TypeScript / JavaScript”const API_KEY = process.env.ANKK_API_KEY!;const BASE_URL = 'https://api.ankk.app/v1';
const res = await fetch(`${BASE_URL}/brand/connections`, { headers: { 'Authorization': `Bearer ${API_KEY}`, },});const { items: connections } = await res.json();console.log('Connected accounts:', connections);const targetConnectionId = connections[0]?.id;Python
섹션 제목: “Python”import osimport requests
API_KEY = os.environ['ANKK_API_KEY']BASE_URL = 'https://api.ankk.app/v1'
headers = {'Authorization': f'Bearer {API_KEY}'}
response = requests.get(f'{BASE_URL}/brand/connections', headers=headers)connections = response.json().get('items', [])print(f'Connected accounts: {connections}')target_connection_id = connections[0]['id']4. Publique su primer contenido
섹션 제목: “4. Publique su primer contenido”Envíe una solicitud de publicación con una idempotency_key generada por el cliente para evitar ejecuciones duplicadas.
cURL
섹션 제목: “cURL”curl -X POST "https://api.ankk.app/v1/brand/contents" \ -H "Authorization: Bearer $ANKK_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "connection_id": "conn_01jm8x9k2example", "idempotency_key": "my-first-post-001", "text": "Hello World from ANKK Public API! 🚀" }'TypeScript / JavaScript
섹션 제목: “TypeScript / JavaScript”const publishRes = await fetch(`${BASE_URL}/brand/contents`, { method: 'POST', headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ connection_id: targetConnectionId, idempotency_key: `post-${Date.now()}`, text: 'Hello World from TypeScript! 🚀', }),});
const result = await publishRes.json();console.log('Publish accepted (HTTP 202):', result);Python
섹션 제목: “Python”import time
payload = { 'connection_id': target_connection_id, 'idempotency_key': f'post-{int(time.time())}', 'text': 'Hello World from Python! 🚀',}
publish_res = requests.post( f'{BASE_URL}/brand/contents', headers={**headers, 'Content-Type': 'application/json'}, json=payload,)print('Publish outcome:', publish_res.json())5. Verificar el estado de la publicación
섹션 제목: “5. Verificar el estado de la publicación”Una solicitud exitosa devuelve HTTP 202 Accepted y un content_id. Verifique el estado de entrega a través de:
curl https://api.ankk.app/v1/brand/contents/<content_id> \ -H "Authorization: Bearer $ANKK_API_KEY"