Quickstart
This guide takes you from zero to a fully analysed call in about five minutes against a locally running backend. For a production setup see Deployment.
Prerequisites
- Java 21 (
java -version) - Maven 3.9+ (
mvn -version) - Docker (for the Postgres container) or an existing Postgres instance
ffmpegon your$PATH(required for audio preprocessing)- A
.m4a/.mp3/.wavrecording to analyse
1. Start dependencies
docker run -d --name scryon-pg \
-e POSTGRES_USER=scryon \
-e POSTGRES_PASSWORD=scryon \
-e POSTGRES_DB=scryon \
-p 5432:5432 \
postgres:16
2. Configure secrets
Create a .env file (or export these vars) — only LEMONFOX_API_KEY and LLM_API_KEY are mandatory for the basic flow.
export LEMONFOX_API_KEY=sk-...
export LLM_API_KEY=sk-...
# Optional but recommended:
export PYANNOTE_ENABLED=true
export PYANNOTE_API_KEY=...
3. Run the backend
cd scryon-backend
./mvnw spring-boot:run
The server starts on http://localhost:8080. Confirm with:
curl -s http://localhost:8080/api/health | jq
4. Submit a call
curl -X POST http://localhost:8080/api/calls/analyze \
-F "file=@/path/to/recording.m4a" \
-F 'metadata={
"title": "Demo call",
"contactName": "Acme Corp",
"direction": "OUTGOING"
};type=application/json'
Response:
{
"callId": "f0a1d2e3-...",
"status": "QUEUED"
}
5. Poll for completion
curl -s "http://localhost:8080/api/calls/status?ids=f0a1d2e3-..." | jq
Status transitions are QUEUED → TRANSCRIBING → ANALYZING → COMPLETED. Typical end-to-end latency for a 5-minute call is 10–40 seconds.
6. Read the output
Once status is COMPLETED:
# Speaker-attributed transcript
curl -s http://localhost:8080/api/calls/$CALL_ID/transcript | jq
# Structured analysis with action items
curl -s http://localhost:8080/api/calls/$CALL_ID/analysis | jq
# Action items as first-class objects
curl -s http://localhost:8080/api/actions | jq
What's next
- Read the API overview for the full endpoint reference.
- Understand the pipeline end to end.
- Enable voice embedding so Scryon can name you in transcripts.