ForHosting KIT · Audio & Voice

Keywords from audio

A recording doesn't come with tags, so searching a library of audio usually means someone remembers roughly which episode covered a topic. 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.

● StablePer request + per minute$0.004
Use it from WebAPIEmailApp soonTelegram soon

Run this on our servers with your account. Free tools run in your browser; this one bills your KIT balance per the price above.

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. 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.

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.

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.

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.

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.

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. Access runs on a prepaid ForHosting KIT balance: top up from $10.00 (it never expires) and each request is charged at its published price, so a call with no balance returns HTTP 402. No subscription, no tokens, no invented credits, and a failed task is never charged.

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.

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.

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.

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.

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.

POSThttps://api.kit.forhosting.com/audio/keywords

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, and soon from our app, email and Telegram.

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"}'
{
  "audio": "https://ejemplo.com/audio.mp3"
}
{
  "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.

Per request$0.004
Per minute$0.0185

Published price — no tokens, no invented credits. A failed task is never charged.

max_mb200
max_minutes180
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.
422task_failedThe task failed after 3 retries. You are never charged for it.

Read the full KIT documentation →