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

# Read installation state

> Installation mutations retain their original acknowledgement for the latest 128 successful mutations per installation. Replays do not extend retention. After eviction, an original stale-revision request returns 409 without reapplying. Use GET installation state for current state.



## OpenAPI

````yaml /openapi.json get /api/v1/sdk/installations/{installationId}
openapi: 3.1.0
info:
  title: Galinum API
  version: '2026-08-22'
  description: >-
    Galinum's HTTP API. SDK endpoints power the browser SDK. Management
    endpoints use a project secret. The scoped hosted-agent credential writes
    only through lease-fenced evaluation and GitHub source endpoints.
    Managed-only operations return 501 on the self-host server.
servers:
  - url: https://galinum.com
    description: Production
security:
  - publishableKey: []
paths:
  /api/v1/sdk/installations/{installationId}:
    get:
      tags:
        - Installations
      summary: Read installation state
      description: >-
        Installation mutations retain their original acknowledgement for the
        latest 128 successful mutations per installation. Replays do not extend
        retention. After eviction, an original stale-revision request returns
        409 without reapplying. Use GET installation state for current state.
      operationId: getInstallation
      parameters:
        - name: installationId
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 128
      responses:
        '200':
          description: Current installation state or replayed acknowledgement.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstallationResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  error:
                    type: string
                    minLength: 1
                    maxLength: 256
                required:
                  - error
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  error:
                    type: string
                    minLength: 1
                    maxLength: 256
                required:
                  - error
        '404':
          description: Not found
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  error:
                    type: string
                    minLength: 1
                    maxLength: 256
                required:
                  - error
        '409':
          description: Revision or replay conflict
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  error:
                    type: string
                    minLength: 1
                    maxLength: 256
                required:
                  - error
        '413':
          description: Body too large
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  error:
                    type: string
                    minLength: 1
                    maxLength: 256
                required:
                  - error
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  error:
                    type: string
                    minLength: 1
                    maxLength: 256
                required:
                  - error
      security:
        - publishableKey: []
          installationCapability: []
components:
  schemas:
    InstallationResponse:
      type: object
      additionalProperties: false
      properties:
        installation:
          $ref: '#/components/schemas/InstallationState'
      required:
        - installation
    InstallationState:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 128
        appId:
          type: string
          minLength: 1
          maxLength: 256
        platform:
          type: string
          enum:
            - ios
            - android
        environment:
          type: string
          enum:
            - development
            - production
        userId:
          type:
            - string
            - 'null'
          maxLength: 256
        bindingGeneration:
          type: integer
          minimum: 0
          maximum: 9007199254740991
        revision:
          type: integer
          minimum: 0
          maximum: 9007199254740991
        tokenRevision:
          type: integer
          minimum: 0
          maximum: 9007199254740991
        hasToken:
          type: boolean
        permission:
          type: string
          enum:
            - unknown
            - not_determined
            - denied
            - provisional
            - granted
        consent:
          type: boolean
        capabilities:
          $ref: '#/components/schemas/InstallationCapabilities'
        lastActiveAt:
          type:
            - integer
            - 'null'
          minimum: 0
        createdAt:
          type: integer
          minimum: 0
          maximum: 9007199254740991
      required:
        - id
        - appId
        - platform
        - environment
        - userId
        - bindingGeneration
        - revision
        - tokenRevision
        - hasToken
        - permission
        - consent
        - capabilities
        - lastActiveAt
        - createdAt
    InstallationCapabilities:
      type: object
      additionalProperties: false
      properties:
        actions:
          type: array
          maxItems: 32
          uniqueItems: true
          items:
            type: string
            minLength: 1
            maxLength: 64
        channels:
          type: array
          maxItems: 64
          uniqueItems: true
          items:
            type: string
            minLength: 1
            maxLength: 128
        richImages:
          type: boolean
        categories:
          type: array
          maxItems: 16
          items:
            type: object
            additionalProperties: false
            required:
              - id
              - actions
            properties:
              id:
                type: string
                minLength: 1
                maxLength: 128
              actions:
                type: array
                maxItems: 4
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      minLength: 1
                      maxLength: 64
                      pattern: ^[a-zA-Z0-9_-]+$
                    title:
                      type: string
                      minLength: 1
                      maxLength: 64
                  required:
                    - id
                    - title
                  additionalProperties: false
      required:
        - actions
        - channels
        - richImages
  securitySchemes:
    publishableKey:
      type: http
      scheme: bearer
      description: >-
        Your project's publishable key (`pk_pub_…`). Safe to expose in the
        browser — it identifies the project and is rate-limited, not secret.
    installationCapability:
      type: apiKey
      in: header
      name: X-Galinum-Installation-Capability
      description: >-
        Locally generated installation capability. Required with the project
        publishable key for installation reads and mutations.

````

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