BAMBOO

Overview

Live view of the RAVEN API service.

Application probing
Welcome

What is RAVEN?

RAVEN reads your documents and answers questions about them. You upload files — PDFs, Word documents, Excel sheets, text — and RAVEN remembers what's inside. Your application then asks RAVEN questions in plain English, and RAVEN replies with an answer plus the exact passages it pulled the answer from.

You don't run any AI models yourself. You don't manage a database. You don't pick an embedding service. RAVEN handles all of that behind the scenes. Your application just makes HTTPS calls.

About this console. The screen you're looking at is RAVEN's operator dashboard — a tool for monitoring what's been ingested, retrying failed jobs, and inspecting the audit trail. Your application's end users never see this UI. The chat experience for your users lives inside your own application, talking to RAVEN over HTTPS. The Search Console tab is here for debugging — point it at a project, type a question, see what RAVEN would return.
Flow

How it works

  1. You add documents. Upload a file, or point RAVEN at a folder in S3. RAVEN parses the text, breaks it into pieces, and stores them in a way that's searchable by meaning.
  2. Your app asks a question. A normal HTTPS request with the question text.
  3. RAVEN returns an answer. Plain text response with citations back to the source passages so users can verify it.

Indexing a file takes about 30 seconds. Asking a question takes 2–5 seconds.

Modes

Two ways to use RAVEN

Easy mode — let RAVEN handle the AI

You send a question, RAVEN sends back a written answer. RAVEN picks the right passages, builds the prompt, calls the LLM, and formats the response. You don't need to know anything about prompts or AI.

Best for: most apps. Fastest path to a working feature.

Your app  →  POST /v1/chat  →  RAVEN  →  "The warranty is 25 years…"

Custom mode — bring your own AI

You send a question, RAVEN sends back the matching passages from your documents (no AI answer, just the raw passages). You feed those passages into your own AI agent.

Best for: teams that already have an AI agent and want RAVEN just for document search.

Your app  →  POST /v1/search  →  RAVEN  →  [passage 1, passage 2, …]
                                              │
                                              ▼
                                          Your own AI  →  answer

You can use both at once — easy mode for general questions, custom mode for the specific endpoint where you need control.

Integrate

Connecting your application — 3 steps

Step 1 — Get an API key

Ask a RAVEN operator for a key. You tell them an application ID (kebab-case, like myapp or marketing-tool) and where your documents live. They hand you back one API key. Treat it like a password.

Step 2 — Add documents

Pick the path that matches where your files are.

A. From this console. Click Ingest in the left nav, drop a folder or files, click Submit. Good for trying it out.

B. Single file from your backend.

curl -X POST "$RAVEN_HOST/v1/ingest" \
  -H "X-API-Key: $RAVEN_KEY" \
  -F "file=@./contract.pdf" \
  -F "application_id=myapp" \
  -F "project_id=q1-rfp"

C. Whole folder already in S3.

curl -X POST "$RAVEN_HOST/v1/ingest/source/prefix" \
  -H "X-API-Key: $RAVEN_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "application_id": "myapp",
    "project_id": "q1-rfp",
    "s3_prefix": "s3://your-bucket/q1-rfp/"
  }'

Step 3 — Ask questions

Easy mode (RAVEN writes the answer):

curl -X POST "$RAVEN_HOST/v1/chat" \
  -H "X-API-Key: $RAVEN_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "application_id": "myapp",
    "project_id": "q1-rfp",
    "question": "What is the warranty period?"
  }'

Custom mode (RAVEN returns matching passages):

curl -X POST "$RAVEN_HOST/v1/search" \
  -H "X-API-Key: $RAVEN_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "application_id": "myapp",
    "project_id": "q1-rfp",
    "query": "warranty period",
    "top_k": 8
  }'

That's the whole integration. Three HTTP calls.

Reference

Common things you'll do

WhatHow
Add a documentPOST /v1/ingest (file) or POST /v1/ingest/source/prefix (S3 folder)
Ask a questionPOST /v1/chat
Ask many questions at oncePOST /v1/chat/batch (up to 50 in one call)
Stream the answer as it's writtenPOST /v1/chat with "stream": true
Get just the matching passagesPOST /v1/search
See what's been indexedGET /v1/documents
Check ingest progressGET /v1/jobs
Replace a documentDELETE /v1/documents/{id}, then re-ingest
See the audit trailGET /v1/audit/answers

