Prismlet API
A prism is a set of typed questions you build in the Prismlet app. Send it a text and the answers come back in the same response, one value per column of the prism's Lens. Every answered call is saved as a result that you can read again by its id, and retry if it failed.
One call
Section titled “One call”This asks the support-routing prism which team should handle a ticket, whether it is urgent and how the customer sounds.
curl https://api.prismlet.com/v1/prisms/support-routing/results \ -H "Authorization: Bearer $PRISMLET_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "TCK-8812", "fields": { "subject": "Charged twice this month", "text": "Hi, I was billed twice for September. Please refund the second charge before Friday." } }'const response = await fetch('https://api.prismlet.com/v1/prisms/support-routing/results', { method: 'POST', headers: { Authorization: `Bearer ${process.env.PRISMLET_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ ref: 'TCK-8812', fields: { subject: 'Charged twice this month', text: 'Hi, I was billed twice for September. Please refund the second charge before Friday.', }, }), signal: AbortSignal.timeout(45_000),});
const result = await response.json();console.log(response.status, result);import os
import requests
response = requests.post( "https://api.prismlet.com/v1/prisms/support-routing/results", headers={"Authorization": f"Bearer {os.environ['PRISMLET_API_KEY']}"}, json={ "ref": "TCK-8812", "fields": { "subject": "Charged twice this month", "text": "Hi, I was billed twice for September. Please refund the second charge before Friday.", }, }, timeout=45,)
result = response.json()print(response.status_code, result){ "id": "0192f5c1-7c1a-7b3e-9f55-3c1d2e4a5b6c", "ref": "TCK-8812", "prism": "support-routing", "version": 3, "status": "ok", "error": null, "took_ms": 640, "created_at": "2026-09-23T09:14:02.187Z", "answers": { "team": "billing", "team_probability": 0.91, "urgent": "yes", "tone": "annoyed", "tone_average": 2.05 }}team is an option key. urgent is yes because the Lens turns the probability of yes into a label. tone_average places the tone between Calm (1) and Angry (3). The call waits for the answers, so there is nothing to poll.
This response uses the custom Lens from the quickstart. With the automatic Lens, answers holds team, urgent and tone.
Base URL
Section titled “Base URL”The base URL is https://api.prismlet.com/v1. That address is not live yet. Paths in these docs start with /v1, except in the API reference, which writes them relative to the base URL.
The API has three endpoints:
| Method | Path | What it does |
|---|---|---|
POST |
/v1/prisms/{prism}/results |
Answer one text with a prism. |
GET |
/v1/results/{result_id} |
Read a saved result. |
POST |
/v1/results/{result_id}/retry |
Retry a failed result. |
Where to go next
Section titled “Where to go next”- Quickstart takes you from an empty account to this call in five minutes.
- Prisms, fields and questions and the Lens explain what the answers mean.
- Errors and retries shows how to make a call safe to repeat.
- The API reference lists every parameter, schema and status. Download the OpenAPI 3.1 document at
/openapi.jsonto generate a client or import it into an HTTP tool. - AI assistants can read
/llms.txt, or/llms-full.txtfor every guide in one file.