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

> ## Agent Instructions
> Use Stable documentation by default. Honor an explicit Beta request or a URL under /docs/beta/. If the requested version conflicts with the installed CLI package or API origin, clarify the target before writing integration code.
> Pages under /docs/beta/ document Beta; other product pages document Stable. Keep the CLI package, commands, API origin, and credentials within the selected version. State the documentation version in your answer.
> For MCP search, always pass version: Stable or version: Beta. Unfiltered search mixes both versions. For filesystem reads, keep Beta queries under /beta/ and exclude /beta/ from Stable queries; discover paths before reading them.
> The public docs base is https://photon.codes/docs. Convert MCP page paths to public URLs under that base, preserving /beta/ when present. Read https://photon.codes/docs/skill.md for version selection and https://photon.codes/docs/llms.txt for the version indexes.

# System

> The System resource in the TypeScript, Python and Rust clients.

## Methods

<Tabs>
  <Tab title="TypeScript">
    **[Request app installation](/docs/beta/api-client/sdk/system/create-app-installation-request)**

    ```typescript TypeScript theme={null}
    photon.system.createAppInstallationRequest(input: CreateAppInstallationRequestInput, options?: RequestOptions): Promise<CreateAppInstallationRequestOutput>
    ```

    `POST /v1/installation-requests`

    **[Redeem installation credential](/docs/beta/api-client/sdk/system/redeem-app-installation-delivery)**

    ```typescript TypeScript theme={null}
    photon.system.redeemAppInstallationDelivery(input: RedeemAppInstallationDeliveryInput, options?: RequestOptions): Promise<RedeemAppInstallationDeliveryOutput>
    ```

    `POST /v1/installation-requests/redeem`
  </Tab>

  <Tab title="Python">
    **[Request app installation](/docs/beta/api-client/sdk/system/create-app-installation-request)**

    ```python Python theme={null}
    photon.system.create_app_installation_request(input: CreateAppInstallationRequestInput) -> models.CreateAppInstallationRequestResponse
    ```

    `POST /v1/installation-requests`

    **[Redeem installation credential](/docs/beta/api-client/sdk/system/redeem-app-installation-delivery)**

    ```python Python theme={null}
    photon.system.redeem_app_installation_delivery(input: RedeemAppInstallationDeliveryInput) -> models.RedeemAppInstallationDeliveryResponse
    ```

    `POST /v1/installation-requests/redeem`
  </Tab>

  <Tab title="Rust">
    **[Request app installation](/docs/beta/api-client/sdk/system/create-app-installation-request)**

    ```rust Rust theme={null}
    client.create_app_installation_request(body: &types::CreateAppInstallationRequestRequest).await -> Result<ResponseValue<types::CreateAppInstallationRequestResponse>, Error<CreateAppInstallationRequestError>>
    ```

    `POST /v1/installation-requests`

    **[Redeem installation credential](/docs/beta/api-client/sdk/system/redeem-app-installation-delivery)**

    ```rust Rust theme={null}
    client.redeem_app_installation_delivery(body: &types::RedeemAppInstallationDeliveryRequest).await -> Result<ResponseValue<types::RedeemAppInstallationDeliveryResponse>, Error<RedeemAppInstallationDeliveryError>>
    ```

    `POST /v1/installation-requests/redeem`
  </Tab>
</Tabs>

## Models

### CreateAppInstallationRequestResponse

<ResponseField name="appId" type={"string"} required />

<ResponseField name="appVersion" type={"string"} required />

<ResponseField name="createdAt" type={"string (date-time)"} required />

<ResponseField name="redirectUri" type={"string"} required />

<ResponseField name="requestId" type={"string"} required />

<ResponseField name="state" type={"string"} required />

### RedeemAppInstallationDeliveryResponse

**One of: CreatedAppInstallationDelivery**

<ResponseField name="clientId" type={"string"} required />

<ResponseField name="clientSecret" type={"string"} required />

<ResponseField name="installationId" type={"string"} required />

<ResponseField name="status" type={"\"created\""} required />

**One of: ExistingAppInstallationDelivery**

<ResponseField name="installationId" type={"string"} required />

<ResponseField name="status" type={"ExistingAppInstallationDeliveryStatus"} required />


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