Skip to content
POST/api/v1/playground/chat

Send playground chat message

Action-discriminated playground endpoint: 'create' opens a session (201), 'message' sends a turn, 'save-test-cases' writes the session's user/assistant pairs into a dataset, 'share' mints a shareable link, 'update-config' changes model/temperature/maxTokens/systemPrompt. A 'message' requires { sessionId, content, orgId (uuid) } — the caller's membership of that org is verified because the turn spends that org's BYOK provider key, which is resolved and passed to the provider SDK DIRECTLY (no gateway hop and no budget enforcement); a missing key is 422 NO_PROVIDER_KEY and an upstream failure is 502 PROVIDER_ERROR — never a synthesised reply. Sessions are in-process only and every action is owner-checked (403 NOT_SESSION_OWNER). Requires evals:create; rate-limited to 30/min.

Authentication

Send Authorization: Bearer YOUR_API_KEY on every request. Generate API keys at /dashboard/settings/api-keys.

Response

200 example

{
  "success": true
}

All status codes

200Response.
201Created.
400(no description)
401(no description)
403Forbidden — NOT_ORG_MEMBER, NOT_SESSION_OWNER.
404Not Found — NOT_FOUND, SESSION_NOT_FOUND.
409Conflict — CONFLICT.
422Unprocessable Entity.
429(no description)
500Internal Server Error — DB_ERROR.
502Bad Gateway — PROVIDER_ERROR.

Code samples

cURL

curl -X POST \
  https://evalguard.ai/api/v1/playground/chat \
  -H "Authorization: Bearer $EVALGUARD_API_KEY"

TypeScript

// The TypeScript SDK (@evalguard/sdk) exposes TYPED methods — runEval,
// getEval, runSecurityScan, checkFirewall, … — not a generic request().
// For an arbitrary endpoint, call it directly:

const res = await fetch("https://evalguard.ai/api/v1/playground/chat", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.EVALGUARD_API_KEY}` },
});
console.log(res.status, await res.json());

Python

# The Python SDK (pip install evalguardai) exposes TYPED methods on
# EvalGuardClient — run_eval, get_eval, … — not a generic request().
# For an arbitrary endpoint, call it directly:

import os
import requests

headers = {"Authorization": f"Bearer {os.environ['EVALGUARD_API_KEY']}"}

response = requests.request("POST", "https://evalguard.ai/api/v1/playground/chat", headers=headers)
print(response.status_code, response.json())

Go

package main

import (
	"context"
	"fmt"
	"net/http"
	"os"
)

func main() {
	req, _ := http.NewRequestWithContext(context.Background(), "POST", "https://evalguard.ai/api/v1/playground/chat", nil)
	req.Header.Set("Authorization", "Bearer "+os.Getenv("EVALGUARD_API_KEY"))
	resp, err := http.DefaultClient.Do(req)
	if err != nil { panic(err) }
	defer resp.Body.Close()
	fmt.Println(resp.Status)
}

Errors

400401403404409422429500502

Other Playground endpoints