Skip to content

Project data export

An administrator can download one project's feedback as JSON Lines with GET /api/v1/admin/projects/{id}/export. A valid admin session is required; project bearer tokens cannot export. The response has application/x-ndjson and one JSON object per line, ordered by creation time and event ID. It is streamed in bounded pages. Exporting writes a project.exported audit row. The export excludes token information, destination secrets, provider keys, group notes, LLM reasons and idempotency keys. CSV is not available.

Each line follows this JSON Schema:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "additionalProperties": false,
  "required": ["id", "project_id", "event_type", "submitted_via", "question", "correction", "previous_answer", "context", "source_reference", "agent_id", "conversation_id", "source_event_id", "user_reference", "metadata", "processing_status", "created_at", "updated_at", "tags", "group", "deliveries"],
  "properties": {
    "id": {"type": "string", "format": "uuid"},
    "project_id": {"type": "string", "format": "uuid"},
    "event_type": {"enum": ["knowledge_gap", "knowledge_correction"]},
    "submitted_via": {"enum": ["rest", "mcp"]},
    "question": {"type": "string"},
    "correction": {"type": ["string", "null"]},
    "previous_answer": {"type": ["string", "null"]},
    "context": {"type": ["string", "null"]},
    "source_reference": {"type": ["string", "null"]},
    "agent_id": {"type": ["string", "null"]},
    "conversation_id": {"type": ["string", "null"]},
    "source_event_id": {"type": ["string", "null"]},
    "user_reference": {"type": ["string", "null"]},
    "metadata": {"type": "object"},
    "processing_status": {"type": "string"},
    "created_at": {"type": "string", "format": "date-time"},
    "updated_at": {"type": "string", "format": "date-time"},
    "tags": {"type": "array", "items": {"type": "string"}},
    "group": {"type": ["object", "null"], "additionalProperties": false, "required": ["id", "status", "match_method"], "properties": {"id": {"type": "string", "format": "uuid"}, "status": {"type": "string"}, "match_method": {"type": "string"}}},
    "deliveries": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["status", "attempt_count", "destination_id"], "properties": {"status": {"type": "string"}, "attempt_count": {"type": "integer", "minimum": 0}, "destination_id": {"type": "string", "format": "uuid"}}}}
  }
}

The export contains event text as submitted, including any personal data in it. Protect and delete downloaded files according to your data policy.