Research Upload

How to upload, manage, and process research sources in Praxiom AI.

Overview

Research sources are the foundation of everything in Praxiom AI. They represent the raw user voice — interviews, support tickets, surveys, usage data, and feedback — that the AI synthesizes into structured insights. This guide covers uploading, managing, and monitoring the processing of your research files.

How It Works

When you upload a file, Praxiom stores it in cloud storage (Cloudflare R2), creates a database record, and triggers background processing. Processing extracts text from PDFs, transcribes audio/video, and parses structured data from CSVs — making the content available for AI synthesis.

1

Upload a file

Send a multipart form request to POST /api/research/upload with the following fields:

FieldTypeDescription
fileFileThe research file (max 100 MB)
workspace_idUUIDTarget workspace
source_typeStringOne of: interview, support_ticket, survey, usage_data, feedback, other
titleStringA human-readable title for this source

The response returns a ResearchSourceResponse with the new source's id and a processing_status of pending.

2

Wait for processing

Processing runs in the background. Poll the source status via GET /api/research/sources/{source_id} or list all sources with GET /api/research/sources?workspace_id=....

The processing_status field transitions through:

  • pending — Queued for extraction
  • completed — Text extracted and ready for synthesis
  • failed — Extraction encountered an error
3

Synthesize

Once sources are completed, select them for synthesis. See the Synthesis guide for details.

Supported File Types

Praxiom accepts a wide range of document formats:

  • Documents — PDF, Word (.docx), plain text, Markdown, JSON
  • Spreadsheets — CSV, Excel (.xlsx)
  • Audio/Video — MP3, MP4, WAV, WebM (auto-transcribed)
  • Images — PNG, JPEG, TIFF (OCR-extracted)

Executable files (.exe, .sh, .py, .js, .bat, etc.) are blocked for security. The upload endpoint validates both MIME types and file magic bytes.

API Reference

List Sources

GET /api/research/sources?workspace_id={id}

Optional query parameters:

ParameterDescription
source_typeFilter by type (e.g. interview)
processing_statusFilter by status (e.g. completed)
limitMax results (default 200, max 500)
offsetPagination offset

Returns { sources: [...], total: N }.

Get Single Source

GET /api/research/sources/{source_id}

Returns the full source record including file_url, file_type, file_size_bytes, extracted_text, and transcript.

Delete Source

DELETE /api/research/sources/{source_id}

Removes the source record and its file from cloud storage. Returns 204 No Content.

Reprocess Source

POST /api/research/sources/{source_id}/reprocess

Resets a pending or failed source back to pending and retriggers background extraction. Useful when a source is stuck. Returns the updated source record.

Sources that have already completed successfully cannot be reprocessed. The endpoint returns 422 with code ALREADY_PROCESSED.

Key Concepts

  • Source types categorize your research for better synthesis context. The AI uses this metadata to weight different kinds of evidence appropriately.
  • File size limit is 100 MB per upload. Empty files are rejected with a 400.
  • Usage limits are enforced per workspace based on your plan. If you hit the file upload limit, the API returns 402 with code USAGE_LIMIT_EXCEEDED.
  • Workspace access is checked on every operation. You must be a member of the workspace to upload, view, or delete sources.

What's Next

Once your sources are processed, move on to the Synthesis guide to extract structured insights.

Was this helpful?