Skip to Content

Attempt

18 endpoints

POST /api/v5/artifacts/attempt/get

Attempt Get

Get attempt detail with the canonical shared attempt bundle.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ attempt_id: `string` }

Response:

{ actor_name?: `string` | `null` attempt_exists?: `boolean` | `null` access_denied?: `boolean` | `null` attempt?: `AttemptData` | `null` simulation?: `SimulationData` | `null` timer?: `TimerData` | `null` aggregated_results?: `AggregatedResults` | `null` current_chat_index?: `integer` | `null` expected_chat_count?: `integer` | `null` is_active?: `boolean` | `null` is_lobby?: `boolean` | `null` show_results?: `boolean` | `null` should_show_controls?: `boolean` | `null` is_own_attempt?: `boolean` | `null` current_chat_id?: `string` | `null` has_messages?: `boolean` available_continuation_options?: `AvailableContinuationOptions` | `null` rubric_structure?: `RubricStructureData` | `null` training_id?: `string` | `null` chat_entry_id?: `string` | `null` ... }

POST /api/v5/artifacts/attempt/archive

Archive Attempts

Bulk archive or unarchive attempts (simulation or benchmark).

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ archived: `boolean` attempt_ids?: `string`[] | `null` start_date?: `string` | `null` end_date?: `string` | `null` cohort_ids?: `string`[] | `null` department_ids?: `string`[] | `null` simulation_ids?: `string`[] | `null` scenario_ids?: `string`[] | `null` profile_ids_filter?: `string`[] | `null` infinite_mode?: `boolean` | `null` }

Response:

{ updated_count?: `integer` profile_ids_to_invalidate?: `string`[] | `null` }

POST /api/v5/artifacts/attempt/refresh

Attempt Refresh

Refresh attempt materialized views and invalidate caches.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Response:

{ success: `boolean` refreshed_views: `string`[] invalidated_tags: `string`[] }

POST /api/v5/artifacts/attempt/docs

Get Attempt Docs Endpoint

Get composed documentation for the attempt analytics.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ entity_id?: `string` | `null` }

Response:

{ name: `string` type: `string` description: `string` artifact?: `DocsResponse` | `null` entries: `DocsResponse`[] resources: `DocsResponse`[] permissions: `OperationInfo`[] api_operations: `OperationInfo`[] page_metadata?: `DocsApiResponse` | `null` }

POST /api/v5/artifacts/attempt/export

Export Attempt

Export attempt data as a clean, denormalized ZIP.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ attempt_id: `string` }

Response:

{ upload_id: `string` file_name: `string` row_count: `integer` }

POST /api/v5/artifacts/attempt/start

Start Attempt

Create a new attempt using the canonical internal attempt orchestration.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ home_id?: `string` | `null` practice_id?: `string` | `null` infinite_mode?: `boolean` }

Response:

{ attempt_id: `string` chat_entry_id?: `string` | `null` attempt_chat_id?: `string` | `null` }

POST /api/v5/artifacts/attempt/next

Next Attempt

Proceed to the next scenario in an existing attempt.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ attempt_id: `string` draft_id?: `string` | `null` }

Response:

{ attempt_id: `string` chat_id: `string` }

POST /api/v5/artifacts/attempt/end

End Attempt

End a single chat within an attempt.

Browser client: sends grade=True, internal AI generates full grade. Agent: can optionally provide score, feedbacks, strengths, etc. to skip AI.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ attempt_id: `string` chat_id: `string` grade?: `boolean` score?: `integer` | `null` passed?: `boolean` | `null` time_taken?: `integer` | `null` feedbacks?: `AttemptGradeFeedbackEntry`[] | `null` strengths?: `AttemptGradeStrengthEntry`[] | `null` improvements?: `AttemptGradeImprovementEntry`[] | `null` analyses?: `AttemptGradeAnalysisEntry`[] | `null` highlights?: `AttemptGradeHighlightEntry`[] | `null` replacements?: `AttemptGradeReplacementEntry`[] | `null` }

Response:

{ chat_id: `string` is_attempt_finished?: `boolean` | `null` grade_id?: `string` | `null` score?: `integer` | `null` passed?: `boolean` | `null` }

POST /api/v5/artifacts/attempt/end-all

