Chat-Shares-API
Erstelle, liste, widerrufe oeffentliche Share-Links fuer Chat-Sessions.
Die Chat-Shares-API erlaubt es, AI-Chat-Sessions als oeffentlichen Read-only-Link zu teilen — z.B. fuer Kunden-Reviews oder als Beleg fuer eine Master-Agent-Analyse. Owner erstellt ueber /v1/chat-shares, der Empfaenger liest ueber /share/{token} (public, noindex). Volle Modul-Doku: Agentic Chat.
Alle API-Endpoints Sanctum-authentifiziert, team-scoped.
Endpoints
| Method | Endpoint | Beschreibung | Credits |
|---|---|---|---|
| GET | /v1/chat-shares |
Eigene Shares (paginiert 25/Seite) | 0 |
| POST | /v1/chat-shares |
Neuen Share-Link fuer eigene Session erzeugen | 0 |
| GET | /v1/chat-shares/{id} |
Detail + Stats | 0 |
| PATCH | /v1/chat-shares/{id} |
Settings updaten (inkl. freeze) |
0 |
| DELETE | /v1/chat-shares/{id} |
Widerrufen (Soft-Delete) | 0 |
| GET | /v1/chat-shares/{id}/views |
Paginierter View-Log (DSGVO-anonymisiert) | 0 |
| GET | /v1/agentic/sessions/{session}/shares |
Shares einer bestimmten Session | 0 |
POST /v1/chat-shares
Body:
| Feld | Pflicht | Default | Beschreibung |
|---|---|---|---|
session_id |
ja | — | ID einer AiChatSession, die dem User gehoert |
title |
nein | — | Titel fuer die Share-Page |
expires_at |
nein | +7 Tage | ISO-Datetime, muss in der Zukunft liegen |
password |
nein | — | min 4 Zeichen — aktiviert das Password-Gate |
max_views |
nein | — | Hard-Cap an einzigartigen Views (≥1) |
show_user_messages |
nein | true |
User-Bubbles anzeigen |
show_assistant_messages |
nein | true |
Assistant-Bubbles anzeigen |
show_tool_results |
nein | false |
Tool-Call-Karten ein/aus — Empfaenger sieht sonst nur Inputs+Outputs |
show_reasoning_steps |
nein | false |
Reasoning-/Thinking-Bloecke |
show_uploaded_files |
nein | true |
Hochgeladene Files (Screenshots, PDFs) |
Mindestens eine show_*-Option muss true sein, sonst liefert die API 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}
Akzeptiert dieselben Felder wie POST plus freeze: bool:
freeze: true— friert den Content-Snapshot ein. Spaetere Aenderungen an der Quell-Session sind im Share nicht mehr sichtbar.freeze: false— zurueck auf live; Share spiegelt erneut die aktuelle Session.
DELETE /v1/chat-shares/{id}
Soft-Revoke. Setzt revoked_at — der Public-Link liefert ab sofort 410 Gone. Die Row bleibt 90 Tage in der DB (configurable via CHAT_SHARES_RETENTION_DAYS), dann loescht ein Daily-Prune-Job sie endgueltig.
Public Route (NICHT in der API)
Diese Routes leben nicht unter /api/v1/ — sie sind oeffentliches HTML:
| Method | Pfad | Beschreibung |
|---|---|---|
| GET | /share/{token} |
Read-only HTML-View, noindex via Meta + X-Robots-Tag + robots.txt-Disallow |
| POST | /share/{token}/unlock |
Password-Form (Throttle 5/min) — setzt path-scoped httpOnly-Cookie |
| GET | /share/{token}/print |
Print-CSS-Variante fuer PDF-Export |
Statistik & View-Log
GET /v1/chat-shares/{id}/views liefert die DSGVO-anonymisierte View-Historie — IP-Hash, User-Agent-Family, Referrer-Domain, Timestamp. Keine personenbezogenen Daten.
curl "$BASE/chat-shares/1/views?per_page=50" \
-H "Authorization: Bearer $TOKEN" | jq '.data[] | {viewed_at, ua_family, referrer_domain}'
Status-Codes
| Code | Bedeutung |
|---|---|
| 201 | Share erstellt |
| 200 | List/Detail/Update/Views OK |
| 204 | DELETE erfolgreich |
| 403 | Session gehoert nicht dem User |
| 404 | Share oder Session nicht gefunden |
| 410 | Share widerrufen (nur public-route) |
| 422 | Keine show_*-Option true, ungueltiges expires_at, password zu kurz |
Pitfalls
show_tool_results=falseist Default. Standardmaessig sieht der Empfaenger keine Tool-Call-Karten — nur die Konversation. Aktiv setzen, wenn du z.B. SERP-Daten oder Backlink-Tabellen mitteilen willst.freezeist nicht reversibel ohne PATCH. Einmal gefroren, bleibt der Snapshot stehen — auch wenn die Session weiterlaeuft.- Public-Link ist nicht widerrufbar via Token. Widerruf nur via
DELETE /v1/chat-shares/{id}mit Auth-Token des Owners. - Password-Throttle ist hart. 6+ falsche Versuche / Minute → 429 fuer 60 s; ein zweiter Bypass-Versuch verlaengert das Lockout.
Verwandt: Agentic Chat · Agentic-Plans-API · Auth-API.