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

# Complete media upload session

> Call this to finalize the upload started by calling [`/media/upload-sessions`](/api-reference/media/start-media-upload-session).



## OpenAPI

````yaml /openapi.yaml post /media/upload-sessions/{uploadSessionId}/complete
openapi: 3.1.0
info:
  title: WoopSocial API
  version: 1.0.0
  summary: API for WoopSocial integrations.
  description: >
    This is the public-facing OpenAPI contract for WoopSocial. It supports
    scheduling posts for various social media platforms such as Facebook,
    Instagram, LinkedIn, LinkedIn Pages, Pinterest, Threads, TikTok, X (formerly
    Twitter) and YouTube.
servers:
  - url: https://api.woopsocial.com/v1
    description: WoopSocial API URL.
  - url: http://localhost:9123/api/external/v1
    description: Local WoopSocial API URL.
security: []
tags:
  - name: Posts
    description: Post scheduling endpoints.
  - name: Projects
    description: Project discovery endpoints.
  - name: Social Accounts
    description: Connected social account discovery endpoints.
  - name: Media
    description: Media upload endpoints.
  - name: Webhooks
    description: Webhook endpoint management.
  - name: Health
    description: Basic connectivity endpoints.
paths:
  /media/upload-sessions/{uploadSessionId}/complete:
    post:
      tags:
        - Media
      summary: Complete media upload session
      description: >-
        Call this to finalize the upload started by calling
        [`/media/upload-sessions`](/api-reference/media/start-media-upload-session).
      operationId: completeUploadSession
      parameters:
        - $ref: '#/components/parameters/UploadSessionId'
      responses:
        '200':
          description: Upload completion accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadSessionStatus'
        '429':
          $ref: '#/components/responses/TooManyConcurrentRequests'
      security:
        - ApiKey: []
components:
  parameters:
    UploadSessionId:
      name: uploadSessionId
      in: path
      required: true
      schema:
        type: string
      description: Media upload session identifier.
  schemas:
    UploadSessionStatus:
      oneOf:
        - $ref: '#/components/schemas/UploadSessionInitiatedStatus'
        - $ref: '#/components/schemas/UploadSessionUploadedStatus'
        - $ref: '#/components/schemas/UploadSessionReadyStatus'
        - $ref: '#/components/schemas/UploadSessionFailedStatus'
        - $ref: '#/components/schemas/UploadSessionAbortedStatus'
      discriminator:
        propertyName: status
        mapping:
          INITIATED: '#/components/schemas/UploadSessionInitiatedStatus'
          UPLOADED: '#/components/schemas/UploadSessionUploadedStatus'
          READY: '#/components/schemas/UploadSessionReadyStatus'
          FAILED: '#/components/schemas/UploadSessionFailedStatus'
          ABORTED: '#/components/schemas/UploadSessionAbortedStatus'
    UploadSessionInitiatedStatus:
      title: Upload Session Initiated Status
      type: object
      additionalProperties: false
      required:
        - uploadSessionId
        - status
      properties:
        uploadSessionId:
          type: string
          description: Media upload session identifier.
        status:
          type: string
          enum:
            - INITIATED
    UploadSessionUploadedStatus:
      title: Upload Session Uploaded Status
      type: object
      additionalProperties: false
      required:
        - uploadSessionId
        - status
      properties:
        uploadSessionId:
          type: string
          description: Media upload session identifier.
        status:
          type: string
          enum:
            - UPLOADED
    UploadSessionReadyStatus:
      title: Upload Session Ready Status
      type: object
      additionalProperties: false
      required:
        - uploadSessionId
        - status
        - mediaId
      properties:
        uploadSessionId:
          type: string
          description: Media upload session identifier.
        status:
          type: string
          enum:
            - READY
        mediaId:
          type: string
          description: Media identifier created by the completed upload.
    UploadSessionFailedStatus:
      title: Upload Session Failed Status
      type: object
      additionalProperties: false
      required:
        - uploadSessionId
        - status
        - failureCode
        - failureMessage
      properties:
        uploadSessionId:
          type: string
          description: Media upload session identifier.
        status:
          type: string
          enum:
            - FAILED
        failureCode:
          type: string
          description: Machine-readable failure code for the upload session.
        failureMessage:
          type: string
          description: Human-readable summary of why the upload session failed.
    UploadSessionAbortedStatus:
      title: Upload Session Aborted Status
      type: object
      additionalProperties: false
      required:
        - uploadSessionId
        - status
      properties:
        uploadSessionId:
          type: string
          description: Media upload session identifier.
        status:
          type: string
          enum:
            - ABORTED
    ConcurrencyLimitErrorResponse:
      type: object
      additionalProperties: false
      required:
        - code
        - message
      properties:
        code:
          $ref: '#/components/schemas/ConcurrencyLimitErrorCode'
        message:
          type: string
    ConcurrencyLimitErrorCode:
      type: string
      enum:
        - TOO_MANY_CONCURRENT_REQUESTS
  responses:
    TooManyConcurrentRequests:
      description: Too many requests are already in progress for this API key.
      headers:
        Retry-After:
          description: Number of seconds to wait before retrying.
          required: true
          schema:
            type: integer
            format: int32
            minimum: 1
            example: 1
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ConcurrencyLimitErrorResponse'
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      bearerFormat: API key

````

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