First-party app
AssemblyAI

AssemblyAI

Transcribe audio and video and run Audio Intelligence (speaker labels, key phrases, content moderation, topic detection, entity detection, sentiment analysis, PII redaction) with AssemblyAI.

stable AI & Machine LearningDeveloper Tools

About

AssemblyAI ships in the w6w first-party pack. It declares 11 actions, 2 health checks, and the host runs its code in a sandbox that never sees the credential.

App id
io.w6w.assemblyai
Version
0.1.0
Author
w6w
Licence
MIT
Categories
AI & Machine Learning · Developer Tools

Overview

AssemblyAI turns audio and video into text and turns that text into structured insight — this app covers the full Speech-to-Text lifecycle (submit a URL-reachable file, poll or wait for the result, list and delete transcripts) plus the Audio Intelligence add-ons AssemblyAI enables as flags on that same submit call: speaker diarization, key phrases, content moderation, topic detection, entity detection, sentiment analysis, and PII redaction (text and, optionally, a beeped-out audio copy).

transcript-submit-and-wait is the one-call path for the common case of “transcribe this and give me the text back”; transcript-submit plus transcript-wait/a Webhook URL cover everything from fire-and-forget batch jobs to long-running files. Companion actions export the finished transcript as SRT/VTT subtitles, split it into sentences or paragraphs, search it for keywords, and fetch the PII-redacted audio download link.

Every action works with a publicly reachable audio/video URL — this app’s sandbox coerces network bodies to strings, which is incompatible with AssemblyAI’s separate raw-bytes upload endpoint; see the README for the full explanation.

Build with AssemblyAI

Three routes to the same 11 actions. The Workflow tab is generated from AssemblyAI's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.

Delete Transcript

transcript-delete

Remove a transcript's data and mark it deleted.

Get Transcript

transcript-get

Show a transcript's current status. The transcript is ready when status is "completed".

List Transcripts

transcript-list

List transcripts on this account, newest first. Retrievable for the last 90 days only.

Get Transcript Paragraphs

transcript-paragraphs-get

Get the transcript split into semantically segmented paragraphs.

Get Redacted Audio

transcript-redacted-audio-get

Get the status and download URL of the PII-redacted audio file. Only available for 24 hours after the transcript completes.

Get Transcript Sentences

transcript-sentences-get

Get the transcript split into semantically segmented sentences.

Submit Transcript

transcript-submit

Submit a URL-reachable audio or video file for transcription and return immediately, without waiting for it to finish. Audio Intelligence add-ons (speaker labels, key phrases, content moderation, topic detection, entity detection, sentiment analysis, PII redaction) are enabled as flags on this same call.

Submit Transcript and Wait

transcript-submit-and-wait

Submit a URL-reachable audio or video file for transcription and block until it completes or fails, returning the finished transcript. Throws if the transcription itself fails.

Get Transcript Subtitles

transcript-subtitles-get

Export the transcript as SRT or VTT subtitles/captions.

Wait for Transcript

transcript-wait

Poll a transcript until it reaches a terminal status (completed or error), then return it.

Search Transcript Words

transcript-word-search

Search the transcript for keywords or short phrases and get back match counts and timestamps.

A workflow step names the app and the action, and the editor fills in the connection when you pick one. This is the Step shape from the workflow spec, carrying AssemblyAI's real ids.

{
  "manifestVersion": "2",
  "name": "assemblyai-example",
  "steps": [
    {
      "id": "transcript-get",
      "uses": {
        "app": "io.w6w.assemblyai",
        "action": "transcript-get",
        "connection": "conn_YOUR_CONNECTION_ID"
      },
      "with": {
        "transcriptId": "<transcriptId>"
      }
    }
  ]
}

Here are some of the things you can do

  • Get Transcript

    read
    transcript-get
  • List Transcripts

    search
    transcript-list
  • Get Transcript Paragraphs

    read
    transcript-paragraphs-get
  • Get Redacted Audio

    read
    transcript-redacted-audio-get
  • Get Transcript Sentences

    read
    transcript-sentences-get

+6 more actions available

Every app-specific value here is a blank you have to fill in. An app action is reached through the connection that authenticates it, so the address is a connection id, not the app id — and connections belong to your account, so a public page cannot know yours. Create one for AssemblyAI, then fill in the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the parameters that action declares. The call itself is real — the shape is transcribed from the studio's own snippet builder, which prints the same kind of blanks — but nothing in it is specific to AssemblyAI. The Workflow tab is where this app's real ids are.

Install
npm install @w6w/sdk
yarn add @w6w/sdk
pnpm add @w6w/sdk
deno add npm:@w6w/sdk
Code
import { W6wClient, isActionRun } from "@w6w/sdk";

// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();

const envelope = await client.run({
  urn: "conn_YOUR_CONNECTION_ID",
  action: "transcript-get",
  payload: {
    transcriptId: "<value>",
    // region: "<value>",
  },
});

if (isActionRun(envelope)) console.log(envelope.value);
Install the CLI
npm install -g @w6w/cli
CLI
w6w run conn_YOUR_CONNECTION_ID --action transcript-get --payload '{"transcriptId":"<value>"}'

Give an AI agent AssemblyAI — without giving it AssemblyAI's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.

One tool call
{
  "name": "w6w_invoke",
  "arguments": {
    "ref": "app:io.w6w.assemblyai#transcript-get",
    "input": {
      "transcriptId": "<transcriptId>"
    }
  }
}

Every tool names its target with a single ref. The app: form above doesn't name a connection at all — the host resolves which of the caller's AssemblyAI connections to sign with, and refuses rather than guesses when the answer is ambiguous.

What the agent gets

Credentials it can't read

The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.

A tool surface scoped to the caller

Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.

A durable workflow in one call

Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.

Health-aware discovery

AssemblyAI's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.

The MCP surface is part of the hosted platform. AssemblyAI itself is MIT, and the runtime that executes it is source-available (FSL).

Request MCP access

Health checks

AssemblyAI declares its own checks, so its health is a property of the app rather than something the host guesses at.

service

AssemblyAI platform status

Atlassian Statuspage rollup for status.assemblyai.com, with per-component detail. Unauthenticated and unsigned.

quota

Account balance / rate-limit headroom