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

# Get FHIR Push Transaction Status

> Poll the ingestion status for a FHIR bundle upload transaction (Step 3)

Use this endpoint to check the ingestion status of a FHIR bundle upload. This is **Step 3** of the CKG data ingestion workflow.

Provide the `transaction_id` returned by the [Request upload URL API](/patient-summary-api-reference/ckg-data-ingestion/upload) to retrieve the current status of the ingestion job.

## Ingestion status values

An ingestion job progresses through the following status values:

| Status      | Terminal | Description                                                                        |
| ----------- | -------- | ---------------------------------------------------------------------------------- |
| `CREATED`   | No       | The ingestion job has been created and is waiting for the FHIR bundle upload.      |
| `READY`     | No       | The FHIR bundle has been uploaded and is queued for processing.                    |
| `RUNNING`   | No       | The FHIR bundle is being processed.                                                |
| `COMPLETED` | Yes      | The FHIR bundle was successfully ingested into the Clinical Knowledge Graph (CKG). |
| `FAILED`    | Yes      | The ingestion failed. See the `error` field for details.                           |
| `ARCHIVED`  | Yes      | The upload URL expired before the FHIR bundle was uploaded.                        |

<Note>
  **Polling recommendations**

  Follow these guidelines when polling for the ingestion status:

  * Poll this endpoint every **5 seconds**.
  * Stop polling when the status is `COMPLETED`, `FAILED`, or `ARCHIVED`.
  * Ingestion status is available for **7 days** after the last status update.
</Note>

<Tip>
  When the status is `COMPLETED`, the FHIR data is available in the Clinical Knowledge Graph (CKG). You can then generate a Patient Summary for the encounters in the uploaded FHIR bundle.
</Tip>

Once the ingestion status is `COMPLETED`, generate Patient Summaries for the encounters by using the following endpoints:

<div className="doc-guide-btn-row">
  <a href="/patient-summary-api-reference/summary-generation/encounter-summary" className="doc-guide-btn">
    Generate Patient Summary
  </a>

  <a href="/patient-summary-api-reference/ckg-data-ingestion/upload" className="doc-guide-btn">
    Upload Another Bundle
  </a>
</div>


## OpenAPI

````yaml GET /api/v1/fhir-push/status/{transaction_id}
openapi: 3.0.1
info:
  title: Suki Developer Platform
  description: >-
    REST and WebSocket APIs for the Suki Developer Platform. Authenticate with
    Login or Register to obtain a Suki access token, then integrate ambient
    clinical documentation, form filling, transcription, and reference metadata
    endpoints.
  contact: {}
  version: '1.0'
servers:
  - url: https://sdp.suki.ai
    description: >-
      Production base URL for Suki Developer Platform REST APIs. WebSocket
      endpoints use the same host with `wss://`.
security:
  - SukiTokenAuth: []
paths:
  /api/v1/fhir-push/status/{transaction_id}:
    get:
      tags:
        - /api/v1/fhir-push
      summary: Get FHIR Push transaction status
      description: >-
        Poll the ingestion status for a FHIR bundle upload transaction. This is
        Step 3 of the CKG Data Ingestion workflow. Use the `transaction_id`
        returned from GET /api/v1/fhir-push/upload-url. Status values: CREATED
        (transaction created, awaiting upload), READY (bundle uploaded, queued
        for processing), RUNNING (actively ingesting), COMPLETED (successfully
        ingested into CKG), FAILED (processing error, see error field), ARCHIVED
        (upload not received within the allowed window). Poll at reasonable
        intervals (e.g., every 5 seconds) and stop once you receive a terminal
        status (COMPLETED, FAILED, or ARCHIVED). Transaction status is retained
        for 7 days after the last update.
      parameters:
        - name: transaction_id
          in: path
          description: >-
            Transaction identifier returned by `GET
            /api/v1/fhir-push/upload-url`.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Transaction status returned successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  transaction_id:
                    type: string
                    description: Unique identifier for this ingestion transaction.
                  organization_id:
                    type: string
                    description: Organization identifier associated with this upload.
                  correlation_id:
                    type: string
                    description: >-
                      Client-supplied or server-generated correlation ID for
                      tracing.
                  status:
                    type: string
                    description: >-
                      Current transaction status: CREATED | READY | RUNNING |
                      COMPLETED | FAILED | ARCHIVED
                  created_at:
                    type: string
                    format: date-time
                    description: RFC 3339 timestamp when the transaction was created.
                  updated_at:
                    type: string
                    format: date-time
                    description: RFC 3339 timestamp of the last status update.
                  completed_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      RFC 3339 timestamp when processing completed (present for
                      terminal statuses).
                  error:
                    type: string
                    nullable: true
                    description: >-
                      Error details when the transaction status is FAILED;
                      otherwise null.
                required:
                  - transaction_id
                  - status
                  - created_at
              examples:
                completed:
                  value:
                    transaction_id: dea454fe-fecb-4cf0-aaa7-fa84d19c28f8
                    organization_id: FHIR Push Medent Org 1
                    correlation_id: encounter-12345-upload-1
                    status: COMPLETED
                    created_at: '2026-05-18T06:40:42Z'
                    updated_at: '2026-05-18T06:41:05Z'
                    completed_at: '2026-05-18T06:41:05Z'
                    error: null
        '401':
          description: Unauthorized. Invalid or missing SDP JWT bearer token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.AuthenticationError'
        '403':
          description: >-
            Forbidden. Token lacks required scopes or access to the
            organization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ForbiddenError'
        '404':
          description: Not Found. Unknown transaction_id or retention window exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.NotFoundError'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.InternalServerError'
      security:
        - SukiTokenAuth: []
      x-codeSamples:
        - lang: bash
          label: cURL
          source: |-
            curl --request GET \
              --url https://sdp.suki.ai/api/v1/fhir-push/status/<transaction_id> \
              --header 'Authorization: Bearer <sdp_token>'
components:
  schemas:
    controllers.AuthenticationError:
      description: Authentication Failure Response
      type: object
      properties:
        code:
          type: integer
          example: 401
        message:
          type: string
          example: invalid token
    controllers.ForbiddenError:
      type: object
      properties:
        code:
          type: integer
          example: 403
          description: HTTP status code for the error.
        message:
          type: string
          example: forbidden
          description: Human-readable description of the authorization failure.
      description: Error response when the caller lacks permission.
    controllers.NotFoundError:
      description: Not Found Response
      type: object
      properties:
        code:
          type: integer
          example: 404
        message:
          type: string
          example: not found
    controllers.InternalServerError:
      description: Internal Server Error Response
      type: object
      properties:
        code:
          type: integer
          example: 500
        message:
          type: string
          example: internal server error
  securitySchemes:
    SukiTokenAuth:
      type: apiKey
      in: header
      name: sdp_suki_token
      description: >-
        Suki access token (`suki_token`) from Login or Register. Expires after
        one hour.

````