> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aigenda.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Result structure

> What the finished result contains: protocol, transcript by block, speakers, language.

[`GET /api/spaces/{space_id}/audio/{audio_id}/result/`](/en/api-reference/processing/result) returns the finished result once the response has `classified: true`.

```json Sample response (shortened) theme={null}
{
  "classified": true,
  "success": true,
  "audio_id": 51234,
  "title": "Sales team standup.mp3",
  "duration": 1837,
  "url": "https://storage.yandexcloud.net/aigenda/3f6c1e0a.mp3?X-Amz-Signature=…",
  "is_shared": false,
  "is_uploaded": true,
  "result": {
    "language": "en",
    "protocol": "### November sales plan\n\nWe launch the Start+ plan on November 1…",
    "dialog": [
      {
        "header": "November sales plan",
        "starts": [0, 14, 31],
        "ends": [13, 30, 52],
        "speakers": ["{101}", "{102}", "{101}"],
        "texts": [
          "Let's start with the November plan.",
          "We expect the first sign-ups for the new plan in the second week.",
          "Then we need the landing page by October 25."
        ]
      }
    ],
    "speakers_map": { "101": "Anna", "102": "SPEAKER_01" },
    "speakers_timeline": { "{101}": [[0, 13], [31, 52]], "{102}": [[14, 30]] }
  }
}
```

## Top level

| Field | Type | Contents |
| - | - | - |
| `classified` | boolean | `true` once processing is finished |
| `success` | boolean | `true` if processing succeeded |
| `result` | object \| null | Protocol, transcript, and speakers. `null` while processing runs |
| `audio_id` | integer | Recording ID |
| `title` | string | Recording title |
| `duration` | integer | Recording length in seconds |
| `url` | string | Temporary link to the source file, valid for 1 hour |
| `is_shared` | boolean | Whether public access to the result is on |
| `is_uploaded` | boolean | The recording file has been fully received |

## The result object

| Field | Type | Contents |
| - | - | - |
| `protocol` | string | Meeting protocol in Markdown, sections with `###` headings |
| `dialog` | array | Transcript split into the meeting's topic blocks |
| `speakers_map` | object | Speaker names by speaker ID |
| `speakers_timeline` | object | Speech intervals for each speaker |
| `language` | string | Recording language, for example `ru` |

The response can also contain service fields not listed in this table. Don't rely on them.

## Transcript: dialog

`dialog` is an array of blocks. Each block matches a topic of the meeting and holds utterances as parallel arrays: the element at index `i` in every array describes one utterance.

| Block field | Type | Contents |
| - | - | - |
| `header` | string | Block topic |
| `starts` | number\[] | Start of each utterance, seconds from the beginning of the recording |
| `ends` | number\[] | End of each utterance, seconds |
| `speakers` | string\[] | Speaker of each utterance, an ID in curly braces: `"{101}"` |
| `texts` | string\[] | Text of each utterance |

To build a text transcript or subtitles from `dialog`, see [Downloading files](/en/processing/files).

## Speakers

AiGenda separates voices on its own and gives each speaker an ID.

* `speakers_map` maps the ID (without braces) to a name: `{"101": "Anna"}`. If the voice isn't labeled in the space yet, you get a label like `SPEAKER_01` instead of a name.
* `speakers_timeline` gives speech intervals per speaker: the key is the ID in braces, the value is a list of `[start, end]` pairs in seconds.

Speakers belong to the space: once you label a voice in the cabinet, AiGenda recognizes it in later recordings of that space.

## Protocol

`protocol` comes as ready-made Markdown. You can show it in your UI right away or save it to a file.

```markdown Sample protocol theme={null}
### November sales plan

- We launch the Start+ plan on November 1.
- The discount for current customers stays until the end of the year.

### Action items

| Task | Owner | Due |
|---|---|---|
| Prepare the plan's landing page | {101} | October 25 |
| Update the call script | {102} | October 28 |
```

Owners in the protocol appear as speaker IDs in curly braces: `{101}`. Replace them with names from `speakers_map`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.