> ## Documentation Index
> Fetch the complete documentation index at: https://docs.transcriptmagic.com/llms.txt
> Use this file to discover all available pages before exploring further.

# n8n Node

> Fetch video transcripts directly inside n8n workflows. Community node, published to npm, API-key auth.

## Overview

`n8n-nodes-transcriptmagic` is a community node that wraps the TranscriptMagic API as drag-and-drop operations inside [n8n](https://n8n.io). Drop it into a workflow, point it at a public video URL, and the transcript flows through to the next node like any other JSON.

It is published to npm (currently **v0.2.0**) and works in both self-hosted n8n and n8n Cloud (once verified).

<Card title="npm package" icon="npm" href="https://www.npmjs.com/package/n8n-nodes-transcriptmagic">
  ```
  n8n-nodes-transcriptmagic
  ```
</Card>

If you're writing a service or batch job in code, use the [REST API](/api-reference/overview) directly. If you're inside an AI client, use the [MCP server](/mcp-server). Use n8n when your workflow orchestration already lives in n8n.

## Install

<Tabs>
  <Tab title="n8n Cloud">
    1. Open **Settings** → **Community Nodes** → **Install**.
    2. Enter `n8n-nodes-transcriptmagic` and confirm.
    3. The node appears in the picker under **TranscriptMagic**.

    n8n Cloud requires verified community nodes. If the install button is missing, the package is awaiting verification — self-host in the meantime.
  </Tab>

  <Tab title="Self-hosted">
    From your n8n install directory:

    ```bash theme={null}
    npm install n8n-nodes-transcriptmagic
    ```

    Restart n8n. The node appears under **TranscriptMagic** in the node picker.

    Docker users: mount the package into `/home/node/.n8n/custom/` and restart the container.
  </Tab>
</Tabs>

## Setup

1. [Create an API key](https://transcriptmagic.com/dashboard/api-keys/) in your TranscriptMagic dashboard. Keys begin with `sk_live_`.
2. In n8n, add a new **TranscriptMagic API** credential and paste your key. The credential test calls [`GET /api/balance`](/api-reference/balance) — it validates the key without consuming a credit, and works even on zero-credit accounts.

## Operations

### Transcript

POST a video URL, receive the transcript.

| Operation   | Endpoint                         |
| ----------- | -------------------------------- |
| YouTube     | `POST /api/youtube/transcript`   |
| TikTok      | `POST /api/tiktok/transcript`    |
| Instagram   | `POST /api/instagram/transcript` |
| Facebook    | `POST /api/facebook/transcript`  |
| LinkedIn    | `POST /api/linkedin/transcript`  |
| Rumble      | `POST /api/rumble/transcript`    |
| X (Twitter) | `POST /api/twitter/transcript`   |

**Cost** 1 credit per successful call. Cache hits and errors are free.

### Account

| Operation          | Endpoint           |
| ------------------ | ------------------ |
| Get Credit Balance | `GET /api/balance` |

Free; useful as a pre-flight check before a big batch.

## Output formats

Set via **Options → Output Format**:

* **Normalized** (default) — `{ text, platform, credits, url }`. Hides per-platform shape differences so a single downstream branch works across all sources.
* **Raw** — the upstream API response passed through verbatim. Use this when you need YouTube's per-line timed segments or platform-specific metadata (`videoUrls`, `language`, etc.). See the [response schema](/api-reference/response-schema).

## Error handling

* **Continue on fail** is supported. A bad URL in a batch surfaces as a per-item error and the rest of the batch keeps running.
* **Rate limits** — when the API returns `429`, the node honors `Retry-After` and retries once. The per-key limit is 120 requests/minute. See [rate limits](/concepts/rate-limits).

## Common patterns

<AccordionGroup>
  <Accordion title="Single-URL transcription" icon="play">
    The minimal flow: trigger → transcribe → done.

    1. **Manual Trigger**
    2. **TranscriptMagic** — Resource `Transcript`, Operation `YouTube` (or TikTok / Instagram / Facebook / LinkedIn / Rumble / X (Twitter)), URL = any public video URL.
    3. Run. The output item contains `text`, `platform`, `credits`, and `url`.
  </Accordion>

  <Accordion title="Batch transcription with graceful failures" icon="layer-group">
    Process many URLs without aborting the batch on a single bad URL.

    1. **Google Sheets** / **Airtable** / **Set** node returning items with a `url` field.
    2. **TranscriptMagic** — URL = `={{ $json.url }}`, **Settings → On Error** = Continue.
    3. Downstream destination keyed off the original `url` from the paired item.

    The node automatically honors `Retry-After` on 429.
  </Accordion>

  <Accordion title="Transcript → AI summary → notification" icon="robot">
    The classic insight-extraction pattern.

    1. **Schedule Trigger** (or **Webhook**, **RSS Feed**, **Telegram**, etc.)
    2. **TranscriptMagic** → fetch transcript.
    3. **OpenAI** / **Anthropic** node — prompt with `={{ $json.text }}`.
    4. **Slack** / **Email** / **Notion** → deliver the summary.
  </Accordion>

  <Accordion title="Pre-flight balance check" icon="coins">
    Before kicking off a big batch, verify you have credits.

    1. **TranscriptMagic** — Resource `Account`, Operation `Get Credit Balance`.
    2. **IF** — `={{ $json.credits >= 1000 }}` → continue, else send an alert.

    The balance call does not consume a credit.
  </Accordion>
</AccordionGroup>

## Links

<CardGroup cols={2}>
  <Card title="Source repository" icon="github" href="https://github.com/TranscriptMagic/n8n-nodes-transcriptmagic">
    Issues, releases, and example workflows.
  </Card>

  <Card title="REST API" icon="code" href="/api-reference/overview">
    The underlying API the node calls — useful for advanced cases.
  </Card>

  <Card title="Authentication" icon="key" href="/authentication">
    How API keys work and how to rotate them.
  </Card>

  <Card title="Errors" icon="triangle-exclamation" href="/concepts/errors">
    Status codes and retry strategy.
  </Card>
</CardGroup>
