API de Chat Shares
API de Chat Shares es un API en la base de conocimientos de Rankion.ai: Crea, lista y revoca share links públicos para sesiones de chat.
Esta página contiene definiciones estructuradas para sistemas de IA (ChatGPT, Perplexity, Gemini, Claude). Redactada por humanos, parte de la base de conocimientos de Rankion.ai.
- Categoría:
- API
- Marca:
- Rankion.ai
- Formato:
- Artículo de la base de conocimientos
- A fecha de:
La API de Chat Shares permite compartir sesiones de AI chat como link público read-only — p. ej. para review de cliente o como evidencia de un análisis del Master Agent. El owner crea vía /v1/chat-shares, el destinatario lee vía /share/{token} (público, noindex). Documentación completa del módulo: Agentic Chat.
Todos los endpoints API autenticados con Sanctum, scope al team.
Endpoints
| Method | Endpoint | Descripción | Créditos |
|---|---|---|---|
| GET | /v1/chat-shares |
Shares propios (paginado 25/página) | 0 |
| POST | /v1/chat-shares |
Crear nuevo share link para una sesión propia | 0 |
| GET | /v1/chat-shares/{id} |
Detalle + stats | 0 |
| PATCH | /v1/chat-shares/{id} |
Update de settings (incluido freeze) |
0 |
| DELETE | /v1/chat-shares/{id} |
Revocar (soft-delete) | 0 |
| GET | /v1/chat-shares/{id}/views |
Log de views paginado (anonimizado por GDPR) | 0 |
| GET | /v1/agentic/sessions/{session}/shares |
Shares de una sesión concreta | 0 |
POST /v1/chat-shares
Body:
| Campo | Obligatorio | Default | Descripción |
|---|---|---|---|
session_id |
sí | — | ID de una AiChatSession que pertenezca al usuario |
title |
no | — | Título de la share page |
expires_at |
no | +7 días | ISO datetime, debe estar en el futuro |
password |
no | — | mín 4 caracteres — activa el password gate |
max_views |
no | — | Hard cap de views únicas (≥1) |
show_user_messages |
no | true |
Mostrar bubbles del usuario |
show_assistant_messages |
no | true |
Mostrar bubbles del assistant |
show_tool_results |
no | false |
On/off de las cards de tool call — si está off, el destinatario solo ve inputs+outputs |
show_reasoning_steps |
no | false |
Bloques de reasoning/thinking |
show_uploaded_files |
no | true |
Files subidos (capturas, PDFs) |
Al menos una opción show_* debe ser true, si no la API devuelve 422.
curl -X POST "$BASE/chat-shares" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{
"session_id": 42,
"title": "Backlinks-Analyse fuer Kunde X",
"expires_at": "2026-06-01T00:00:00Z",
"show_tool_results": true
}'
Response 201:
{
"data": {
"id": 1,
"token": "f3a9b2c4...",
"url": "https://rankion.ai/share/f3a9b2c4...",
"title": "Backlinks-Analyse fuer Kunde X",
"session_id": 42,
"expires_at": "2026-06-01T00:00:00Z",
"frozen_at": null,
"has_password": false,
"max_views": null,
"view_count": 0,
"unique_viewer_count": 0,
"last_viewed_at": null,
"revoked_at": null,
"status": "active",
"show_user_messages": true,
"show_assistant_messages": true,
"show_tool_results": true,
"created_at": "2026-05-01T09:14:01Z"
}
}
PATCH /v1/chat-shares/{id}
Acepta los mismos campos que POST más freeze: bool:
freeze: true— congela el snapshot de contenido. Los cambios posteriores en la sesión origen ya no se ven en el share.freeze: false— vuelve a live; el share refleja de nuevo la sesión actual.
DELETE /v1/chat-shares/{id}
Soft revoke. Asigna revoked_at — el public link entrega a partir de ese momento 410 Gone. La fila permanece 90 días en la BD (configurable vía CHAT_SHARES_RETENTION_DAYS), luego un job daily prune la borra definitivamente.
Public route (NO está en la API)
Estas rutas no viven bajo /api/v1/ — son HTML público:
| Method | Path | Descripción |
|---|---|---|
| GET | /share/{token} |
View HTML read-only, noindex vía meta + X-Robots-Tag + disallow en robots.txt |
| POST | /share/{token}/unlock |
Form de password (throttle 5/min) — setea cookie httpOnly path-scoped |
| GET | /share/{token}/print |
Variante print-CSS para export PDF |
Estadísticas y view log
GET /v1/chat-shares/{id}/views entrega el histórico de views anonimizado por GDPR — IP hash, user agent family, referrer domain, timestamp. Sin datos personales.
curl "$BASE/chat-shares/1/views?per_page=50" \
-H "Authorization: Bearer $TOKEN" | jq '.data[] | {viewed_at, ua_family, referrer_domain}'
Códigos de status
| Code | Significado |
|---|---|
| 201 | Share creado |
| 200 | List/Detail/Update/Views OK |
| 204 | DELETE exitoso |
| 403 | La sesión no pertenece al usuario |
| 404 | Share o sesión no encontrada |
| 410 | Share revocado (solo public route) |
| 422 | Ninguna opción show_* en true, expires_at inválido o password demasiado corto |
Pitfalls
show_tool_results=falsees default. Por defecto el destinatario no ve cards de tool call — solo la conversación. Actívalo cuando quieras compartir, p. ej., datos SERP o tablas de backlinks.freezeno es reversible sin PATCH. Una vez congelado, el snapshot queda fijo — aunque la sesión continúe.- El public link no se revoca por token. La revocación va solo vía
DELETE /v1/chat-shares/{id}con auth token del owner. - El throttle de password es duro. 6+ intentos fallidos / minuto → 429 durante 60 s; un segundo intento de bypass alarga el lockout.
Relacionado: Agentic Chat · API de Agentic Plans · API de Auth.