---
title: "API reference"
description: "Generated REST operations from the published OpenAPI contract."
canonical: "https://verbafy.io/docs/api"
last-updated: "2026-09-23"
---

# API reference

These pages are generated from [OpenAPI](/openapi.json). OpenAPI is the HTTP source of truth. Remote MCP at `/api/v1/mcp` is a companion wrap.

`{jwt}` in REST examples is a Clerk session token after website login. Verbafy does not issue or display that token. For scripts and agents, sign in, create an API key at [Settings → API keys](/app/settings/api-keys), and use Remote MCP with `Authorization: Bearer sk-…`. Credential setup: [Auth.md](/auth.md).

## Auth

- [`POST /api/v1/auth/guest-sessions`](/docs/api/auth/create-guest-session): Create or reuse a Guest session
- [`DELETE /api/v1/auth/guest-sessions/current`](/docs/api/auth/revoke-current-guest-session): Revoke the current Guest session
- [`POST /api/v1/auth/guest-sessions/claim`](/docs/api/auth/claim-guest-session): Claim Guest data onto a Registered User

## Transcripts

- [`POST /api/v1/transcripts`](/docs/api/transcripts/create-transcript): Create a transcript from a public URL
- [`GET /api/v1/transcripts`](/docs/api/transcripts/list-transcripts): List transcripts for the current account
- [`GET /api/v1/transcripts/statuses`](/docs/api/transcripts/list-transcript-statuses): Batch-read transcript statuses
- [`GET /api/v1/transcripts/{id}`](/docs/api/transcripts/get-transcript): Get one transcript
- [`DELETE /api/v1/transcripts/{id}`](/docs/api/transcripts/delete-transcript): Delete one transcript
- [`GET /api/v1/transcripts/{id}/status`](/docs/api/transcripts/get-transcript-status): Poll one transcript status
- [`GET /api/v1/transcripts/{id}/captions`](/docs/api/transcripts/get-transcript-captions): Get YouTube caption preview
- [`POST /api/v1/transcripts/{id}/retry`](/docs/api/transcripts/retry-transcript): Retry a failed transcript

## Chat

- [`GET /api/v1/transcripts/{id}/chat`](/docs/api/chat/get-transcript-chat): Get transcript chat
- [`POST /api/v1/transcripts/{id}/chat/messages`](/docs/api/chat/send-transcript-chat-message): Send a chat message
- [`PUT /api/v1/transcripts/{id}/chat/messages/{messageId}/rating`](/docs/api/chat/rate-transcript-chat-message): Rate a chat message

## Uploads

- [`POST /api/v1/transcript-uploads`](/docs/api/uploads/create-transcript-upload): Reserve a private multipart upload
- [`POST /api/v1/transcript-uploads/{id}/parts`](/docs/api/uploads/sign-transcript-upload-part): Sign one multipart part
- [`POST /api/v1/transcript-uploads/{id}/complete`](/docs/api/uploads/complete-transcript-upload): Complete a multipart upload
- [`DELETE /api/v1/transcript-uploads/{id}`](/docs/api/uploads/cancel-transcript-upload): Cancel a reservation

## Billing

- [`GET /api/v1/billing/me`](/docs/api/billing/get-billing-me): Get current plan and usage
- [`GET /api/v1/billing/catalog`](/docs/api/billing/get-billing-catalog): Get public price catalog
- [`GET /api/v1/billing/pricing-context`](/docs/api/billing/get-billing-pricing-context): Get pricing context
- [`POST /api/v1/billing/checkout`](/docs/api/billing/create-billing-checkout): Create a Stripe Checkout session
- [`POST /api/v1/billing/change-plan`](/docs/api/billing/change-billing-plan): Change the paid plan
- [`POST /api/v1/billing/convert-trial`](/docs/api/billing/convert-billing-trial): Convert a paid-plan trial
- [`POST /api/v1/billing/portal`](/docs/api/billing/create-billing-portal): Create a Stripe billing portal session

## Preferences

- [`GET /api/v1/me/preferences`](/docs/api/preferences/get-preferences): Get preferences
- [`PATCH /api/v1/me/preferences`](/docs/api/preferences/patch-preferences): Update preferences

## ApiKeys

- [`GET /api/v1/me/api-keys`](/docs/api/api-keys/list-api-keys): List API keys
- [`POST /api/v1/me/api-keys`](/docs/api/api-keys/create-api-key): Create API key
- [`DELETE /api/v1/me/api-keys/{id}`](/docs/api/api-keys/revoke-api-key): Revoke API key

## Mcp

- [`POST /api/v1/mcp`](/docs/api/mcp/mcp-post): Remote MCP Streamable HTTP
- [`GET /api/v1/mcp`](/docs/api/mcp/mcp-get): Remote MCP Streamable HTTP GET
- [`DELETE /api/v1/mcp`](/docs/api/mcp/mcp-delete): Remote MCP Streamable HTTP DELETE

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://verbafy.io/#organization",
      "name": "Verbafy",
      "url": "https://verbafy.io",
      "inLanguage": "en",
      "knowsAbout": [
        "YouTube transcription",
        "Spotify episode transcription",
        "Meeting recording transcription",
        "Speaker diarization",
        "Transcript export"
      ],
      "hasOfferCatalog": {
        "@id": "https://verbafy.io/pricing#offers"
      },
      "contactPoint": {
        "@type": "ContactPoint",
        "contactType": "customer support",
        "email": "support@verbafy.io",
        "url": "https://verbafy.io/contact"
      }
    },
    {
      "@type": "TechArticle",
      "@id": "https://verbafy.io/docs/api#page",
      "name": "API reference",
      "description": "Generated REST operations from the published OpenAPI contract.",
      "url": "https://verbafy.io/docs/api",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://verbafy.io/#website"
      },
      "publisher": {
        "@id": "https://verbafy.io/#organization"
      }
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://verbafy.io"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "API reference",
          "item": "https://verbafy.io/docs/api"
        }
      ]
    }
  ]
}
```
