---
title: "Update Completion"
method: POST
path: "/api/v2/projects/{project_id}/completions/{completion_id}"
tags: ["Observability"]
---

# Update Completion

`POST /api/v2/projects/{project_id}/completions/{completion_id}`

Append messages or evaluation results to an existing completion. Use for streaming responses or adding post-hoc evaluation metrics.

## Path parameters

- `project_id` string, required
- `completion_id` string, required

## Request body

- object
  - `new_messages` union
    - union[]
      - union
        - OpenAISystemMessage
          - `content` string, required
          - `role` 'system'
        - OpenAIDeveloperMessage
          - `content` string, required
          - `role` 'developer'
        - OpenAIUserMessage
          - `content` union, required
            - string
            - union[]
              - …
          - `role` 'user'
        - OpenAIAssistantMessage
          - `content` union
            - string
            - union[]
              - …
            - OpenAITextBlock[]
              - …
            - OpenAIRefusalBlock
              - …
          - `name` string, nullable
          - `audio` OpenAIAudio
            - `id` string, required
            - `data` string, nullable
            - `transcript` string, nullable
          - `refusal` string, nullable
          - `tool_calls` OpenAIToolCall[], nullable
            - `id` string, required
            - `function` OpenAIFunction, required
              - …
            - `type` 'function'
          - `role` 'assistant'
        - OpenAIToolMessage
          - `content` union, required
            - string
            - union[]
              - …
          - `tool_call_id` string, required
          - `role` 'tool'
    - AnthropicMessage[]
      - `content` union, required
        - string
        - union[]
          - union
            - AnthropicTextBlock
              - …
            - AnthropicImageBlock
              - …
            - AnthropicFileBlock
              - …
            - AnthropicToolUseBlock
              - …
            - AnthropicToolResultBlock
              - …
      - `role` 'user' | 'assistant', required
    - SimpleProviderMessage[]
      - `role` union, required
        - 'system'
        - 'developer'
        - 'user'
        - 'assistant'
      - `content` string, required
    - VertexMessage[]
      - `parts` union[], required
        - union
          - VertexTextPart
            - `text` string, required
          - VertexInlineDataPart
            - `inlineData` VertexInlineData, required
              - …
          - VertexFunctionCallPart
            - `functionCall` VertexFunctionCall, required
              - …
            - `thoughtSignature` string, nullable
          - VertexFunctionResponsePart
            - `functionResponse` VertexFunctionResponse, required
              - …
      - `role` 'model' | 'user'
    - BedrockConverseMessage[]
      - `role` 'user' | 'assistant', required
      - `content` union[], required
        - union
          - BedrockTextBlock
            - `text` string, required
            - `type` 'text'
          - BedrockJsonBlock
            - `json` union, required
              - …
            - `type` 'json'
          - BedrockImageBlock
            - `image` BedrockImageContent, required
              - …
            - `type` 'image'
          - BedrockDocumentBlock
            - `document` BedrockDocumentContent, required
              - …
            - `type` 'document'
          - BedrockToolUseBlock
            - `toolUse` BedrockToolUseBlockContent, required
              - …
            - `type` 'toolUse'
          - BedrockToolResultBlock
            - `toolResult` BedrockToolResultBlockContent, required
              - …
            - `type` 'toolResult'
    - union[]
      - union
        - union
          - OpenAIResponsesMessageItem
            - `role` 'user' | 'system' | 'developer' | 'assistant', required
            - `content` union, required
              - …
            - `id` string, nullable
            - `status` string, nullable
            - `type` 'message'
          - OpenAIResponsesFunctionCallItem
            - `name` string, required
            - `arguments` string, required
            - `call_id` string, nullable
            - `id` string, nullable
            - `status` string, nullable
            - `type` 'function_call'
          - OpenAIResponsesFunctionCallOutputItem
            - `output` string, required
            - `call_id` string, nullable
            - `id` string, nullable
            - `type` 'function_call_output'
          - OpenAIResponsesReasoningItem
            - `id` string, nullable
            - `summary` JSONValue[], nullable
              - …
            - `type` 'reasoning'
          - OpenAIResponsesBuiltinToolItem
            - `type` string, required
            - `id` string, nullable
            - `status` string, nullable
        - SimpleProviderMessage
          - `role` union, required
            - 'system'
            - 'developer'
            - 'user'
            - 'assistant'
          - `content` string, required
  - `eval_results` object, nullable

## Response `200`

RecordCompletionInfo(completion_id: uuid.UUID = FieldInfo(annotation=NoneType, required=True, description='The session entry ID'))

- object
  - `completion_id` string, uuid, required — The session entry ID

---

[API](https://skmtc.net/freeplay/apis/freeplay-api.md) · [All operations](https://skmtc.net/freeplay/apis/freeplay-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/freeplay/freeplay-api/revisions/69c553220183/schema)
