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

# Get upload status

> Returns the current status and metadata of an upload. Poll this endpoint until status is 'ready', then use the returned assetId when creating posts.



## OpenAPI

````yaml /api/openapi.json get /uploads/{id}
openapi: 3.1.0
info:
  title: Ordinal API
  version: 1.0.0
  description: API to create and manage Ordinal workspaces, posts, profiles, and analytics
servers:
  - url: https://app.tryordinal.com/api/v1
    description: Production server
security:
  - bearerAuth: []
tags:
  - name: Analytics
    description: Social media analytics data
  - name: Approvals
    description: Post approval workflows
  - name: Comments
    description: >-
      Post comments for team collaboration. Supports @mentions using the format
      @[Display Name](userId).
  - name: Engagements
    description: Auto-engagements for posts (likes, comments, reposts)
  - name: Invites
    description: Workspace invitations for adding new users
  - name: Labels
    description: Labels for organizing posts
  - name: Instagram
    description: Instagram utilities for location search and tagging
  - name: LinkedIn
    description: LinkedIn utilities for profile lookups, tagging, and mentions
  - name: Posts
    description: Create and manage posts
  - name: Profiles
    description: List connected social profiles
  - name: Slack Boosts
    description: >-
      List connected Slack channels (webhooks), then create and manage slack
      boosts so teams get notified in Slack when posts publish. Requires Slack
      connected with marketing boost channels.
  - name: Subscribers
    description: Post subscribers for notifications
  - name: File Uploads
    description: >-
      Upload files from URLs for use in posts. Supports images (JPEG, PNG, GIF,
      WebP) up to 10 MB and videos (MP4, MOV) up to 350 MB.
  - name: Ideas
    description: >-
      Create and manage content ideas. Ideas are draft posts without scheduled
      dates that can be converted to calendar posts.
  - name: Inline Comments
    description: >-
      Text-anchored comments on specific post content. Read-only API for
      retrieving inline comments across channels.
  - name: Users
    description: Workspace users
  - name: Webhooks
    description: >-
      Create, list, get, update, and delete webhooks to receive real-time event
      notifications
  - name: Workspaces
    description: Workspace information
paths:
  /uploads/{id}:
    get:
      tags:
        - File Uploads
      summary: Get upload status
      description: >-
        Returns the current status and metadata of an upload. Poll this endpoint
        until status is 'ready', then use the returned assetId when creating
        posts.
      operationId: uploads-get
      parameters:
        - name: id
          in: path
          required: true
          description: Upload job ID (UUID)
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Upload status and metadata. Response shape depends on status.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/UploadAwaitingUpload'
                  - $ref: '#/components/schemas/UploadPending'
                  - $ref: '#/components/schemas/UploadProcessing'
                  - $ref: '#/components/schemas/UploadReady'
                  - $ref: '#/components/schemas/UploadFailed'
                  - $ref: '#/components/schemas/UploadExpired'
                discriminator:
                  propertyName: status
              examples:
                awaiting_upload:
                  summary: Awaiting local file upload
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    status: awaiting_upload
                    createdAt: '2026-02-04T10:30:00.000Z'
                pending:
                  summary: Upload pending
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    status: pending
                    createdAt: '2026-02-04T10:30:00.000Z'
                processing:
                  summary: Upload processing
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    status: processing
                    createdAt: '2026-02-04T10:30:00.000Z'
                ready:
                  summary: Upload ready
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    status: ready
                    assetId: 550e8400-e29b-41d4-a716-446655440001
                    filename: product-photo.jpg
                    mimetype: image/jpeg
                    size: 245678
                    width: 1920
                    height: 1080
                    duration: null
                    expiresAt: '2026-02-11T10:30:00.000Z'
                    createdAt: '2026-02-04T10:30:00.000Z'
                    readyAt: '2026-02-04T10:30:15.000Z'
                failed:
                  summary: Upload failed
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    status: failed
                    error: 'Failed to download file: HTTP 404'
                    createdAt: '2026-02-04T10:30:00.000Z'
                expired:
                  summary: Upload expired
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    status: expired
                    expiredAt: '2026-02-11T10:30:00.000Z'
                    createdAt: '2026-02-04T10:30:00.000Z'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    UploadAwaitingUpload:
      title: awaiting_upload
      type: object
      description: >-
        Upload job is waiting for the file to be POSTed to the signed uploadUrl
        returned by POST /uploads/prepare.
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - awaiting_upload
        createdAt:
          type: string
          format: date-time
    UploadPending:
      title: pending
      type: object
      description: Upload is queued and waiting to be processed
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - pending
        createdAt:
          type: string
          format: date-time
    UploadProcessing:
      title: processing
      type: object
      description: Upload is being downloaded and processed
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - processing
        createdAt:
          type: string
          format: date-time
    UploadReady:
      title: ready
      type: object
      description: >-
        Upload is complete and ready to use. Use the assetId when creating
        posts.
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - ready
        assetId:
          type: string
          format: uuid
          description: Asset ID to use when creating posts with attachments
        filename:
          type: string
          description: Original filename of the uploaded file
        mimetype:
          type: string
          description: MIME type of the file (e.g., image/jpeg, video/mp4)
        size:
          type: integer
          description: File size in bytes
        width:
          type: integer
          nullable: true
          description: Width in pixels for images and videos
        height:
          type: integer
          nullable: true
          description: Height in pixels for images and videos
        duration:
          type: number
          nullable: true
          description: Duration in seconds for videos
        expiresAt:
          type: string
          format: date-time
          description: When the upload will expire if not used
        createdAt:
          type: string
          format: date-time
        readyAt:
          type: string
          format: date-time
          description: When the upload finished processing
    UploadFailed:
      title: failed
      type: object
      description: Upload failed to process
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - failed
        error:
          type: string
          description: Error message describing why the upload failed
        createdAt:
          type: string
          format: date-time
    UploadExpired:
      title: expired
      type: object
      description: Upload has expired and can no longer be used
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - expired
        expiredAt:
          type: string
          format: date-time
          description: When the upload expired
        createdAt:
          type: string
          format: date-time
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
  responses:
    Unauthorized:
      description: Unauthorized - Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: UNAUTHORIZED
            message: Invalid or unauthorized API key
    NotFound:
      description: Not Found - Resource does not exist
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: NOT_FOUND
            message: Post not found or does not belong to this workspace
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key authentication. Generate an API key from your workspace
        settings.

````