---
title: "Notify Upload Complete"
method: PUT
path: "/v1/external/voice-file/jobs/{jobId}/upload-complete"
tags: ["Voice File"]
---

# Notify Upload Complete

`PUT /v1/external/voice-file/jobs/{jobId}/upload-complete`

## Request

- Base URL: `https://api.tiro.ooo`
- URL: `https://api.tiro.ooo/v1/external/voice-file/jobs/{jobId}/upload-complete`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/tiro/apis/tiro-api/docs/v1/external/voice-file/jobs/:jobId/upload-complete/put.ts> (a function with typed inputs; its response is checked against the schema)

Notify that audio file upload is complete and start processing.

- Call this after uploading your file to the presigned URL from Create Voice File Job
- Triggers the transcription (and optional translation) pipeline
- Job status transitions: `CREATED` → `UPLOADED` → `PROCESSING`

Documentation: [Step-by-step upload guide](/voice-file/tutorial#step-3-notify-upload-completion)

## Path parameters

- `jobId` string, required

## Response `200`

Upload notification received. No response body.

## Other responses

- `401`: `401009 unauthorized` when the API key is missing or invalid. Send a valid key in the Authorization header.
- `404`: Job not found

---

[API](https://skmtc.dev/tiro/apis/tiro-api.md) - [All operations](https://skmtc.dev/tiro/apis/tiro-api/llms.txt) - [OpenAPI document](https://skmtc.dev/tiro/apis/tiro-api/revisions/ae18d7961aa4?raw)
