> For the complete documentation index, see [llms.txt](https://docs.concurrence.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.concurrence.com/developer-guide/platform-api/scribe/artifacts.md).

# Artifacts

Retrieve Scribe transcripts, follow asynchronous artifact generation, review visit checklists, and finalize clinical notes with version checks.

Artifacts belong to a provider-owned [Scribe session](/developer-guide/platform-api/scribe/sessions.md). Every route below checks that the authenticated provider owns the session and requires `scribe:sessions:read_own`. Generation, checklist changes, and note finalization also require `scribe:notes:rw_own`.

{% hint style="info" %}
Scribe has its own public OpenAPI schema and provider access boundary. Use the [Scribe HTTP Reference](https://docs.concurrence.com/api-reference/readme/scribe) for canonical operation contracts and [Capture to Finalized Note](/developer-guide/guides/scribe-capture-to-note.md) for the complete workflow. Use the Scribe deployment base assigned to your integration, separately from Platform text sessions.
{% endhint %}

## Get Transcript

{% openapi src="<https://scribe.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/sessions/{session\_id}/transcript" method="get" %}
<https://scribe.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

`workspace_id` and `session_id` are UUIDs. The response contains `session_id` and an ordered `segments` array. Each segment has `text`, a nullable `speaker`, and integer `start_ms` and `end_ms` offsets from session start.

```json
{
  "session_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "segments": [
    {
      "speaker": "Provider",
      "text": "How are you feeling today?",
      "start_ms": 0,
      "end_ms": 2500
    }
  ]
}
```

A missing or inaccessible session, or an unavailable transcript, returns `404`. Temporary transcript retrieval failures return `503`.

## Get Note

{% openapi src="<https://scribe.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/sessions/{session\_id}/note" method="get" %}
<https://scribe.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

Read `generation_status` before displaying the note:

| Value     | Meaning                                              | Client behavior                                                                 |
| --------- | ---------------------------------------------------- | ------------------------------------------------------------------------------- |
| `pending` | Generation has not completed                         | Continue checking this endpoint; artifact fields can be null.                   |
| `ready`   | The note is available                                | Display `structured` and retain `version` for subsequent edits or finalization. |
| `failed`  | Generation failed                                    | Show the failure state and use any returned error details.                      |
| `empty`   | The session ended without usable transcript segments | Show that no note was generated; stop waiting for this generation.              |

When ready, the response includes `session_id`, `type`, `status`, `structured`, `version`, and generation, signing, and update timestamps. `body` is deprecated. The note's document `status` (`draft`, `submitted`, or `voided`) is separate from its `generation_status`.

A session with no note-generation record returns `404`; an artifact that is temporarily unavailable returns `503`. Do not interpret every non-ready response as a missing session.

## Generate a Note

{% openapi src="<https://scribe.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/sessions/{session\_id}/note" method="post" %}
<https://scribe.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

Generation requires a mutable session and an available, non-empty canonical transcript. A missing transcript returns `404`; an empty transcript returns `409`.

| Request field  | Contract                                                                                                     |
| -------------- | ------------------------------------------------------------------------------------------------------------ |
| `note_type`    | Compatibility selector, default `medical`. The session's pinned note template takes precedence when present. |
| `instructions` | Optional generation guidance, up to 1,200 characters; may be null.                                           |

Use the [visit type and template selected on the session](/developer-guide/platform-api/scribe/sessions.md#create-an-in-person-session) to establish the note format. Changing this request's `note_type` does not override a pinned session template.

A new or pending generation returns `202` with a generation envelope. If an identical generation has already succeeded, the route can return `200` with `note` and `generation`. Poll **Get Note** for the current result. A successful enqueue does not mean a draft is ready to display.

## Finalize a Note

{% openapi src="<https://scribe.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/sessions/{session\_id}/note/finalize" method="post" %}
<https://scribe.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

Finalization requires a JSON body containing the positive integer `base_version` of the note the provider reviewed. Read that version from **Get Note**; the value below is illustrative.

```json
{
  "base_version": 3
}
```

On success, the response wraps the submitted note in `note`. Submission sets `signed_at` and completes the session atomically. An already submitted note is an idempotent success.

For an unsubmitted note, a stale version returns `409 version_conflict`: reload the current note and have the provider review it before trying again. A missing note returns `404`; a cancelled or failed session returns `409 invalid_session_state`. Version checking protects against overwriting concurrent changes. Finalization itself does not establish that the note is clinically complete or correct.

## Session Summary

{% openapi src="<https://scribe.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/sessions/{session\_id}/summary" method="post" %}
<https://scribe.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

{% openapi src="<https://scribe.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/sessions/{session\_id}/summary" method="get" %}
<https://scribe.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

The POST generates a summary from the session transcript and available note. It requires a mutable session and a non-empty transcript. Like note generation, it returns `202` while work is pending or `200` with `summary` and `generation` when an identical completed result can be reused.

The GET returns `generation_status` (`ready`, `pending`, or `failed`). When ready, it also returns the summary text, `session_id`, `generated_at`, and `updated_at`; those artifact fields may be null while pending or failed. No generation record returns `404`.

## Session Checklist

A session's visit type supplies its checklist. Clients read and update those existing items; they do not submit an arbitrary checklist for generation. The former checklist-generation POST is no longer part of the current contract.

{% openapi src="<https://scribe.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/sessions/{session\_id}/checklist" method="get" %}
<https://scribe.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

A checklist can be available before a transcript exists. A successful read includes `generation_status: "ready"`, the checklist title and status, and items with `id`, `label`, `category`, `state`, and optional evidence and provenance. Effective item state is `open` or `checked`. A session with no checklist returns `404`.

{% openapi src="<https://scribe.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/sessions/{session\_id}/checklist" method="patch" %}
<https://scribe.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

Submit 1-100 toggles using IDs returned by the GET. `completed` is required; `source`, when supplied, must be `manual`.

```json
{
  "items": [
    { "id": "medications-reviewed", "completed": true, "source": "manual" }
  ]
}
```

The example ID must be replaced with one from the session's checklist. The response is the effective checklist, with item provenance and a recomputed status. An unknown item ID returns `422`, a missing checklist returns `404`, and a terminal session returns `409 invalid_session_state`.

{% openapi src="<https://scribe.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/sessions/{session\_id}/checklist/auto-check" method="post" %}
<https://scribe.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

Auto-check evaluates the checklist against the available canonical or partial transcript and returns per-item matches. It preserves manually decided items. If there is no checklist or usable transcript, the response can contain an empty `matches` array; that does not mean the checklist has been satisfied.

## Get Codes

{% openapi src="<https://scribe.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/sessions/{session\_id}/codes" method="get" %}
<https://scribe.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

Returns the session's code suggestions and provider-authored codes in `items`. Each item includes its ID, code, description, rationale, optional confidence, and review status. Treat these items as the current code list even while AI generation is pending or failed.

`generation_status` describes AI generation separately: `ready` when none has run or it has succeeded, `pending` while running, or `failed` with error information. An empty code list is valid. Review status (`suggested`, `accepted`, `rejected`, or `voided`) records the decision about an individual code; a confidence value is not an approval.

{% openapi src="<https://scribe.platform.amigo.ai/v1/openapi.json>" path="/v1/{workspace\_id}/sessions/{session\_id}/codes" method="post" %}
<https://scribe.platform.amigo.ai/v1/openapi.json>
{% endopenapi %}

Explicit code generation requires a mutable session and a non-empty transcript. It follows the same `202` pending or `200` reused-result pattern as summary generation. Read the GET endpoint for the current code list and generation state.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.concurrence.com/developer-guide/platform-api/scribe/artifacts.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
