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

# Check Progress

> Get real-time progress tracking for a service request, including media upload status and requirement fulfillment based on actual uploaded images.

<Note>Use this endpoint to check whether all required images have been uploaded before submitting a service request.</Note>


## OpenAPI

````yaml /openapi.json get /api/side-groups/progress
openapi: 3.1.0
info:
  title: Legitmark Partner API
  description: Comprehensive partner integration API for Legitmark authentication platform
  version: 2.0.0
  contact:
    name: Legitmark Support
    email: support@legitmark.com
    url: https://legitmark.com
servers:
  - url: https://api.legitmark.com
    description: Production API
security:
  - BearerAuth: []
tags:
  - name: Service Requests
    description: Create, retrieve, and manage authentication service requests.
  - name: Media Management
    description: Upload images for service request authentication.
  - name: Taxonomy
    description: Browse categories, types, brands, models, and services to build requests.
paths:
  /api/side-groups/progress:
    get:
      tags:
        - Service Requests
      summary: Check Progress
      description: >-
        Get real-time progress tracking for a service request, including media
        upload status and requirement fulfillment based on actual uploaded
        images.
      operationId: getServiceRequestProgress
      parameters:
        - name: sr_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
          description: Service request UUID
          example: 8e61c991-553a-4a58-9eb6-561b64c11908
      responses:
        '200':
          description: Service request progress retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  progress:
                    type: object
                    properties:
                      current_required:
                        type: integer
                        description: Number of required images uploaded
                        example: 2
                      total_required:
                        type: integer
                        description: Total number of required images needed
                        example: 2
                      current_optional:
                        type: integer
                        description: Number of optional images uploaded
                        example: 1
                      total_optional:
                        type: integer
                        description: Total number of optional images available
                        example: 3
                      met:
                        type: boolean
                        description: Whether minimum requirements are met
                        example: true
                  last_updated:
                    type: string
                    format: date-time
                    description: Last update timestamp of the service request
                    example: '2024-01-01T00:00:00.000Z'
                  last_s3_check:
                    type: string
                    format: date-time
                    description: Timestamp of the last S3 connectivity check
                    example: '2024-01-01T00:00:00.000Z'
                  last_upload_detected:
                    type: string
                    format: date-time
                    description: Timestamp when the last media upload was detected
                    example: '2024-01-01T00:00:00.000Z'
              example:
                success: true
                progress:
                  current_required: 6
                  total_required: 8
                  current_optional: 2
                  total_optional: 5
                  met: false
                last_updated: '2026-01-15T10:45:00.000Z'
                last_s3_check: '2026-01-15T10:45:30.000Z'
                last_upload_detected: '2026-01-15T10:44:53.000Z'
              examples:
                successful_response:
                  summary: Successful progress response
                  description: >-
                    Example call: GET
                    /api/side-groups/progress?sr_id=7a19de11-0e00-4a89-8d00-72f525178edc
                  value:
                    success: true
                    progress:
                      current_required: 2
                      total_required: 2
                      current_optional: 1
                      total_optional: 3
                      met: true
                    last_updated: '2024-01-01T00:00:00.000Z'
                    last_s3_check: '2024-01-01T00:00:00.000Z'
                    last_upload_detected: '2024-01-01T00:00:00.000Z'
                s3_error_response:
                  summary: Response with S3 connectivity issues
                  description: >-
                    Example call: GET
                    /api/side-groups/progress?sr_id=7a19de11-0e00-4a89-8d00-72f525178edc
                  value:
                    success: true
                    progress:
                      current_required: null
                      total_required: 2
                      current_optional: null
                      total_optional: 3
                      met: false
                    last_updated: '2024-01-01T00:00:00.000Z'
                    last_s3_check: '2024-01-01T00:00:00.000Z'
                    last_upload_detected: '2024-01-01T00:00:00.000Z'
                    warning: Media count unavailable due to S3 connectivity issues
                    s3_error: true
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Service request not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate limit exceeded
          headers:
            X-RateLimit-Limit-Partner:
              schema:
                type: string
              description: Partner-level request limit
            X-RateLimit-Remaining-Partner:
              schema:
                type: string
              description: Remaining partner requests
            X-RateLimit-Reset-Partner:
              schema:
                type: string
              description: Partner rate limit reset timestamp
            X-RateLimit-Limit-User:
              schema:
                type: string
              description: User-level request limit
            X-RateLimit-Remaining-User:
              schema:
                type: string
              description: Remaining user requests
            X-RateLimit-Reset-User:
              schema:
                type: string
              description: User rate limit reset timestamp
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait before retrying
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitErrorResponse'
      security: []
components:
  schemas:
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            code:
              type: integer
            timestamp:
              type: string
              format: date-time
            message:
              type: string
            details:
              type: string
    RateLimitErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            code:
              type: integer
              example: 429
            timestamp:
              type: string
              format: date-time
            message:
              type: string
              example: Rate limit exceeded
            details:
              type: object
              properties:
                limit_type:
                  type: string
                  enum:
                    - partner_level
                    - user_level
                    - endpoint_specific
                  example: partner_level
                current_usage:
                  type: integer
                  example: 1001
                limit:
                  type: integer
                  example: 1000
                reset_time:
                  type: string
                  format: date-time
                  example: '2024-01-01T00:01:00.000Z'
                retry_after_seconds:
                  type: integer
                  example: 60
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Bearer token authentication. Use your API key in the format: Bearer
        leo_xxxxxxxx
      x-default: leo_your_api_key_here

````