Every request needs the X-API-Key header. Add X-Actor-User-Id to identify which of your users triggered the action — RAVEN logs it on every audit row.

Troubleshooting

When something goes wrong

You seeWhat it meansFix
401 missing_api_keyNo X-API-Key headerAdd the header
401 invalid_api_keyKey is wrongRe-check the value, ask operator if rotated
403 namespace_forbiddenYour key doesn't own this application_id/project_idConfirm the IDs match what the operator assigned you
400 source_uri must be s3://You pasted an https:// URLUse s3://bucket/key (or use /v1/ingest/source/prefix which accepts both)
403 Source bucket not allowedS3 bucket isn't in the allow-listCopy file to an allowed bucket, or ask operator to add yours
Job stuck in queued for >5 minWorker busy or upstream rate-limitedCheck GET /v1/jobs/{job_id} for the current stage
503 answer_failed on chatNo documents indexed yet for this namespaceWait for ingest to finish (check Jobs tab)
Webhook never arrivesReceiver returning non-2xx, or HMAC failingCheck GET /v1/audit/events for webhook.delivery_failed

Every error response includes a request_id. Paste it in Slack and an operator can grep the access log for the full trace.

Readiness
awaiting probe
Ingest jobs
0
in current scope
Documents
0
indexed
Audited answers
0
retained
Log

Recent activity

0 events
Loading activity…
Diagnostics

Service health

not probed
Click "Probe /v1/health" to run a full dependency check.
Pipeline

Ingest Jobs

0 loaded
No jobs loaded yet.
Manifest

Job detail

Select a job to see its events.
Corpus

Documents

0 loaded
No documents loaded yet.
BAMBOO

Document detail

Select a document to view its source objects.
Provenance Ledger

Every answer trails back to a chunk, page, and section. Validate citations · expose hallucinations · close the loop.

Answers 0 loaded in scope
Validated citations 0 source-backed
Unverified 0 needs review
Avg latency answer generation
Trail

Audit Trail

Review answer provenance, citation health, and tool traces.

0 loaded
No audited answers loaded yet.
Exhibit

Answer detail

Select an answer to see citations.
Intake

Ingest

Stage new documents into the current application.

Upload files

Drop a folder or files, or use the buttons below. Each file is staged + queued individually.

idle

From S3 source URI

Ingest an already-staged object without re-uploading bytes.

idle

Populate source catalog (S3 prefix)

Paste one S3 folder URL — RAVEN lists matching objects and adds them to the source catalog (nothing is ingested until you select files). Accepts s3://bucket/prefix/ or an AWS Console URL.

idle
Log

Recent ingestions

0 loaded
Submit an ingest to see batch progress here.
Stuck jobs
running past lease expiry
Dead lettered
awaiting redrive
In flight
running across all tenants
Queued
awaiting workers
Operator

Operations console

Wedge

Stuck jobs

Admin probe pending…
Redrive

Dead-lettered jobs

Admin probe pending…
Ledger

Jobs by tenant

Admin probe pending…
Tenancy

Applications & projects

Scopes register automatically when your app calls ingest, chat, or search with a valid namespace. Delete removes documents, the vector index, catalog rows, and jobs for that project. Requires an admin API key and request header X-Confirm-Destroy: yes.

Save an API key and reload to list scopes.
Keys

API keys

Click "Reload" to fetch the current key inventory.
Hooks

Webhooks

Click "Reload" to fetch active webhook subscriptions.
Vectors

Vector indexes

Click "Reload" to inventory every namespace's vector index.
Behavior

Personas (Domain Knowledge)

Personas are tenant-authored system prompts the chat agent uses on top of RAVEN’s built-in safety rules. Each call to /v1/chat or /v1/chat/batch can pass domain_knowledge_id; with no id, the default for the calling application is applied. This list shows all personas for your tenant (not only the current application filter).

Click "Reload" to list personas for your tenant.