Skip to main content
GET
/
agent-eval
/
cases
/
{id}
Get case
curl --request GET \
  --url https://api.goyappr.com/agent-eval/cases/{id} \
  --header 'Authorization: Bearer <token>'
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "company_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "persona_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "name": "Yes path — caller agrees on first ask",
  "scenario": "The persona is responding to a missed call from your business about their recent inquiry. They have time to talk for 5 minutes.",
  "success_criteria": [
    {
      "weight": 1,
      "description": "<string>",
      "pattern": "<string>",
      "tool_name": "<string>",
      "args_match": {},
      "node_id": "<string>",
      "rubric": "<string>"
    }
  ],
  "max_turns": 20,
  "pass_threshold": 80,
  "tool_policy": "mock",
  "created_at": "2023-11-07T05:31:56Z",
  "agent": {
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "name": "<string>",
    "type": "prompt",
    "flow_config": {
      "nodes": [
        {
          "id": "<string>",
          "name": "<string>",
          "position": {
            "x": 123,
            "y": 123
          },
          "agent_speaks_first": true,
          "greeting": "<string>",
          "is_literal": false,
          "next_step_id": "<string>",
          "auto_advance": true
        }
      ],
      "flow_config_version": "1",
      "metadata": {
        "custom_metadata_keys": [
          "<string>"
        ]
      }
    },
    "system_prompt": "<string>",
    "description": "<string>",
    "background_sound_volume": 0.3,
    "temperature": 1,
    "greeting_message": "<string>",
    "agent_speaks_first": true,
    "vad_stop_secs": 0.5,
    "vad_start_secs": 0.2,
    "vad_confidence": 0.7,
    "silence_timeout_secs": 60,
    "max_continuous_speech_secs": 120,
    "max_call_duration_secs": 600,
    "lead_memory_enabled": true,
    "is_active": true,
    "webhook_url": "<string>",
    "webhook_events": [],
    "extraction_parameters": [
      {
        "name": "customerName",
        "description": "The caller's full name as mentioned during the conversation"
      }
    ],
    "created_at": "2023-11-07T05:31:56Z",
    "updated_at": "2023-11-07T05:31:56Z"
  },
  "persona": {
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "company_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "name": "Frustrated tenant",
    "identity_prompt": "You are a 38-year-old tenant calling about a leaking pipe in your kitchen. You're frustrated because this is the third time you've reported it.",
    "language": "en",
    "created_at": "2023-11-07T05:31:56Z",
    "description": "<string>",
    "behavior_traits": {
      "patience": "low",
      "verbosity": "chatty",
      "cooperation": "cooperative",
      "interruption_tendency": "occasional",
      "goal": "Get a maintenance technician scheduled today"
    },
    "voice_config": {},
    "updated_at": "2023-11-07T05:31:56Z",
    "deleted_at": "2023-11-07T05:31:56Z"
  },
  "suite_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "description": "<string>",
  "agent_overrides": {},
  "tool_allowlist": [],
  "updated_at": "2023-11-07T05:31:56Z",
  "deleted_at": "2023-11-07T05:31:56Z"
}

Documentation Index

Fetch the complete documentation index at: https://docs.goyappr.com/llms.txt

Use this file to discover all available pages before exploring further.

Returns the case with agent and persona expanded inline.

Authorizations

Authorization
string
header
required

Your Yappr API key (e.g. ypr_live_...). Generate one in the dashboard under Settings → API Keys.

Path Parameters

id
string<uuid>
required

Response

Case

A specific eval scenario — persona + target agent + scenario + success criteria.

id
string<uuid>
required
company_id
string<uuid>
required
agent_id
string<uuid>
required

Agent under test. Full agent record is expanded inline as agent in API responses.

persona_id
string<uuid>
required
name
string
required
Example:

"Yes path — caller agrees on first ask"

scenario
string
required

Free-form one-paragraph framing the persona LLM is given on top of its identity. Describe the situation that prompted the call.

Example:

"The persona is responding to a missed call from your business about their recent inquiry. They have time to talk for 5 minutes."

success_criteria
object[]
required

Array of assertions evaluated after the run completes.

max_turns
integer
default:20
required

Hard cap on conversation turns. Hitting this terminates the run with termination_reason='max_turns'.

Required range: 1 <= x <= 100
pass_threshold
number
default:80
required

Weighted-score threshold (0-100) for pass_fail=true.

Required range: 0 <= x <= 100
tool_policy
enum<string>
default:mock
required

How the agent's tools behave during the run. mock (default): every tool call returns a synthetic success result the worker fabricates from the tool's declared output schema. real: tools fire for real (charges real money, hits real systems). allowlist: tools whose name appears in tool_allowlist fire for real, the rest return mock results.

Available options:
mock,
real,
allowlist
created_at
string<date-time>
required
agent
object
persona
object

Reusable caller archetype consumed by eval cases. The identity_prompt plus behavior_traits shape how the persona LLM responds; the same persona can be reused across many cases.

suite_id
string<uuid> | null

Optional parent suite. When null, the case is ad-hoc — runnable on its own but not part of a regression sweep.

description
string | null
agent_overrides
object

Optional per-case overrides applied to the agent's saved config at run time (e.g. a different system_prompt or flow_config for A/B testing). Same shape as the agent record. The agent on disk is never mutated.

tool_allowlist
string[]

Used only when tool_policy='allowlist'. List of tool names (camelCase) that should fire for real.

updated_at
string<date-time>
deleted_at
string<date-time> | null