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

# Changelog

> Notable changes to the Mosaic API.

## 2026-06-28

### Added: output source citations

Agent run outputs now include a `sources[]` array when a render uses licensed or external media. Getty b-roll citations include the usage window, query, provider asset ID when resolved, internal render asset ID, placement/layout, and rights metadata.

Affected surfaces:

| Surface                          | Field                               |
| -------------------------------- | ----------------------------------- |
| `GET /agent_run/{run_id}`        | `outputs[].sources`                 |
| `GET /agent/{agent_id}/runs`     | `runs[].outputs[].sources`          |
| `GET /agent_runs`                | `runs[].outputs[].sources`          |
| `GET /trigger/{trigger_id}/runs` | `runs[].outputs[].sources`          |
| `RUN_PROGRESS` webhook           | `updated_nodes[].outputs[].sources` |
| `RUN_FINISHED` webhook           | `outputs[].sources`                 |

## 2026-05-21

### Added: avatar profile API and generation tile docs

The Avatar Profiles API now exposes the public avatar workflow:

| Endpoint                       | Description                                                                                              |
| ------------------------------ | -------------------------------------------------------------------------------------------------------- |
| `POST /avatar-profiles/create` | Create an avatar from a source video, or an image plus voice reference. Processing starts automatically. |
| `GET /avatar-profiles/{id}`    | Get one avatar, including signed `video_preview_url`, `status`, and `status_message`.                    |
| `GET /avatar-profiles`         | List avatars available to your organization.                                                             |

Avatar profile responses use a flat object shape:

```json theme={null}
{
  "id": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
  "video_preview_url": "https://...",
  "name": "Founder Avatar",
  "status": "processing",
  "status_message": null
}
```

Avatars can be used in AI Avatar tiles immediately after creation. If processing is still running, the agent run waits for the avatar to become ready; failed avatars return an error through `status_message`.

New generation tile documentation is also available for:

* [Video Generation](/tiles/video-generation)
* [Audio Generation](/tiles/audio-generation)
* [Image Generation](/tiles/image-generation)

The [Run Agent](/api/agent-runs/post-agent-run#generation-only-workflows) docs now include node IDs and setup guidance for AI Avatar, Video Generation, Audio Generation, and Image Generation workflows.

## 2026-04-04

### Added: `errors` field on agent runs and webhooks

Agent run responses and webhook payloads now include an `errors` field that surfaces error messages from failed tasks, grouped by the template node that produced them.

**Run-level** (`GET /agent_run/{run_id}` and `RUN_FINISHED` webhook):

```json theme={null}
"errors": [
  {
    "original_node_id": "2ba7b810-9dad-11d1-80b4-00c04fd430c8",
    "messages": ["FFmpeg render failed: output format not supported"]
  },
  {
    "original_node_id": "3ca7b810-9dad-11d1-80b4-00c04fd430c8",
    "messages": [
      "Audio transcription timed out after 300s",
      "Retry failed: service unavailable"
    ]
  }
]
```

Each entry links errors to the `original_node_id` (template node) so you can map failures back to specific nodes in your agent.

**Node-level** (`GET /agent_run/{run_id}/nodes` and `RUN_PROGRESS` webhook `updated_nodes[]`):

```json theme={null}
"errors": ["Audio transcription timed out after 300s"]
```

Per-node `errors` is a flat string array since the node context is already provided by the parent object.

**Affected endpoints:**

| Surface                         | Field                    | Type                                          |
| ------------------------------- | ------------------------ | --------------------------------------------- |
| `GET /agent_run/{run_id}`       | `errors`                 | `array` of `{ original_node_id, messages[] }` |
| `GET /agent_run/{run_id}/nodes` | `nodes[].errors`         | `string[]`                                    |
| `RUN_FINISHED` webhook          | `errors`                 | `array` of `{ original_node_id, messages[] }` |
| `RUN_PROGRESS` webhook          | `updated_nodes[].errors` | `string[]`                                    |

Previously, error details from processing tasks were only available internally. The `status_message` field on runs and nodes continues to work as before and is unaffected by this change.
