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

# Update submission metadata



## OpenAPI

````yaml /openapi.json patch /submissions/{submission_id}
openapi: 3.1.0
info:
  title: Clipstake API
  description: Instagram media tracking, audience geography and demographics, as an API.
  version: 0.0.1
servers:
  - url: https://api.clipstake.com/v1
security: []
paths:
  /submissions/{submission_id}:
    patch:
      tags:
        - Submissions
      summary: Update submission metadata
      operationId: submissions-update
      parameters:
        - in: path
          name: submission_id
          schema:
            type: string
            description: >-
              Submission ID. Format: sub_ followed by 24 lowercase hexadecimal
              characters.
            example: sub_0899bdcb659c102e360005ec
          required: true
          description: >-
            Submission ID. Format: sub_ followed by 24 lowercase hexadecimal
            characters.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                metadata:
                  anyOf:
                    - type: object
                      propertyNames:
                        type: string
                        minLength: 1
                        maxLength: 40
                      additionalProperties:
                        anyOf:
                          - type: string
                            maxLength: 500
                          - type: 'null'
                    - type: 'null'
              required:
                - metadata
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    pattern: ^sub_[0-9a-f]{24}$
                  platform:
                    type: string
                    description: 'Platform identifier. Known value: instagram.'
                  url:
                    type: string
                    format: uri
                  platform_media_id:
                    type: string
                  media_type:
                    description: 'Known values: short_video, video, image, carousel, text.'
                    type:
                      - string
                      - 'null'
                  account:
                    type: object
                    properties:
                      id:
                        type: string
                        pattern: ^acct_[0-9a-f]{24}$
                      username:
                        type: string
                      external_user_id:
                        type: string
                    required:
                      - id
                      - username
                      - external_user_id
                    additionalProperties: false
                  posted_at:
                    anyOf:
                      - type: string
                        format: date-time
                        pattern: >-
                          ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                      - type: 'null'
                  status:
                    type: string
                    enum:
                      - active
                      - paused
                      - unavailable
                      - parked
                      - stopped
                  next_read_at:
                    anyOf:
                      - type: string
                        format: date-time
                        pattern: >-
                          ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                      - type: 'null'
                  unavailable_reason:
                    description: >-
                      Known values: post_not_found, token_invalid,
                      no_linked_account, connection_removed.
                    type:
                      - string
                      - 'null'
                  parked_reason:
                    description: 'Known values: token_invalid, read_failed.'
                    type:
                      - string
                      - 'null'
                  latest:
                    type: object
                    properties:
                      captured_at:
                        anyOf:
                          - type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          - type: 'null'
                      views:
                        anyOf:
                          - type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          - type: 'null'
                      reach:
                        anyOf:
                          - type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          - type: 'null'
                      likes:
                        anyOf:
                          - type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          - type: 'null'
                      comments:
                        anyOf:
                          - type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          - type: 'null'
                      shares:
                        anyOf:
                          - type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          - type: 'null'
                      saves:
                        anyOf:
                          - type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          - type: 'null'
                      total_interactions:
                        anyOf:
                          - type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          - type: 'null'
                      extra:
                        type: object
                        propertyNames:
                          type: string
                        additionalProperties:
                          type: number
                    required:
                      - captured_at
                      - views
                      - reach
                      - likes
                      - comments
                      - shares
                      - saves
                      - total_interactions
                      - extra
                    additionalProperties: false
                  metadata:
                    type: object
                    propertyNames:
                      type: string
                      minLength: 1
                      maxLength: 40
                    additionalProperties:
                      type: string
                      maxLength: 500
                  created_at:
                    type: string
                    format: date-time
                    pattern: >-
                      ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                required:
                  - id
                  - platform
                  - url
                  - platform_media_id
                  - media_type
                  - account
                  - posted_at
                  - status
                  - next_read_at
                  - unavailable_reason
                  - parked_reason
                  - metadata
                  - created_at
                additionalProperties: false
              example:
                id: sub_4f9c0a1b2c3d4e5f60718293
                platform: instagram
                url: https://www.instagram.com/p/C9x4AbCdEfG/
                platform_media_id: '18062712345678901'
                media_type: short_video
                account:
                  id: acct_3f9c0a1b2c3d4e5f60718293
                  username: acme.studio
                  external_user_id: customer_8f3a2c19
                posted_at: '2026-09-10T14:22:00.000Z'
                status: active
                next_read_at: '2026-09-14T14:00:00.000Z'
                unavailable_reason: null
                parked_reason: null
                latest:
                  captured_at: '2026-09-14T10:00:00.000Z'
                  views: 128450
                  reach: 96720
                  likes: 8140
                  comments: 326
                  shares: 1190
                  saves: 2480
                  total_interactions: 12136
                  extra: {}
                metadata:
                  campaign: fall
                created_at: '2026-09-10T14:25:43.000Z'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.BAD_REQUEST'
              example:
                error:
                  code: invalid_request
                  message: The request body or parameters are invalid.
                  request_id: req_01K5A7N8QY2M4C6V9X3J
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.UNAUTHORIZED'
              example:
                error:
                  code: unauthorized
                  message: Provide a valid API key.
                  request_id: req_01K5A7P2CH8T6R4W9M1B
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.NOT_FOUND'
              example:
                error:
                  code: not_found
                  message: The requested resource was not found.
                  request_id: req_01K5A7R4WM9C2N6B8X3D
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.INTERNAL_SERVER_ERROR'
              example:
                error:
                  code: internal_error
                  message: An unexpected error occurred.
                  request_id: req_01K5A7S6FQ3V8H2N9C4M
      security:
        - Authorization: []
components:
  schemas:
    error.BAD_REQUEST:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Bad request
        code:
          type: string
          description: The error code
          example: BAD_REQUEST
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Bad request error (400)
      description: The error information
      example:
        code: BAD_REQUEST
        message: Bad request
        issues: []
    error.UNAUTHORIZED:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Unauthorized
        code:
          type: string
          description: The error code
          example: UNAUTHORIZED
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Unauthorized error (401)
      description: The error information
      example:
        code: UNAUTHORIZED
        message: Unauthorized
        issues: []
    error.NOT_FOUND:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Not found
        code:
          type: string
          description: The error code
          example: NOT_FOUND
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Not found error (404)
      description: The error information
      example:
        code: NOT_FOUND
        message: Not found
        issues: []
    error.INTERNAL_SERVER_ERROR:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Internal server error
        code:
          type: string
          description: The error code
          example: INTERNAL_SERVER_ERROR
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Internal server error error (500)
      description: The error information
      example:
        code: INTERNAL_SERVER_ERROR
        message: Internal server error
        issues: []
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer

````