Skip to main content

Overview

This tutorial walks you through the complete process of uploading an audio file, getting it transcribed, and translated into multiple languages using the Tiro API.

Prerequisites

  • An Enterprise plan workspace — Voice File Jobs are Enterprise-only. See the Overview.
  • Valid Tiro API key
  • The GUID of the workspace that runs the job. Put the guid from GET /v1/external/workspaces in the TIRO_WORKSPACE_GUID environment variable. With a workspace API key, use the GUID of the key’s own workspace.
  • Audio file (MP3, WAV, M4A)
  • Max file size: 500MB
  • Max duration: 4 hours

Step 1: Create a Voice File Job

Start by creating a job with your desired transcription and translation settings:
Example Response:

Step 2: Upload Your Audio File

Upload your audio file to the provided signed URL:

Step 3: Notify Upload Completion

Tell the API that the upload is complete:

Step 4: Poll for Job Completion

Monitor the job status until processing is complete:
This tutorial polls so that one script runs from start to finish. In production, use the voice_file_job.completed and voice_file_job.failed webhooks to learn when a job finishes. See the Voice File overview to subscribe.

Step 5: Retrieve Results

Once the job is completed, fetch the transcript and translations:

Complete Example

Here’s a complete example that processes an audio file from start to finish:

Step 6: Understanding Paragraph Summaries

The Paragraph Summary feature provides intelligent content summarization that helps you quickly understand the key points from your audio files.

What are Paragraph Summaries?

Paragraph summaries are automatically generated overviews of your transcript or translation content, broken down into logical sections. Each summary provides:
  • Concise Overview: Key points from each paragraph in markdown format
  • Language-Specific: Summaries generated for both transcript and translations
  • Structured Content: Easy to parse and integrate into your applications

Example Response

When you fetch paragraph summaries, you’ll receive a response like this. summary is a single object whose type is text/markdown, and content holds the summaries of every paragraph as one markdown string.

When are Summaries Available?

  • Transcript and Translation Summaries: Available after job completion (COMPLETED status)
    • COMPLETED means all processing is finished: transcript, translation (if requested), and paragraph summaries for both
  • Fetching before completion: The paragraph summary endpoints return error 422013 while a summary is not ready yet. Wait for the voice_file_job.completed event or the COMPLETED status before you fetch

Polling Best Practices

Exponential Backoff Strategy

  • Start delay: 2 seconds (processing takes time to start)
  • Growth factor: 1.2x (gentle increase)
  • Maximum delay: 30 seconds (avoid overwhelming the server)
  • Maximum attempts: Based on expected processing time

Job State Transitions

Processing Time Guidelines

Common Issues & Solutions

Upload Failures

  • Issue: 413 Payload Too Large
  • Solution: Check file size (max 500MB) and compress if needed

Processing Failures

  • Issue: Low audio quality
  • Solution: Ensure sample rate ≥8kHz and minimal background noise

Timeout Issues

  • Issue: Job doesn’t complete within expected time
  • Solution: Increase timeout for longer files, check job state for errors
If you need to revisit the bigger picture, see the Voice File Overview; for every parameter and response field, jump into the API Reference.