---
title: "Mint Goal Voice Call"
method: POST
path: "/goals/voice/session"
tags: ["goals"]
---

# Mint Goal Voice Call

`POST /goals/voice/session`

Mint one browser's call, and start answering its delegated goal turns.

The three browser signals are the same ones every unsafe goals route takes
— the harness's JSON-body cookie was a relay artifact, and a deployed
caller's cookie rides its own request.

The delegated turns then run back through this very surface over HTTP,
presenting the caller's session and an allowlisted origin. Self-HTTP rather
than an in-process call on purpose: it is the boundary the whole feature was
tested against, and it is replica-safe because a goal session lives in
Postgres rather than in whichever process answers.

## Request body

- GoalVoiceCallRequest — One browser's offer, plus the surface settings a goal turn takes.
  - `sdp` string, required
  - `locale` string, nullable
  - `units` 'metric' | 'imperial', nullable

## Response `200`

Successful Response

- GoalVoiceCallResponse — The SDP answer and the id of the call it belongs to. Nothing else.
  - `session_id` string, required
  - `sdp` string, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/imperfect/apis/imperfect-api.md) · [All operations](https://skmtc.dev/imperfect/apis/imperfect-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/imperfect/imperfect-api/revisions/cc2293a44257/schema)
