Skip to main content
Pick your path.

1. Get a sandbox key

Email your point of contact at Parlay or use the signup form. You’ll receive a key prefixed pk_sandbox_….

2. Submit a mock analysis

Mock fixture URLs are deterministic test data. Free, instant, no real audio required.
curl -X POST https://api.goparlay.io/v1/analyses \
  -H "Authorization: Bearer pk_sandbox_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "org_id": "demo-acme",
    "rep_id": "alex-smith",
    "recording_url": "mock://perfect-pitch"
  }'
You get back a 202 with { id, status: "queued", created_at }.

3. Poll until complete

curl https://api.goparlay.io/v1/analyses/<id> \
  -H "Authorization: Bearer pk_sandbox_YOUR_KEY"
status will be queuedprocessingcompleted. Mock fixtures usually complete in under a second; real audio takes 30–90 seconds. The full analysis JSON sits in the analysis field once status === "completed".
Production integrations should use webhooks instead of polling. See the webhooks guide.

4. Read the result

A completed analysis returns this canonical shape under the analysis field. Six pillars (clarity, influence, objection, discovery, delivery, close), each 0–100, plus a computed overall_score and KPIs flat at the top:
{
  "id": "ec1851ba-4037-41bf-9ad5-d64391c11ab4",
  "status": "completed",
  "duration_seconds": 312,
  "transcript": { "utterances": [ /* ... */ ], "word_count": 22 },
  "analysis": {
    "prospect_name": "Casey Morgan",
    "recording_title": "Closed Casey",
    "double_down": "The pacing on the value prop was perfect — keep doing exactly that.",
    "ai_summary": "Strong opening, clean discovery, textbook objection handling, confident close.",
    "ai_summary_v5": "Strong opening, clean discovery, textbook objection handling, confident close.",

    // KPIs (flat, no wrapper)
    "questions_asked": 11,
    "filler_word_count": 3,
    "words_per_minute": 142,

    // Six-pillar scores (flat, _score suffix) + computed overall
    "overall_score": 95,
    "clarity_score": 94,
    "influence_score": 96,
    "objection_score": 92,
    "discovery_score": 95,
    "delivery_score": 97,
    "close_score": 96,

    // Per-pillar feedback (nested under _v5)
    "feedback_v5": {
      "clarity":   { "positive": "...", "negative": "..." },
      "influence": { "positive": "...", "negative": "..." },
      "objection": { "positive": "...", "negative": "..." },
      "discovery": { "positive": "...", "negative": "..." },
      "delivery":  { "positive": "...", "negative": "..." },
      "close":     { "positive": "...", "negative": "..." }
    },

    // Action plan (3 named sections, also under _v5)
    "action_plan_v5": {
      "double_down_implementation": "...",
      "general_communication_improvement": "...",
      "quoted_principle": "..."
    },

    "organization_prompt_summary": null,
    "organization_feedback": null,
    "master_prompt_id": null,
    "master_prompt_version": "v5",
    "persona_snapshot": null,
    "synthesis_snapshot": null
  }
}
The shape is identical for mock://* fixtures and real audio. Build your decoder once against mock://perfect-pitch, ship with confidence.

5. Real audio

Replace mock://perfect-pitch with a publicly reachable HTTPS URL to an MP3, WAV, M4A, or FLAC file. Pre-signed S3 / GCS URLs are fine. The file must not require additional auth headers.

You’re integrated. What’s next?

Use real audio

Submit your own recordings, configure org defaults

Set up webhooks

Stop polling — get notified when analyses complete

Generate playbooks with AI

Turn call notes into structured playbooks

Rep intelligence

Persona, methodology, and synthesis at scale