Call summaries

A free AI summary of every call with a conversation, whether a follow-up is needed, whether the agent's goal was met, and the other party's sentiment.

After a call's transcript is stored, Skysay writes a short AI summary of it. It is on for every agent unless you turn it off, and it is free. Every field is an AI estimate: read it as a pointer to the call, not as a record of it. Skysay itself never acts on it. It does not retry, block, bill, or change do-not-call because of anything in a summary.

What a summary contains

FieldWhat it holds
summaryOne to three sentences about the call. The summary, follow_up and goal_reason are written in English, whatever language the call was held in.
follow_up_needed, follow_upWhether someone still has to act after the call, and what, in one line.
goal_metyes, partly, no or unclear, with a one-line goal_reason.
goal_sourceWhat the call was judged against: goal_line (the agent's call goal) or agent_instructions (the agent's own published instructions, when it has no call goal).
sentimentThe other party's overall sentiment, not the agent's: positive, neutral, negative or unclear.

quality_flags says what the summary was written from: transcript_truncated when only the first part of a very long call fit the request (200 turns or 24,000 characters), and transcript_partial when the transcript was missing the text of an agent reply.

Call facts such as the call's status, who answered, and its duration are not part of the summary. They come from the platform, and the AI never decides them.

Read it

→ get_call_summary(call_id="cl_...")   # recordings:read
GET /v1/calls/{call_id}/summary        # recordings:read

The summary is derived from the transcript, so it needs the same recordings:read scope as the transcript. calls:read alone is refused. GET /v1/calls/{call_id} and get_call are unchanged and do not include it.

statusMeaning
readyresult holds the summary.
pendingThe transcript is stored and the summary is being written, usually within seconds.
skippedNo summary was written, and no AI request was made. reason is no_conversation (the other party said nothing, the call never connected, or the call was a simulated test such as POST /v1/web-calls, whose transcript is sample text rather than anything said) or insufficient_transcript (the other party spoke but none of it was transcribed).
failedThe summary could not be written after two attempts.
not_availableThere is no summary for this call: summaries were off for its agent, its transcript was deleted or has not arrived yet, or nothing on the call was transcribed.

There is no webhook event for summaries. Read them when you need them.

Set the call goal, or turn summaries off

Each agent has one setting, call_summary:

PATCH /v1/agents/{agent_id}
{ "call_summary": { "enabled": true, "goal": "Book a cleaning appointment and confirm the time." } }
  • goal is optional, at most 4,000 characters. When it is set, goal_met judges the call against it. When it is empty, goal_met judges the call against the agent's published instructions as you wrote them, never against the values a call filled in.
  • enabled: false turns summaries off for that agent's future calls. Calls already summarised keep their summary.

The same setting is accepted by POST /v1/agents and the MCP update_agent tool, and GET /v1/agents/{agent_id} returns it. Your own post-call extraction is a separate feature. A summary never changes your extraction schema, its result, or its call.extraction.ready event.

Who processes the transcript

The summary is written by Google Gemini (Google LLC), which processes the transcript as a sub-processor for this post-call analysis. Each request is bounded: up to 24,000 characters of transcript and 4,000 characters of goal. Google returns the analysis and Skysay stores it with the call.

Deleting a transcript

Deleting a call's recording and transcript, yourself or through your recording retention period, deletes that call's summary in the same step. It also deletes your post-call extraction result for that call.

One case is not instant. If a summary request is already on its way to Google when the transcript is deleted, that request still completes, usually within about 30 seconds. Skysay then discards its answer and never stores it.

A corrected recording that replaces a call's transcript replaces its summary too: the old summary is deleted with the old transcript, and a new one is written from the new transcript.