Download OpenAPI specification:
Goal Mode API for intelligent multi-destination content processing.
workflowId + fileIds (bypasses NLP)goalText + fileIds (NLP resolves workflow)x-websocket-events (replaces deprecated SSE path retired in Phase 7.4)Some workflows use pause_after checkpoints to pause execution mid-pipeline
and collect user input before continuing. The flow is:
slot_needed with checkpointId and stepOutputPreviewExample: resume_to_job_ready (3-phase interactive workflow)
Return every ToolUsageSample row written for this job, sorted
chronologically by startedAt. Mirrors the live WebSocket
tool_started / tool_finished stream so clients can re-hydrate
the audit timeline after reconnection or for historical views.
Ownership: the authenticated user (or the anonymous session that submitted the job) is the only caller who can read the rows. Admins are NOT specially privileged via this endpoint — role- based admin read is deferred.
Cursor-paginated; the server enforces limit <= 200.
| jobSpecId required | string Example: goal_abc123 Goal job specification ID (mirrored into |
| cursor | string Opaque continuation token returned by a prior page's |
| limit | integer [ 1 .. 200 ] Default: 50 Max rows per page (1-200, default 50). |
| specialistSpanId | string <uuid> Filter to tool calls issued inside this specialist span only. |
| declared | boolean Filter to only declared (true) or only extra (false) tools. |
{- "items": [
- {
- "schemaVersion": 2,
- "invocationId": "e9725468-0858-4dbb-af72-1e49c8254d68",
- "jobSpecId": "00000000-0000-0000-0000-000000000001",
- "workflowSpecId": "string",
- "runId": "78c33d18-170c-44d3-a227-b3194f134f73",
- "toolRef": "doc-parser-mcp:extract_text",
- "declared": true,
- "nodeName": "specialist:data_engineer",
- "agentRole": "data_engineer",
- "specialistSpanId": "2cf6f064-da8e-4a47-be02-5d018b9f7164",
- "stepName": "string",
- "status": "started",
- "success": true,
- "startedAt": "2019-08-24T14:15:22Z",
- "finishedAt": "2019-08-24T14:15:22Z",
- "durationMs": 0,
- "costMicroU": 5000,
- "argsSummary": "string",
- "argsRef": "string",
- "outputSummary": "string",
- "outputRef": "string",
- "outputDigest": "string",
- "errorCode": "validation_failed",
- "errorMessage": "string"
}
], - "nextCursor": "string"
}Return every HandoffRecord emitted during the run, in chronological
order. Read from the live workflow checkpoint (MultiAgentEnvelope. handoff_history). Review-backlog consumers filter by
reasonCode == "human_review_required" client-side.
Tier 3 minimum-viable observability; cross-job rollup ships in a later tier when handoff events denormalise onto the audit table.
| jobSpecId required | string |
{- "items": [
- {
- "from_role": "string",
- "to_role": "string",
- "reason_code": "string",
- "reason_detail": "string",
- "ts": "2019-08-24T14:15:22Z"
}
]
}Return every ExceptionTicket produced by the run, as stored on
the live workflow checkpoint (MultiAgentEnvelope.exception_queue).
Review surfaces group by severity from the taxonomy bundle; no
cross-job rollup today.
| jobSpecId required | string |
{- "items": [
- {
- "ticket_id": "string",
- "exception_type": "string",
- "taxonomy_version": "string",
- "severity": "low",
- "affected_rows": [
- { }
], - "suggested_resolution": "string",
- "requires_human": true
}
]
}Aggregate ToolUsageSample.cost_micro_u per agent_role for
every sample written against this workflow. Legacy rows with
agent_role = null surface under the "unattributed" bucket.
Authenticated owners only (404 on missing OR non-owner to avoid
enumerating workflow ids).
| workflowId required | string UserWorkflow id the caller owns. |
{- "items": [
- {
- "agentRole": "string",
- "totalMicroU": 0,
- "toolCount": 0,
- "avgMicroU": 0
}
]
}Return one row per SpecialistOutcome persisted for this run, so
the dashboard can reconstruct the delegation timeline (which
specialist held, which escalated, how long each ran). runId
is the Goal job spec id — authorization uses the same matrix as
/audit/jobs/{id}/tool-invocations.
| runId required | string Goal job spec id. |
{- "items": [
- {
- "agentRole": "string",
- "specialistSpanId": "string",
- "outcome": "pass",
- "handoffReasonCode": "string",
- "durationMs": 0,
- "startedAt": "2019-08-24T14:15:22Z",
- "finishedAt": "2019-08-24T14:15:22Z"
}
]
}Merge ToolUsageSampleRepository.failure_rates_by_specialist +
avg_duration_by_specialist into one row per specialist so the
dashboard renders a single list without a client-side join.
Rows with only failure data (legacy samples without duration_ms)
still appear with zeroed duration stats.
| workflowId required | string |
{- "items": [
- {
- "agentRole": "string",
- "successCount": 0,
- "holdCount": 0,
- "timeoutCount": 0,
- "otherFailureCount": 0,
- "total": 0,
- "successRate": 1,
- "holdRate": 1,
- "timeoutRate": 1,
- "meanMs": 0,
- "p50Ms": 0,
- "p95Ms": 0,
- "count": 0
}
]
}List goal lane sessions for the authenticated user. Paginated, newest first. Requires authentication.
| status | string (GoalJobStatus) Enum: "draft" "created" "analyzing" "slots_pending" "ready" "ready_with_preview" "confirmed" "queued" "executing" "completed" "partial" "failed" "cancelled" Filter sessions by job status |
| limit | integer [ 1 .. 50 ] Default: 20 Maximum number of sessions to return (1-50) |
| cursor | string Pagination cursor from previous response |
{- "sessions": [
- {
- "jobSpecId": "string",
- "status": "draft",
- "goalText": "string",
- "useCaseType": "string",
- "progress": 100,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z"
}
], - "total": 0,
- "nextCursor": "string"
}Create a new Goal Mode job.
Primary flow (Workflow Selection):
Provide workflowId from the catalog — bypasses NLP and routes directly
to the selected workflow. This is the recommended path for the UI.
Alternative flow (Natural Language):
Provide goalText — the system uses NLP to resolve the target workflow.
The system will:
| goalText | string [ 3 .. 2000 ] characters Natural language goal description. Required when workflowId is not provided. |
| workflowId | string or null Explicit workflow ID from the catalog.
When provided, bypasses NLP resolution and routes directly to the workflow.
Mutually exclusive with |
| userWorkflowId | string or null^uw_[a-zA-Z0-9_-]+$ User-authored workflow ID (from the User Workflows Builder). When provided, the server loads the UserWorkflow, compiles it to a DestinationSpec, and runs it through the same Goal Lane agent. Contract guarantees (enforced by the compiler, not this endpoint):
Mutually exclusive with |
| fileIds | Array of strings Default: [] List of uploaded file IDs to process. Required (minItems: 1) when workflowId is not provided. May be empty for workflow-based jobs that collect files via checkpoints. |
{- "workflowId": "goal_lane.video_subtitle",
- "fileIds": [
- "file_abc123"
]
}{- "jobSpecId": "string",
- "itemVersion": 0,
- "attemptId": "6a4e12b7-3c5d-4f9a-a8d2-58b1c9a4a9d1",
- "goalText": "string",
- "fileIds": [
- "string"
], - "status": "draft",
- "progress": 100,
- "resolvedDestinations": [
- {
- "destinationId": "social_publish.instagram.reel",
- "confidence": 0.92,
- "matchReason": "Matched keyword 'IG' in goal text",
- "requiresDisambiguation": false
}
], - "pendingSlots": [
- {
- "slotId": "aspect_handling",
- "slotType": "text",
- "question": "如何處理影片長寬比?",
- "options": [
- "保持原比例",
- "裁切成9:16",
- "縮放並填充"
], - "default": null,
- "required": true,
- "hidden": false,
- "isDisambiguation": false,
- "config": { },
- "suggestedValue": null,
- "suggestedConfidence": 1,
- "suggestedSource": "string"
}
], - "filledSlots": { },
- "pendingInterrupts": [
- {
- "interruptId": "7f2c9a10-3e4b-4d9f-93b0-58b1c9a4a9d1",
- "interruptType": "slot_fill",
- "ownerPath": "root.request_input",
- "uiSurface": "slot_panel",
- "payload": { },
- "status": "pending"
}
], - "preflightResult": {
- "passed": true,
- "errors": [ ],
- "warnings": [ ]
}, - "tasks": [
- {
- "taskId": "task_abc123",
- "destinationId": "social_publish.instagram.reel",
- "status": "pending",
- "progress": 100,
- "specVersion": "1.0.0",
- "dag": [
- {
- "stepId": "string",
- "stepOrder": 0,
- "stepType": "video_transcode",
- "status": "pending",
- "progress": 100,
- "errorMessage": "string"
}
], - "outputArtifacts": [ ],
- "errorMessage": "string"
}
], - "useCaseType": "video_subtitle",
- "agentMessage": "string",
- "errorMessage": "string",
- "errorCode": "string",
- "deliveryMode": "verified_pipeline",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "startedAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "progressMessage": "string",
- "artifacts": [
- {
- "artifactId": "string",
- "fileName": "string",
- "mimeType": "string",
- "sizeBytes": 0,
- "artifactType": "video",
- "platform": "instagram_reel",
- "metadata": { },
- "isPrimary": false,
- "isPreview": false,
- "description": "string"
}
]
}Get aggregated usage statistics for the authenticated user's workflow sessions. Returns totals by status, breakdowns by workflow type, and session counts by date.
| from | string <date> Example: from=2026-01-01 Start date filter (ISO format, inclusive) |
| to | string <date> Example: to=2026-12-31 End date filter (ISO format, inclusive) |
{- "totalSessions": 0,
- "completed": 0,
- "failed": 0,
- "cancelled": 0,
- "byWorkflow": [
- {
- "workflowId": "string",
- "workflowName": "string",
- "count": 0
}
], - "byPeriod": [
- {
- "date": "2019-08-24",
- "count": 0
}
]
}Get the full current state of a Goal Mode job including pending slots, execution progress, tasks, and DAG steps.
For lightweight polling, use GET /jobs/goal/{jobSpecId}/status instead.
| jobSpecId required | string Example: goal_abc123 Goal job specification ID |
{- "jobSpecId": "string",
- "itemVersion": 0,
- "attemptId": "6a4e12b7-3c5d-4f9a-a8d2-58b1c9a4a9d1",
- "goalText": "string",
- "fileIds": [
- "string"
], - "status": "draft",
- "progress": 100,
- "resolvedDestinations": [
- {
- "destinationId": "social_publish.instagram.reel",
- "confidence": 0.92,
- "matchReason": "Matched keyword 'IG' in goal text",
- "requiresDisambiguation": false
}
], - "pendingSlots": [
- {
- "slotId": "aspect_handling",
- "slotType": "text",
- "question": "如何處理影片長寬比?",
- "options": [
- "保持原比例",
- "裁切成9:16",
- "縮放並填充"
], - "default": null,
- "required": true,
- "hidden": false,
- "isDisambiguation": false,
- "config": { },
- "suggestedValue": null,
- "suggestedConfidence": 1,
- "suggestedSource": "string"
}
], - "filledSlots": { },
- "pendingInterrupts": [
- {
- "interruptId": "7f2c9a10-3e4b-4d9f-93b0-58b1c9a4a9d1",
- "interruptType": "slot_fill",
- "ownerPath": "root.request_input",
- "uiSurface": "slot_panel",
- "payload": { },
- "status": "pending"
}
], - "preflightResult": {
- "passed": true,
- "errors": [ ],
- "warnings": [ ]
}, - "tasks": [
- {
- "taskId": "task_abc123",
- "destinationId": "social_publish.instagram.reel",
- "status": "pending",
- "progress": 100,
- "specVersion": "1.0.0",
- "dag": [
- {
- "stepId": "string",
- "stepOrder": 0,
- "stepType": "video_transcode",
- "status": "pending",
- "progress": 100,
- "errorMessage": "string"
}
], - "outputArtifacts": [ ],
- "errorMessage": "string"
}
], - "useCaseType": "video_subtitle",
- "agentMessage": "string",
- "errorMessage": "string",
- "errorCode": "string",
- "deliveryMode": "verified_pipeline",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "startedAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "progressMessage": "string",
- "artifacts": [
- {
- "artifactId": "string",
- "fileName": "string",
- "mimeType": "string",
- "sizeBytes": 0,
- "artifactType": "video",
- "platform": "instagram_reel",
- "metadata": { },
- "isPrimary": false,
- "isPreview": false,
- "description": "string"
}
]
}Delete a goal job session. Only terminal sessions (completed, failed, cancelled, partial) can be deleted. Sessions that are currently executing or queued cannot be deleted.
| jobSpecId required | string Example: goal_abc123 Goal job specification ID |
{- "error": "INVALID_REQUEST",
- "message": "string",
- "details": { }
}Fill pending slot values for a Goal Mode job.
This endpoint implements the resume continuation semantic
(see docs/engineering/goal_lane_retry_semantics.md): the
agent was paused at a HITL interrupt, the user answers, and
the agent picks up from the exact step it paused at. Same
job_spec_id, same attempt_id, same checkpoint.
Use this endpoint when:
slots_pending or ready_with_preview.pendingSlots or pendingInterrupts (P0-3 shape) is
non-empty.Do NOT use this endpoint for: retrying after failure (use
/retry), or starting fresh (not supported — would return
501 on /retry with rerunMode=fresh_rerun).
Supports optimistic locking via expectedVersion field to prevent concurrent modification conflicts. If version mismatch occurs, returns 409 with current version.
| jobSpecId required | string Example: goal_abc123 Goal job specification ID |
required | Array of objects (SlotAnswer) non-empty List of slot answers |
| expectedVersion | integer or null Expected item version for optimistic locking |
{- "answers": [
- {
- "slotId": "aspect_handling",
- "value": "裁切成9:16"
}, - {
- "slotId": "include_audio",
- "value": true
}
], - "expectedVersion": 3
}{- "jobSpecId": "string",
- "itemVersion": 0,
- "attemptId": "6a4e12b7-3c5d-4f9a-a8d2-58b1c9a4a9d1",
- "goalText": "string",
- "fileIds": [
- "string"
], - "status": "draft",
- "progress": 100,
- "resolvedDestinations": [
- {
- "destinationId": "social_publish.instagram.reel",
- "confidence": 0.92,
- "matchReason": "Matched keyword 'IG' in goal text",
- "requiresDisambiguation": false
}
], - "pendingSlots": [
- {
- "slotId": "aspect_handling",
- "slotType": "text",
- "question": "如何處理影片長寬比?",
- "options": [
- "保持原比例",
- "裁切成9:16",
- "縮放並填充"
], - "default": null,
- "required": true,
- "hidden": false,
- "isDisambiguation": false,
- "config": { },
- "suggestedValue": null,
- "suggestedConfidence": 1,
- "suggestedSource": "string"
}
], - "filledSlots": { },
- "pendingInterrupts": [
- {
- "interruptId": "7f2c9a10-3e4b-4d9f-93b0-58b1c9a4a9d1",
- "interruptType": "slot_fill",
- "ownerPath": "root.request_input",
- "uiSurface": "slot_panel",
- "payload": { },
- "status": "pending"
}
], - "preflightResult": {
- "passed": true,
- "errors": [ ],
- "warnings": [ ]
}, - "tasks": [
- {
- "taskId": "task_abc123",
- "destinationId": "social_publish.instagram.reel",
- "status": "pending",
- "progress": 100,
- "specVersion": "1.0.0",
- "dag": [
- {
- "stepId": "string",
- "stepOrder": 0,
- "stepType": "video_transcode",
- "status": "pending",
- "progress": 100,
- "errorMessage": "string"
}
], - "outputArtifacts": [ ],
- "errorMessage": "string"
}
], - "useCaseType": "video_subtitle",
- "agentMessage": "string",
- "errorMessage": "string",
- "errorCode": "string",
- "deliveryMode": "verified_pipeline",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "startedAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "progressMessage": "string",
- "artifacts": [
- {
- "artifactId": "string",
- "fileName": "string",
- "mimeType": "string",
- "sizeBytes": 0,
- "artifactType": "video",
- "platform": "instagram_reel",
- "metadata": { },
- "isPrimary": false,
- "isPreview": false,
- "description": "string"
}
]
}Confirm the goal job configuration and start asynchronous execution.
Returns 202 Accepted - execution happens asynchronously. Use the polling endpoint or the WebSocket stream to track progress.
Flow:
A background worker picks up the queued job and runs the workflow.
Prerequisites:
Supports optimistic locking via expectedVersion field.
| jobSpecId required | string Example: goal_abc123 Goal job specification ID |
| expectedVersion | integer or null Expected item version for optimistic locking |
{- "expectedVersion": 5
}{- "jobSpecId": "goal_abc123",
- "status": "queued",
- "messageId": "msg_5f6e7d8c9b0a1",
- "submittedAt": "2019-08-24T14:15:22Z",
- "estimatedStartSeconds": 0,
- "pollingUrl": "/api/v1/jobs/goal/goal_abc123/status",
- "tasks": [
- {
- "taskId": "task_abc123",
- "destinationId": "social_publish.instagram.reel",
- "status": "pending",
- "progress": 100,
- "specVersion": "1.0.0",
- "dag": [
- {
- "stepId": "string",
- "stepOrder": 0,
- "stepType": "video_transcode",
- "status": "pending",
- "progress": 100,
- "errorMessage": "string"
}
], - "outputArtifacts": [ ],
- "errorMessage": "string"
}
]
}Retry a failed goal job by resetting it to READY and re-queuing
for execution. Do NOT call this for interrupt-resume — use
PATCH /slots for that.
Client decision tree (see also
docs/engineering/goal_lane_retry_semantics.md):
| Job status | Right endpoint | rerunMode |
|---|---|---|
slots_pending (user owes an answer) |
PATCH /slots |
n/a (always resume) |
failed (agent errored) |
POST /retry |
retry_same_thread (default) |
completed + user wants fresh start |
POST /retry with fresh_rerun |
returns 501 today |
| Any other status | do not continue — check status first | n/a |
Only jobs with status failed can be retried. The endpoint:
AttemptRecord to the job's history and
regenerates attempt_id (P0-4).rerunMode (P0-4 scaffold, optional body):
retry_same_thread (default): resume from the last
checkpoint on the same job_spec_id / thread_id. Matches
pre-P0-4 behaviour exactly.resume: same transport as retry_same_thread today.
Distinct name kept for the future taxonomy so clients can
signal "I explicitly wanted the paused-mid-execution
semantic" vs "I wanted to retry after failure". No server
divergence today.fresh_rerun: not implemented — returns 501. Product
gaps (result retention, support runbook) must close first.| jobSpecId required | string Example: goal_abc123 Goal job specification ID |
| rerunMode | string Default: "retry_same_thread" Enum: "resume" "retry_same_thread" "fresh_rerun" Which rerun semantic to apply. See docs/engineering/goal_lane_retry_semantics.md for the full resume / retry / rerun taxonomy. |
| reason | string or null <= 512 characters Optional operator-supplied note (stored on the attempt audit record) |
{- "rerunMode": "resume",
- "reason": "string"
}{- "jobSpecId": "goal_abc123",
- "status": "queued",
- "messageId": "msg_5f6e7d8c9b0a1",
- "submittedAt": "2019-08-24T14:15:22Z",
- "estimatedStartSeconds": 0,
- "pollingUrl": "/api/v1/jobs/goal/goal_abc123/status",
- "tasks": [
- {
- "taskId": "task_abc123",
- "destinationId": "social_publish.instagram.reel",
- "status": "pending",
- "progress": 100,
- "specVersion": "1.0.0",
- "dag": [
- {
- "stepId": "string",
- "stepOrder": 0,
- "stepType": "video_transcode",
- "status": "pending",
- "progress": 100,
- "errorMessage": "string"
}
], - "outputArtifacts": [ ],
- "errorMessage": "string"
}
]
}Get download URL for completed goal job results. Returns the primary artifact only.
Deprecated: Use GET /jobs/goal/{jobSpecId}/artifacts for multi-artifact support.
Only available when job status is COMPLETED or PARTIAL.
| jobSpecId required | string Example: goal_abc123 Goal job specification ID |
{- "fileName": "string",
- "sizeBytes": 0,
- "mimeType": "string",
- "expiresAt": "2019-08-24T14:15:22Z"
}Cancel a running or pending goal job.
Valid from states: draft, created, analyzing, slots_pending, ready, ready_with_preview, confirmed, queued, executing.
Terminal states (completed, partial, failed, cancelled) cannot be cancelled.
| jobSpecId required | string Example: goal_abc123 Goal job specification ID |
{- "jobSpecId": "string",
- "status": "cancelled"
}Get all output artifacts for a goal job with presigned download URLs.
Available when job status is COMPLETED or PARTIAL.
| jobSpecId required | string Example: goal_abc123 Goal job specification ID |
{- "artifacts": [
- {
- "artifactId": "string",
- "fileName": "string",
- "mimeType": "string",
- "sizeBytes": 0,
- "artifactType": "video",
- "platform": "instagram_reel",
- "metadata": { },
- "isPrimary": false,
- "isPreview": false,
- "description": "string"
}
], - "total": 0
}Get presigned download URL for a specific artifact.
| jobSpecId required | string Example: goal_abc123 Goal job specification ID |
| artifactId required | string Artifact identifier |
{- "fileName": "string",
- "sizeBytes": 0,
- "mimeType": "string",
- "expiresAt": "2019-08-24T14:15:22Z"
}Download multiple artifacts as a ZIP file.
If artifactIds is empty or omitted, all artifacts are included. Server packages them into a ZIP and returns a presigned URL.
| jobSpecId required | string Example: goal_abc123 Goal job specification ID |
| artifactIds | Array of strings Artifact IDs to include in the ZIP. If empty or omitted, all artifacts are included. |
{- "artifactIds": [
- "string"
]
}{- "fileName": "goal_abc123_artifacts.zip",
- "sizeBytes": 0,
- "mimeType": "application/zip",
- "expiresAt": "2019-08-24T14:15:22Z"
}Returns minimal status information for efficient polling.
Uses DynamoDB ProjectionExpression to minimize read costs. Response includes suggested polling interval based on job state.
Adaptive Polling:
| jobSpecId required | string Example: goal_abc123 Goal job specification ID |
{- "jobSpecId": "goal_abc123",
- "status": "draft",
- "progress": 100,
- "itemVersion": 0,
- "attemptId": "string",
- "tasksCompleted": 0,
- "tasksFailed": 0,
- "tasksTotal": 0,
- "errorMessage": "string",
- "progressMessage": "Analyzing resume structure...",
- "agentMessage": "string",
- "suggestedPollIntervalMs": 2000,
- "deliveryMode": "verified_pipeline",
- "pendingInterrupts": [
- {
- "interruptId": "7f2c9a10-3e4b-4d9f-93b0-58b1c9a4a9d1",
- "interruptType": "slot_fill",
- "ownerPath": "root.request_input",
- "uiSurface": "slot_panel",
- "payload": { },
- "status": "pending"
}
]
}Returns a list of available workflows that users can select directly, bypassing the NLP-based destination resolution.
Each workflow includes metadata for UI display: name, description, supported input types/formats, and required slot count.
{- "workflows": [
- {
- "workflowId": "goal_lane.video_subtitle",
- "name": "AI Video Subtitle Studio",
- "description": "Generate, enhance, translate, and burn subtitles into video — all in one workflow",
- "icon": "captions",
- "supportedInputTypes": [
- "video"
], - "supportedInputFormats": [
- "mp4",
- "mov",
- "avi",
- "mkv",
- "webm",
- "m4v"
], - "category": "goal_lane",
- "requiredSlotCount": 1,
- "subcategory": "Video Subtitle",
- "skuGroup": "Video Subtitle Workflow"
}, - {
- "workflowId": "goal_lane.subtitle_readability",
- "name": "Subtitle Readability Enhancement",
- "description": "Optimize subtitle readability with filler removal, reflow, and timing",
- "icon": "text-cursor",
- "supportedInputTypes": [
- "document",
- "video"
], - "supportedInputFormats": [
- "srt",
- "vtt",
- "ass",
- "mp4",
- "mov",
- "mkv"
], - "category": "goal_lane",
- "requiredSlotCount": 1,
- "subcategory": "Video Subtitle",
- "skuGroup": "Video Subtitle Workflow"
}, - {
- "workflowId": "goal_lane.subtitle_localization",
- "name": "Multi-Language Subtitle Localization",
- "description": "Translate subtitles to multiple languages with localization rules",
- "icon": "languages",
- "supportedInputTypes": [
- "document",
- "video"
], - "supportedInputFormats": [
- "srt",
- "vtt",
- "ass",
- "mp4",
- "mov",
- "mkv"
], - "category": "goal_lane",
- "requiredSlotCount": 2,
- "subcategory": "Video Subtitle",
- "skuGroup": "Video Subtitle Workflow"
}, - {
- "workflowId": "goal_lane.video_navigation",
- "name": "Video Content Navigation",
- "description": "Generate chapters, key moments, summary, and searchable index",
- "icon": "bookmark",
- "supportedInputTypes": [
- "video",
- "audio"
], - "supportedInputFormats": [
- "mp4",
- "mov",
- "mkv",
- "mp3",
- "wav",
- "m4a"
], - "category": "goal_lane",
- "requiredSlotCount": 1,
- "subcategory": "Video Subtitle",
- "skuGroup": "Video Subtitle Workflow"
}, - {
- "workflowId": "goal_lane.resume_to_job_ready",
- "name": "AI Job Search Assistant",
- "description": "Analyze resume, search and score matching jobs, generate tailored resumes for selected positions",
- "icon": "briefcase",
- "supportedInputTypes": [
- "document"
], - "supportedInputFormats": [
- "pdf",
- "docx"
], - "category": "goal_lane",
- "requiredSlotCount": 0,
- "subcategory": "Job Search",
- "skuGroup": "Job Search Workflow",
- "hasCheckpoints": true
}
], - "total": 15
}