curl --request GET \
--url https://api.video2ctx.dev/v1/agent/{sessionId}/runs/{runId} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.video2ctx.dev/v1/agent/{sessionId}/runs/{runId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.video2ctx.dev/v1/agent/{sessionId}/runs/{runId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"runId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"userMessageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentMessageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"conversationTurn": 2,
"modelStepCount": 1,
"toolCallCount": 1,
"status": "pending",
"route": {
"route": "topic_research",
"researchBreadth": "focused",
"searchQuery": "<string>",
"useStoryboard": true,
"answerDetail": "standard"
},
"result": {
"runId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"userMessageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentMessageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"answer": "<string>",
"intent": "topic_research",
"confidence": "high",
"citations": [
{
"id": "<string>",
"sourceId": "<string>",
"provider": "<string>",
"excerpt": "<string>",
"videoId": "<string>",
"channelId": "<string>",
"playlistId": "<string>",
"title": "<string>",
"url": "<string>",
"startMs": 1,
"endMs": 1
}
],
"artifacts": [
{
"type": "<string>",
"data": {},
"title": "<string>"
}
],
"warnings": [
{
"code": "<string>",
"message": "<string>"
}
],
"billing": {
"creditsCharged": 1,
"creditsRemaining": 1
}
},
"error": "<string>",
"extractionDiagnostics": [
{
"version": 1,
"kind": "storyboard",
"videoId": "<string>",
"extractionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"attempt": 3,
"slot": 1,
"recordedAt": 4503599627370495,
"elapsedMs": 4503599627370495.5,
"outcome": "success",
"capture": "available",
"events": [
{
"stage": "player",
"profile": "IOS",
"outcome": "selected",
"playabilityStatus": "OK",
"specState": "valid",
"code": "INVALID_INPUT",
"inputFormat": "webp",
"outputFormat": "webp",
"status": 349,
"elapsedMs": 4503599627370495.5,
"timestampMs": 4503599627370495,
"candidateIndex": 4503599627370495,
"candidateCount": 4503599627370495,
"attempt": 4503599627370495,
"delayMs": 4503599627370495.5,
"sheetCount": 4503599627370495,
"width": 4503599627370495,
"height": 4503599627370495,
"sourceWidth": 4503599627370495,
"sourceHeight": 4503599627370495,
"formatId": 4503599627370495,
"inputBytes": 4503599627370495,
"outputBytes": 4503599627370495,
"exitCode": 0
}
],
"droppedEvents": 4503599627370495,
"toolCallId": "<string>",
"backend": "worker",
"egress": "direct",
"status": 349,
"failureKind": "timeout"
}
],
"extractionDiagnosticsTruncated": true,
"transcriptDiagnostics": [
{
"version": 1,
"stage": "transcript_analysis",
"videoId": "<string>",
"modelCallId": "<string>",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"attempt": 1,
"recordedAt": 123,
"outcome": "started",
"elapsedMs": 1,
"code": "GROUNDING_REJECTED",
"finishReason": "<string>",
"modelId": "<string>",
"inputTokens": 1,
"outputTokens": 1,
"cancellationReason": "<string>",
"statusCode": 123,
"issues": [
{
"code": "ENTITY_NOT_SUPPORTED",
"message": "<string>",
"findingIndex": 4503599627370495,
"fieldIndex": 4503599627370495,
"windowIndex": 4503599627370495
}
],
"issueCount": 4503599627370495,
"repairFeedback": "<string>",
"rejectedOutput": "<string>",
"sourceContext": {
"title": "<string>",
"channel": "<string>"
},
"sourceWindows": [
{
"index": 0,
"startMs": 123,
"endMs": 123,
"text": "<string>"
}
],
"captureTruncated": true
}
]
}{
"error": {
"code": "QUERY_REQUIRED",
"message": "<string>",
"details": "<unknown>",
"requestId": "<string>"
}
}{
"error": {
"code": "QUERY_REQUIRED",
"message": "<string>",
"details": "<unknown>",
"requestId": "<string>"
}
}{
"error": {
"code": "QUERY_REQUIRED",
"message": "<string>",
"details": "<unknown>",
"requestId": "<string>"
}
}{
"error": {
"code": "QUERY_REQUIRED",
"message": "<string>",
"details": "<unknown>",
"requestId": "<string>"
}
}{
"error": {
"code": "QUERY_REQUIRED",
"message": "<string>",
"details": "<unknown>",
"requestId": "<string>"
}
}{
"error": {
"code": "QUERY_REQUIRED",
"message": "<string>",
"details": "<unknown>",
"requestId": "<string>"
}
}Get a durable agent run
Reads the current status and, once complete, the persisted result from the conversation-scoped Durable Object.
curl --request GET \
--url https://api.video2ctx.dev/v1/agent/{sessionId}/runs/{runId} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.video2ctx.dev/v1/agent/{sessionId}/runs/{runId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.video2ctx.dev/v1/agent/{sessionId}/runs/{runId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"runId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"userMessageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentMessageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"conversationTurn": 2,
"modelStepCount": 1,
"toolCallCount": 1,
"status": "pending",
"route": {
"route": "topic_research",
"researchBreadth": "focused",
"searchQuery": "<string>",
"useStoryboard": true,
"answerDetail": "standard"
},
"result": {
"runId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"userMessageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentMessageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"answer": "<string>",
"intent": "topic_research",
"confidence": "high",
"citations": [
{
"id": "<string>",
"sourceId": "<string>",
"provider": "<string>",
"excerpt": "<string>",
"videoId": "<string>",
"channelId": "<string>",
"playlistId": "<string>",
"title": "<string>",
"url": "<string>",
"startMs": 1,
"endMs": 1
}
],
"artifacts": [
{
"type": "<string>",
"data": {},
"title": "<string>"
}
],
"warnings": [
{
"code": "<string>",
"message": "<string>"
}
],
"billing": {
"creditsCharged": 1,
"creditsRemaining": 1
}
},
"error": "<string>",
"extractionDiagnostics": [
{
"version": 1,
"kind": "storyboard",
"videoId": "<string>",
"extractionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"attempt": 3,
"slot": 1,
"recordedAt": 4503599627370495,
"elapsedMs": 4503599627370495.5,
"outcome": "success",
"capture": "available",
"events": [
{
"stage": "player",
"profile": "IOS",
"outcome": "selected",
"playabilityStatus": "OK",
"specState": "valid",
"code": "INVALID_INPUT",
"inputFormat": "webp",
"outputFormat": "webp",
"status": 349,
"elapsedMs": 4503599627370495.5,
"timestampMs": 4503599627370495,
"candidateIndex": 4503599627370495,
"candidateCount": 4503599627370495,
"attempt": 4503599627370495,
"delayMs": 4503599627370495.5,
"sheetCount": 4503599627370495,
"width": 4503599627370495,
"height": 4503599627370495,
"sourceWidth": 4503599627370495,
"sourceHeight": 4503599627370495,
"formatId": 4503599627370495,
"inputBytes": 4503599627370495,
"outputBytes": 4503599627370495,
"exitCode": 0
}
],
"droppedEvents": 4503599627370495,
"toolCallId": "<string>",
"backend": "worker",
"egress": "direct",
"status": 349,
"failureKind": "timeout"
}
],
"extractionDiagnosticsTruncated": true,
"transcriptDiagnostics": [
{
"version": 1,
"stage": "transcript_analysis",
"videoId": "<string>",
"modelCallId": "<string>",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"attempt": 1,
"recordedAt": 123,
"outcome": "started",
"elapsedMs": 1,
"code": "GROUNDING_REJECTED",
"finishReason": "<string>",
"modelId": "<string>",
"inputTokens": 1,
"outputTokens": 1,
"cancellationReason": "<string>",
"statusCode": 123,
"issues": [
{
"code": "ENTITY_NOT_SUPPORTED",
"message": "<string>",
"findingIndex": 4503599627370495,
"fieldIndex": 4503599627370495,
"windowIndex": 4503599627370495
}
],
"issueCount": 4503599627370495,
"repairFeedback": "<string>",
"rejectedOutput": "<string>",
"sourceContext": {
"title": "<string>",
"channel": "<string>"
},
"sourceWindows": [
{
"index": 0,
"startMs": 123,
"endMs": 123,
"text": "<string>"
}
],
"captureTruncated": true
}
]
}{
"error": {
"code": "QUERY_REQUIRED",
"message": "<string>",
"details": "<unknown>",
"requestId": "<string>"
}
}{
"error": {
"code": "QUERY_REQUIRED",
"message": "<string>",
"details": "<unknown>",
"requestId": "<string>"
}
}{
"error": {
"code": "QUERY_REQUIRED",
"message": "<string>",
"details": "<unknown>",
"requestId": "<string>"
}
}{
"error": {
"code": "QUERY_REQUIRED",
"message": "<string>",
"details": "<unknown>",
"requestId": "<string>"
}
}{
"error": {
"code": "QUERY_REQUIRED",
"message": "<string>",
"details": "<unknown>",
"requestId": "<string>"
}
}{
"error": {
"code": "QUERY_REQUIRED",
"message": "<string>",
"details": "<unknown>",
"requestId": "<string>"
}
}Authorizations
Permanent personal API key created in the dashboard. Example: curl -H "Authorization: Bearer aty_…" https://your-host/v1/projects
Path Parameters
Session UUID returned by agent admission.
1Agent run UUID returned by agent admission.
1Query Parameters
Compact is the default: answer, deduplicated sources, outcome, and top-level billing. Use legacy explicitly for the previous detailed format. Applies only to this HTTP response. Does not change execution.
legacy, compact Optional comma-separated details: artifacts,evidence,diagnostics. Requires responseFormat=compact. Evidence sourceId points to result.sources[].id. Details are omitted unless requested.
100"evidence,diagnostics"
Response
Current agent run state. Compact results distinguish answered, partial, insufficient_evidence, needs_clarification, and rejected; completed describes execution, not evidence quality or scope acceptance.
- Option 1
- Option 2
Stable identifier assigned to the admitted user message.
Stable identifier reserved for the agent response.
One-based position of this user and assistant turn within the conversation.
x >= 1Completed model steps in the main Agent Core loop. Classifier, transcript analyst, repair, and timeout-finalizer calls are excluded.
x >= 0Persisted tool calls for this run, including completed, failed, and finalization calls.
x >= 0pending, running, completed, failed, cancelled - Option 1
- Option 2
- Option 3
- Option 4
Show child attributes
Show child attributes
Show child attributes
Show child attributes
64Show child attributes
Show child attributes
Show child attributes
Show child attributes