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

# Complete an upload

> Call after the PUT succeeds. The file's size and type are checked before it can be transcribed.



## OpenAPI

````yaml POST /uploads/{id}/complete
openapi: 3.1.0
info:
  title: Maybloc API
  version: 1.0.0
  description: >-
    Speech-to-text for recorded audio. Upload a recording and get back a
    transcript with every speaker separated, overlapping speech kept, and every
    word timed.
servers:
  - url: https://app.maybloc.com/api/v1
    description: Maybloc v1
security:
  - bearerAuth: []
tags:
  - name: Uploads
    description: Send a recording straight to private storage.
  - name: Transcripts
    description: Transcribe recordings and read the results.
  - name: Account
    description: Your workspace and its balance.
paths:
  /uploads/{id}/complete:
    post:
      tags:
        - Uploads
      summary: Complete an upload
      description: >-
        Call after the PUT succeeds. The file's size and type are checked before
        it can be transcribed.
      operationId: completeUpload
      parameters:
        - $ref: '#/components/parameters/UploadId'
      responses:
        '200':
          description: Upload verified
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompletedUpload'
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Upload not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: The file is missing or does not match what was declared
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  parameters:
    UploadId:
      name: id
      in: path
      required: true
      schema:
        type: string
        format: uuid
  schemas:
    CompletedUpload:
      type: object
      properties:
        id:
          type: string
          format: uuid
        object:
          type: string
          const: upload
        status:
          type: string
          const: completed
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - request_id
          properties:
            code:
              type: string
              examples:
                - invalid_request
                - insufficient_credit
                - rate_limited
            message:
              type: string
            request_id:
              type: string
              description: Quote this when contacting support.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'An API key: Authorization: Bearer mbk_live_...'

````

## Related topics

- [Transcribe a recording with the Maybloc API](https://docs.maybloc.com/quickstart.md)
- [Maybloc API errors, rate limits and idempotency](https://docs.maybloc.com/guides/errors-and-limits.md)
- [Use the Maybloc docs with AI agents and coding assistants](https://docs.maybloc.com/guides/ai-agents.md)
- [Create an upload](https://docs.maybloc.com/api-reference/create-an-upload.md)
- [Maybloc API pricing: per-minute rates and add-on prices](https://docs.maybloc.com/guides/pricing.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.