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

# Get run status

> Retrieves the progress status of the requested prompt run (runID), the total, finished, succeeded, failed, and running counts, and the detailed status of each item.

### Errors

| HTTP | Code | Description |
| --- | --- | --- |
| 400 | `COMMON_BINDING` | Invalid runID format (`PLATFORM_INVALID_ID` in details) |
| 401 | `COMMON_UNAUTHORIZED` | API key or access token is missing or invalid |
| 402 | `INSUFFICIENT_CREDITS` | The organization's credit balance is lower than the unit price of this request |
| 404 | `TASK_GENERATION_RUN_NOT_FOUND` | The prompt run does not exist or belongs to another organization |
| 429 | `PLATFORM_RATE_LIMIT_EXCEEDED` | Rate limit exceeded. Wait the number of seconds in the `Retry-After` header, then retry |
| 500 | — | Internal server error. Returns `message` and `requestID` without `code` |

Poll about every 30 seconds until `status` becomes `FINISHED`.

## FAQ

**Why is there no answer body?**
The `answers` field in this response only contains the progress of each run. For the body and sources, query [List answers](https://docs.trychainshift.ai/en/api-reference/answers/list-answers.md) with the `runID` filter.

**The status is `FINISHED` but `failedCount` is non-zero.**
Even if individual runs fail, the run request ends as `FINISHED`. Failed runs produce no answer and are not charged.


## OpenAPI

````yaml openapi.en.json GET /v1/platform/runs/{runID}
openapi: 3.1.0
info:
  description: >-
    Platform API for external partners. Uses organization API key based
    authentication.

    ### Common request limits

    - The request body size is limited to 2MiB. Exceeding it returns 413 with
    the `COMMON_REQUEST_BODY_TOO_LARGE` code.

    - Array parameters and string fields have per-endpoint count and length
    limits. The limits are stated in each field or parameter description, and
    violating them returns 400 with the `COMMON_VALIDATION` code.

    ### Error responses

    The error response body always has the same three fields regardless of the
    status code.

    | Field | Type | Meaning |

    | --- | --- | --- |

    | `code` | string | A fixed identifier for the error type. This is the only
    value clients should branch on. The codes each endpoint returns are listed
    in the "Errors" table of that API. |

    | `message` | string | A human-readable, one-line summary of the whole
    error. There is always exactly one. |

    | `details` | array of strings | Individual reasons that do not fit in the
    single `message` line. Even a single reason is returned as an array of
    length 1, and the field is omitted when there is nothing to include. |

    - `details` is an array in every error. It is never returned as a string or
    an object, so no type-based branching is needed.

    - The wording of `details` is not a fixed contract. Use it only for display
    and debugging, and do not parse the strings to branch. Branch on `code`
    instead.

    - `details` is the only field that carries multiple reasons. There is no
    `messages` field in the response.

    - On validation failure (`COMMON_VALIDATION`), `details` contains one
    `"field: reason"` line per violated field. Example:
    `{"code":"COMMON_VALIDATION","message":"Data validation
    failed","details":["keywords: up to 100 items can be entered"]}`

    - `message` defaults to Korean and is returned in English when you send
    `Accept-Language: en`. `details` follows the same rule when it carries
    per-field reasons such as validation failures, but errors that include raw
    text for diagnostic purposes may contain wording in a language other than
    the requested one.

    - Only 500 has a different shape. It returns `message` and a `requestID` to
    reference when contacting support, without `code`.
  title: Platform API
  version: '1.0'
servers:
  - url: https://platform-api.trychainshift.ai/api
security: []
tags:
  - description: >-
      The top-level account unit that API keys belong to. Retrieve the
      organization's basic information.
    name: Organization
  - description: >-
      A target brand whose exposure in AI services is monitored. Provides brand
      registration, retrieval, update, and deletion.
    name: Brand
  - description: >-
      Keyword intelligence for analyzing brands and markets. Provides Google and
      Naver search metrics, related and autocomplete keyword lookups, and site
      URL based keyword analysis.
    name: Keyword (Beta)
  - description: >-
      A group that organizes prompts by purpose. Provides create, get, update,
      and delete operations for prompt sets.
    name: PromptSet
  - description: >-
      A sentence-level unit of a query sent to an AI service. Provides prompt
      create, get, update, and delete, plus bulk creation.
    name: Prompt
  - description: AI service models used for prompt runs. Lists the supported models.
    name: Model
  - description: The region used to run prompts. Retrieves the list of supported regions.
    name: Region
  - description: >-
      The unit of work that actually runs prompts against AI services. Provides
      prompt run requests and retrieval of progress status and lists.
    name: Run
  - description: >-
      An AI service response collected by a run. Retrieves answers including
      sources and search queries.
    name: Answer
  - description: >-
      Statistics on the sources cited in answers, at the domain and URL level.
      Retrieve the citation summary and per-domain and per-URL citation
      statistics.
    name: SourceStatistics (Beta)
  - description: >-
      Statistics on tokens (Kiwi nouns) in answer bodies. Retrieves a ranking of
      the most frequent tokens and the tokens near a specific word.
    name: AnswerStatistics (Beta)
  - description: >-
      Statistics on the search queries (fan-outs) the AI actually issued while
      generating answers. Retrieves a ranking of search queries by occurrence
      count.
    name: FanoutStatistics (Beta)
  - description: >-
      An auxiliary feature that identifies proper nouns in text. Provides proper
      noun extraction.
    name: ProperNoun (Beta)
  - description: >-
      Organization credit balance and Platform API billing information.
      Retrieves the current credit balance.
    name: Credit
externalDocs:
  description: ''
  url: ''
paths:
  /v1/platform/runs/{runID}:
    get:
      tags:
        - Run
      summary: Get prompt run status
      description: >-
        Retrieves the progress status of the requested prompt run (runID), the
        total, finished, succeeded, failed, and running counts, and the detailed
        status of each item.


        ### Errors


        | HTTP | Code | Description |

        | --- | --- | --- |

        | 400 | `COMMON_BINDING` | Invalid runID format (`PLATFORM_INVALID_ID`
        in details) |

        | 401 | `COMMON_UNAUTHORIZED` | API key or access token is missing or
        invalid |

        | 402 | `INSUFFICIENT_CREDITS` | The organization's credit balance is
        lower than the unit price of this request |

        | 404 | `TASK_GENERATION_RUN_NOT_FOUND` | The prompt run does not exist
        or belongs to another organization |

        | 429 | `PLATFORM_RATE_LIMIT_EXCEEDED` | Rate limit exceeded. Wait the
        number of seconds in the `Retry-After` header, then retry |

        | 500 | — | Internal server error. Returns `message` and `requestID`
        without `code` |
      operationId: getPlatformRunStatus
      parameters:
        - description: >-
            ID of the prompt run to retrieve: enter the id from the prompt run
            request response as is
          example: S8cqDSjSot67bCK6YtmvHw
          in: path
          name: runID
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/domain.GetRunStatusResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/domain.BindingError'
          description: Invalid runID format
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/domain.UnauthorizedError'
          description: API key or access token is missing or invalid
        '402':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/domain.InsufficientCreditsError'
          description: >-
            The organization's credit balance is lower than the unit price of
            this request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/domain.RunNotFoundError'
          description: The prompt run does not exist or is owned by another organization
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/domain.RateLimitExceededError'
          description: >-
            Rate limit exceeded. Wait the number of seconds in the Retry-After
            header, then retry
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/domain.InternalServerError'
          description: >-
            Internal server error. Include the requestID in your report so it
            can be traced
      security:
        - OrgAPIKeyAuth: []
components:
  schemas:
    domain.GetRunStatusResponse:
      properties:
        answers:
          description: >-
            Detailed progress status per item (1 item per prompt × model ×
            repeat)
          items:
            $ref: '#/components/schemas/domain.RunAnswerStatus'
          type: array
          uniqueItems: false
        failedCount:
          description: Number of failed or skipped items
          example: 12
          type: integer
        finishedCount:
          description: Number of finished items (success + failed)
          example: 5000
          type: integer
        id:
          description: >-
            ID of the retrieved prompt run. Same value as the id in the submit
            response and the runID in the request path
          example: S8cqDSjSot67bCK6YtmvHw
          type: string
        runningCount:
          description: Number of items not yet finished
          example: 0
          type: integer
        status:
          description: >-
            Overall progress status of the prompt run. RUNNING: some items have
            not finished yet (runningCount > 0), FINISHED: all items have
            finished (finishedCount == totalCount).

            It transitions from RUNNING to FINISHED only once and never goes
            back. Right after submission, while run items are not yet prepared
            and totalCount is 0, the status is still RUNNING.

            The status becomes FINISHED once every item has finished even if
            some failed, so use successCount and failedCount to determine
            success
          enum:
            - RUNNING
            - FINISHED
          example: FINISHED
          type: string
        successCount:
          description: Number of items for which answer classification is also complete
          example: 4988
          type: integer
        totalCount:
          description: >-
            Total number of run items (number of prompts × number of models ×
            repeat count)
          example: 5000
          type: integer
      type: object
    domain.BindingError:
      properties:
        code:
          description: Error code
          example: COMMON_BINDING
          type: string
        details:
          description: >-
            Reasons the resolution failed (an array of length 1 even when there
            is a single reason)
          example:
            - 'PLATFORM_INVALID_ID: Invalid ID format.'
          items:
            type: string
          type: array
          uniqueItems: false
        message:
          description: >-
            Error message (Korean by default, English when Accept-Language: en
            is specified)
          example: Unable to process the request data
          type: string
      type: object
    domain.UnauthorizedError:
      properties:
        code:
          description: Error code
          example: COMMON_UNAUTHORIZED
          type: string
        message:
          description: >-
            Error message (Korean by default, English when Accept-Language: en
            is specified)
          example: Unauthenticated user
          type: string
      type: object
    domain.InsufficientCreditsError:
      properties:
        code:
          description: Error code
          example: INSUFFICIENT_CREDITS
          type: string
        message:
          description: >-
            Error message (Korean by default, English when Accept-Language: en
            is specified)
          example: Insufficient credits.
          type: string
      type: object
    domain.RunNotFoundError:
      properties:
        code:
          description: Error code
          example: TASK_GENERATION_RUN_NOT_FOUND
          type: string
        message:
          description: >-
            Error message (Korean by default, English when Accept-Language: en
            is specified)
          example: Task creation run record not found
          type: string
      type: object
    domain.RateLimitExceededError:
      properties:
        code:
          description: Error code
          example: PLATFORM_RATE_LIMIT_EXCEEDED
          type: string
        message:
          description: >-
            Error message (Korean by default, English when Accept-Language: en
            is specified)
          example: Too many requests. Please try again later.
          type: string
      type: object
    domain.InternalServerError:
      properties:
        message:
          description: Error message (not localized)
          example: Internal Server Error
          type: string
        requestID:
          description: >-
            Request identifier to reference in support inquiries (same value as
            the X-Request-Id response header)
          example: bkZqnHQepkgTOocTvyHWSlHcGzRqQbZk
          type: string
      type: object
    domain.RunAnswerStatus:
      properties:
        location:
          description: >-
            Code of the location (city-level, below country) where this item
            ran. null if location was not specified at submission
          example: US-NEW_YORK
          type: string
        model:
          description: >-
            Model that ran this item. One of the models values specified at
            submission
          example: GEMINI
          type: string
        promptID:
          description: >-
            ID of the prompt this item ran. One of the promptIDs values
            specified at submission (or a prompt in the set, if submitted with
            promptSetID)
          example: fTZ200JfbMwpQDXPnS8isw
          type: string
        query:
          description: The query text actually sent to the model
          example: How can we get our service to appear in AI search?
          type: string
        region:
          description: >-
            Code of the region where this item ran. The region specified at
            submission (KR if omitted)
          example: KR
          type: string
        status:
          description: >-
            Run status of a single item. PENDING: the answer is not ready yet
            (collection or classification in progress), SUCCESS: answer
            classification is complete and the answer can be retrieved,

            FAILED: the item failed or was skipped (for example, the model did
            not produce an AI answer). It transitions from PENDING to SUCCESS or
            FAILED only once and does not change after it finishes
          enum:
            - PENDING
            - SUCCESS
            - FAILED
          example: SUCCESS
          type: string
      type: object
  securitySchemes:
    OrgAPIKeyAuth:
      description: '"Enter your organization API key. Example: ''cs_live_xxxx''"'
      in: header
      name: API-Key
      type: apiKey

````

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