Transcribe video or audio: pay per use, no API key
Use AssemblyAI from Claude, Claude Code, Cursor, ChatGPT, and other agents through one Cralo balance.
Return a timestamped transcript for a YouTube or Vimeo URL. Price is per minute of audio (official captions are free).
Price and execution
- Price
- $0.0025 / min
- Pricing model
- Per minute, billed on success
- Execution class
- queued
Limits
- Max Duration Seconds
- 7200
Parameters
Fields video.transcript accepts as JSON input.
urlstring (uri)OptionalPublic YouTube or Vimeo video URL; use this instead of `upload_id`.
languagestringOptionalSpoken-language code, or `auto` to detect it automatically.
upload_idstringOptionalCralo upload identifier for an audio or video file; use this instead of `url`.
duration_secondsnumberOptionalMedia duration in seconds, required to quote transcription of an uploaded file.
use_official_transcriptbooleanOptionalPrefer official platform captions when available; only valid with `url`.
Raw input JSON Schema
{
"not": {
"required": [
"url",
"upload_id"
]
},
"type": "object",
"allOf": [
{
"if": {
"required": [
"upload_id"
]
},
"then": {
"properties": {
"use_official_transcript": {
"const": false
}
}
}
}
],
"anyOf": [
{
"required": [
"url"
]
},
{
"required": [
"upload_id"
]
}
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"pattern": "^https?://",
"description": "Public YouTube or Vimeo video URL; use this instead of `upload_id`."
},
"language": {
"type": "string",
"default": "auto",
"description": "Spoken-language code, or `auto` to detect it automatically."
},
"upload_id": {
"type": "string",
"description": "Cralo upload identifier for an audio or video file; use this instead of `url`."
},
"duration_seconds": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Media duration in seconds, required to quote transcription of an uploaded file."
},
"use_official_transcript": {
"type": "boolean",
"default": false,
"description": "Prefer official platform captions when available; only valid with `url`."
}
},
"additionalProperties": false
}Returns
Fields a successful video.transcript call returns.
textstringRequiredsource"official_captions" | "asr"OptionallanguagestringOptionalsegmentsarray of objectOptionaltextstringRequiredend_msintegerRequiredstart_msintegerRequired
duration_secondsnumberOptional
Raw output JSON Schema
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string"
},
"source": {
"enum": [
"official_captions",
"asr"
],
"type": "string"
},
"language": {
"type": "string"
},
"segments": {
"type": "array",
"items": {
"type": "object",
"required": [
"start_ms",
"end_ms",
"text"
],
"properties": {
"text": {
"type": "string"
},
"end_ms": {
"type": "integer"
},
"start_ms": {
"type": "integer"
}
},
"additionalProperties": false
}
},
"duration_seconds": {
"type": "number"
}
},
"additionalProperties": false
}Run this tool
Copy this instruction to your agent to set up Cralo and call this tool with the example input.
Set up Cralo by following https://cralo.ai/SKILL.md, then call the video.transcript tool with this input: {"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ","use_official_transcript":true}Safety notes
- Side Effect
- read_only
How this compares to using AssemblyAI directly
You do not need a separate AssemblyAI account or subscription for this call. Cralo uses one prepaid balance across all tools and shows the per-call price before you run the command.
Related tools
[Browse all tools]- $0.001Get a TikTok videoFetch public video metadata, author details, and engagement for one TikTok video through TikHub.TikHub
tiktok.videoInstant - $0.0023Get Instagram reelsFetch public reels from an Instagram profile, reel, or hashtag URL using Apify's Instagram Scraper actor. Price is per reel (quoted from `limit`, max 1000).Apify
apify.instagram-reels - $0.001Search TikTok videosSearch public TikTok videos by keyword through TikHub and return the provider's full result data.TikHub
tiktok.searchInstant - $0.03Search YouTubeReturn YouTube video results with channels, view counts, durations, and links through SerpApi.SerpApi
serp.youtubeInstant