Keywords from audio
Get a ranked list of the keywords and topics actually discussed in a recording, so you know what is inside before you listen. Podcast back-catalogs, call libraries and lecture archives become searchable by subject. Pay per use, no subscription.
Run it online
Run this on our servers with your account. Free tools run in your browser; this one bills your KIT balance per the price above.
A recording doesn't come with tags, so searching a library of audio usually means someone remembers roughly which episode covered a topic.
Why audio libraries are hard to search
Text is searchable the moment it exists; audio is not, unless someone tags it by hand or transcribes it and reads it again. That gap is why whole podcast archives, call libraries and lecture recordings sit effectively unsearchable: the content is there, but nothing points to what is inside a given file without listening to it first. A compact list of keywords tells you what a recording contains before you commit an hour to it, and lets listeners search by topic instead of scanning titles that do not describe the content.
How the keywords are chosen
The recording is transcribed internally, and then the terms and topics that carry the most weight in the conversation are identified. A simple word count treats filler words the same as a technical term mentioned once but discussed at length, so the ranking favors words that are distinctive and central rather than merely repeated. Store the list next to the file it describes: it can feed a search index, tag audio the moment it is uploaded, or reveal recurring themes across recorded support calls without anyone sampling them by hand.
The problem with audio as a search target
Text is searchable the moment it exists; audio isn't, unless someone tags it by hand or transcribes and re-reads it. That gap is why entire podcast archives, call libraries and lecture recordings sit effectively unsearchable — the content is there, but nothing points to what's inside a given file without listening to it first.
Where this fits for teams handling audio at scale
Podcast networks tag episodes for internal search, call centers surface recurring themes across recorded calls, and media archives make decades of tape discoverable without a human re-listening to every hour of it. In each case, the value isn't the transcript itself — it's a compact list that tells you what's inside before you commit to listening.
What you can do with it
Searchable podcast archives
Extract keywords from every back-catalog episode so listeners can search by topic instead of scanning titles that don't describe the content.
Call center analytics
Surface the recurring terms across recorded support calls to spot emerging issues without a human sampling calls manually.
Content tagging at upload
Auto-tag audio the moment it's uploaded to a platform, giving creators searchable metadata without requiring them to fill out a form.
Media and lecture archives
Make decades of recorded talks or lectures discoverable by subject, surfacing material that would otherwise require listening start to finish.
FAQ
How many keywords do I get back?
You receive a ranked list rather than a fixed count, so the most relevant terms sit at the top and you can decide how many to use downstream.
Is a free trial available?
There's no free tier — free tiers get abused and slow everyone down. No subscription, no tokens, no invented credits, and a failed task is never charged.
Does it work on recordings with multiple speakers?
Yes, keyword extraction looks at the content discussed rather than who said it, so multi-speaker recordings like meetings or panels work without extra setup.
Is the audio kept after keywords are extracted?
No, files are deleted once the retention window passes and are never used for training, so nothing lingers beyond producing your keyword list.
How is this different from counting the most frequent words?
A plain count treats 'the' and 'thing' like a technical term discussed at length. Here terms are weighted by how distinctive and central they are, so the top of the list reflects what the recording is about.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/audio/keywords \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"audio":"https://ejemplo.com/audio.mp3"}'const res = await fetch("https://api.kit.forhosting.com/audio/keywords", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"audio": "https://ejemplo.com/audio.mp3"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/keywords",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"audio": "https://ejemplo.com/audio.mp3"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/keywords", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"audio":"https://ejemplo.com/audio.mp3"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"audio":"https://ejemplo.com/audio.mp3"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/keywords", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"audio": "https://ejemplo.com/audio.mp3"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.keywords",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_mb | 200 |
max_minutes | 180 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
422 | task_failed | The task failed after 3 retries. You are never charged for it. |
Technical notes
This endpoint listens once and returns the ranked keywords and topics actually discussed, turning spoken content into something you can search, filter and sort like text.
The problem with audio as a search target
This endpoint exists to put a label on that gap.
How the extraction works
Send audio to POST /audio/keywords and the task transcribes it internally, then identifies the terms and topics that carry the most weight in the conversation — not just words that repeat often, but ones central to what's actually being discussed. The result comes back as a ranked list, delivered to your webhook or waiting at a signed link for 24 hours, ready to store alongside the file it describes.
Why ranking matters, not just presence
A naive word count treats 'the' and 'thing' the same as a technical term mentioned once but discussed at length — which is why keyword extraction as a field moved decades ago from raw frequency counts toward weighting terms by how distinctive and central they are to a piece of content. This endpoint follows that same logic, so the top of the list reflects what the recording is actually about, not just what got repeated.
Connecting it to the rest of a pipeline
Keywords pulled from this endpoint feed naturally into a search index, a content tagging system, or a recommendation engine matching listeners to episodes on shared topics. Run it alongside the Podcast Chapters API and you get both what a recording is about and exactly where each part happens, which is enough structure to build a browsing experience around audio without a person ever tagging a file by hand.
Technical questions
How does the extract keywords from audio API decide what's a keyword?
It transcribes the audio internally and ranks terms and topics by how central they are to the conversation, not simply by how often a word repeats.
What determines the price?
A base rate per request plus a rate per minute of audio, both published on this page, with no charge on a task that fails after its retries.
Can this replace a full transcription?
Not if you need the exact words spoken — this returns topics and terms, not a transcript, though the Speech to Text API can supply the full text alongside it.
How do I receive the results?
Either through a signed webhook call when the task finishes or a signed link valid for 24 hours, whichever fits how your system is built.