June 26, 2026

Session cost, opening instructions, and v2 digital twins that take voice from the reference video

Session cost

Session records now include a cost field — the billed cost of the session in USD, calculated from the minutes the agent was active and your API key's model configuration.

cost is returned on both GET /public/sessions and GET /public/sessions/{sessionId}. It is null while a session is pending or started, and is populated once the session closes and billing is finalized.

Use it to attribute spend per session, per companion, or per end user — list sessions and sum cost, filtering by companionId or externalClientId.

See the Sessions guide — Session cost for details.

Give the agent opening instructions

You can now instruct the agent on how to start a session, before the user speaks. Pass initialSpeech with guidance for how it should open that conversation — it's an instruction the agent follows in its own voice, not a verbatim line to read.

curl -X POST https://companion-api.napster.com/public/agents/agent_abc123/connections \
  -H "X-Api-Key: $NAPSTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "channelType": "webrtc",
    "initialSpeech": "Greet the customer warmly, introduce yourself as Acme Support, and ask what they need help with."
  }'

initialSpeech is available on every connection endpoint (POST /public/agents/{agentId}/connections, POST /public/connections, POST /public/ws-connections) and on the channel config (PUT /public/agents/{agentId}/channels/{channelType}) to set a default for every session on a channel.

See Session Configuration — Opening instructions for details.

v2 digital twins can take voice from the video

When you create a v2 digital twin from a video that includes audio, the voice is now cloned from the video's own audio track — you no longer need to provide a separate voice recording. voiceUrl becomes optional for v2: pass a videoUrl with clear speech and it supplies both the appearance and the voice.

curl -X POST https://companion-api.napster.com/public/digital-twins \
  -H "X-Api-Key: $NAPSTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "firstName": "Sarah",
    "lastName": "Johnson",
    "description": "VP of Customer Success at Acme Corp.",
    "gender": "female",
    "ethnicity": "Caucasian",
    "externalClientId": "sarah-johnson-001",
    "videoUrl": "https://example.com/videos/sarah-speaking.mp4",
    "version": "v2"
  }'

Providing a separate voiceUrl is still supported — use it when you want to clone the voice from a different or higher-quality recording than the video's audio.

See the Digital Twins guide for details.

On this page