End All Attempt

End all remaining chats in an attempt.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ attempt_id: `string` }

Response:

{ attempt_id: `string` success: `boolean` all_scenarios_complete?: `boolean` message?: `string` | `null` }

POST /api/v5/artifacts/attempt/message

Attempt Message

Send a message in an attempt chat.

Browser client: sends message only, internal AI generates response + hints. Agent: can optionally provide assistant_content, hints, contents to skip AI.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ attempt_id: `string` chat_id: `string` message: `string` parent_message_id?: `string` | `null` assistant_content?: `string` | `null` hints?: `HintEntry-Input`[] | `null` contents?: `ContentEntry-Input`[] | `null` }

Response:

{ chat_id: `string` user_message_id?: `string` | `null` assistant_message_id?: `string` | `null` assistant_content?: `string` | `null` hints?: `object`[] | `null` }

POST /api/v5/artifacts/attempt/grade

Attempt Grade

Trigger grading for an attempt chat.

Browser client: sends chat_id only, internal AI generates full grade. Agent: can optionally provide score, feedbacks, strengths, etc. to skip AI.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ attempt_id: `string` chat_id?: `string` | `null` resource_types?: `string`[] | `null` user_instructions?: `string`[] | `null` score?: `integer` | `null` passed?: `boolean` | `null` time_taken?: `integer` | `null` feedbacks?: `AttemptGradeFeedbackEntry`[] | `null` strengths?: `AttemptGradeStrengthEntry`[] | `null` improvements?: `AttemptGradeImprovementEntry`[] | `null` analyses?: `AttemptGradeAnalysisEntry`[] | `null` highlights?: `AttemptGradeHighlightEntry`[] | `null` replacements?: `AttemptGradeReplacementEntry`[] | `null` }

Response:

{ chat_id: `string` grade_id?: `string` | `null` score?: `integer` | `null` passed?: `boolean` | `null` }

POST /api/v5/artifacts/attempt/stop

Attempt Stop

Stop message generation for an attempt chat.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ chat_id: `string` }

Response:

{ chat_id: `string` success: `boolean` message?: `string` | `null` }

POST /api/v5/artifacts/attempt/response

Attempt Response

Submit a video question response.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ chat_id: `string` question_id: `string` option_ids: `string`[] }

Response:

{ success: `boolean` message?: `string` | `null` is_correct?: `boolean` | `null` response_id?: `string` | `null` }

POST /api/v5/artifacts/attempt/use-previous

Attempt Use Previous

Copy grades from a previous attempt’s chats.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ attempt_id: `string` previous_chat_map: `object` }

Response:

{ success: `boolean` message?: `string` | `null` }

POST /api/v5/artifacts/attempt/audio/start

Attempt Audio Start

Start an audio session for an attempt chat.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ chat_id: `string` }

Response:

{ chat_id: `string` run_id: `string` group_id: `string` attempt_id: `string` }

POST /api/v5/artifacts/attempt/audio/frame

Attempt Audio Frame

Push audio bytes from an uploaded file into the session queue.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ chat_id: `string` upload_id: `string` }

Response:

{ accepted: `boolean` }

POST /api/v5/artifacts/attempt/audio/stop

Attempt Audio Stop

Stop an audio session for an attempt chat.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ chat_id: `string` }

Response:

{ chat_id: `string` stopped?: `boolean` }

POST /api/v5/artifacts/attempt/search

Search Attempt

Search attempts — composable infra architecture.

Parameters:

NameInRequiredDescription
X-Api-KeyheaderNo
authorizationheaderNo
X-MCPheaderNo

Request body:

{ search?: `string` | `null` simulation_ids?: `string`[] | `null` department_ids?: `string`[] | `null` practice?: `boolean` | `null` is_archived?: `boolean` | `null` infinite_mode?: `boolean` | `null` start_date?: `string` | `null` end_date?: `string` | `null` simulation_search?: `string` | `null` department_search?: `string` | `null` page_size?: `integer` page_offset?: `integer` }

Response:

{ actor_name?: `string` | `null` attempts?: `SearchAttemptItem`[] | `null` simulation_filter?: `ListFilterSection` | `null` department_filter?: `ListFilterSection` | `null` total_count?: `integer` | `null` }

Last updated on