> ## 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'
      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:
            $ref: '#/components/schemas/UploadSessionInitiatedStatus'
          UPLOADED:
            $ref: '#/components/schemas/UploadSessionUploadedStatus'
          READY:
            $ref: '#/components/schemas/UploadSessionReadyStatus'
          FAILED:
            $ref: '#/components/schemas/UploadSessionFailedStatus'
          ABORTED:
            $ref: '#/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
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      bearerFormat: API key

````