> ## 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.

# Account

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

## Methods

<Tabs>
  <Tab title="TypeScript">
    **[List Account Service Keys](/docs/beta/api-client/sdk/account/list-account-service-keys)**

    ```typescript TypeScript theme={null}
    photon.account.listAccountServiceKeys(input?: ListAccountServiceKeysInput, options?: RequestOptions): Promise<ListAccountServiceKeysOutput>
    ```

    `GET /v1/account/service-keys`

    **[List connected applications](/docs/beta/api-client/sdk/account/list-authorized-applications)**

    ```typescript TypeScript theme={null}
    photon.account.listAuthorizedApplications(input?: ListAuthorizedApplicationsInput, options?: RequestOptions): Promise<ListAuthorizedApplicationsOutput>
    ```

    `GET /v1/account/oauth/authorized-applications`

    **[Get the authenticated account](/docs/beta/api-client/sdk/account/get)**

    ```typescript TypeScript theme={null}
    photon.account.get(input?: GetAccountInput, options?: RequestOptions): Promise<GetAccountOutput>
    ```

    `GET /v1/account`

    **[Create an Account Service Key](/docs/beta/api-client/sdk/account/create-account-service-key)**

    ```typescript TypeScript theme={null}
    photon.account.createAccountServiceKey(input: CreateAccountServiceKeyInput, options?: RequestOptions): Promise<CreateAccountServiceKeyOutput>
    ```

    `POST /v1/account/service-keys`

    **[Create a profile picture upload](/docs/beta/api-client/sdk/account/create-profile-picture-upload)**

    ```typescript TypeScript theme={null}
    photon.account.createProfilePictureUpload(input: CreateAccountProfilePictureUploadInput, options?: RequestOptions): Promise<CreateAccountProfilePictureUploadOutput>
    ```

    `POST /v1/account/profile-picture/uploads`

    **[Start a phone number verification](/docs/beta/api-client/sdk/account/start-phone-verification)**

    ```typescript TypeScript theme={null}
    photon.account.startPhoneVerification(input: StartAccountPhoneVerificationInput, options?: RequestOptions): Promise<StartAccountPhoneVerificationOutput>
    ```

    `POST /v1/account/phone/verifications`

    **[Commit a profile picture](/docs/beta/api-client/sdk/account/commit-profile-picture)**

    ```typescript TypeScript theme={null}
    photon.account.commitProfilePicture(input: CommitAccountProfilePictureInput, options?: RequestOptions): Promise<CommitAccountProfilePictureOutput>
    ```

    `PUT /v1/account/profile-picture`

    **[Confirm a phone number verification](/docs/beta/api-client/sdk/account/confirm-phone-verification)**

    ```typescript TypeScript theme={null}
    photon.account.confirmPhoneVerification(input: ConfirmAccountPhoneVerificationInput, options?: RequestOptions): Promise<ConfirmAccountPhoneVerificationOutput>
    ```

    `PUT /v1/account/phone`

    **[Update the authenticated account](/docs/beta/api-client/sdk/account/update)**

    ```typescript TypeScript theme={null}
    photon.account.update(input: UpdateAccountInput, options?: RequestOptions): Promise<UpdateAccountOutput>
    ```

    `PATCH /v1/account`

    **[Delete the authenticated account](/docs/beta/api-client/sdk/account/delete)**

    ```typescript TypeScript theme={null}
    photon.account.delete(input?: DeleteAccountInput, options?: RequestOptions): Promise<DeleteAccountOutput>
    ```

    `DELETE /v1/account`

    **[Remove a profile picture](/docs/beta/api-client/sdk/account/reset-profile-picture)**

    ```typescript TypeScript theme={null}
    photon.account.resetProfilePicture(input: ResetAccountProfilePictureInput, options?: RequestOptions): Promise<ResetAccountProfilePictureOutput>
    ```

    `DELETE /v1/account/profile-picture`

    **[Revoke an Account Service Key](/docs/beta/api-client/sdk/account/revoke-account-service-key)**

    ```typescript TypeScript theme={null}
    photon.account.revokeAccountServiceKey(input: RevokeAccountServiceKeyInput, options?: RequestOptions): Promise<RevokeAccountServiceKeyOutput>
    ```

    `DELETE /v1/account/service-keys/{serviceKeyId}`

    **[Revoke a connected application](/docs/beta/api-client/sdk/account/revoke-authorized-application)**

    ```typescript TypeScript theme={null}
    photon.account.revokeAuthorizedApplication(input: RevokeAuthorizedApplicationInput, options?: RequestOptions): Promise<RevokeAuthorizedApplicationOutput>
    ```

    `DELETE /v1/account/oauth/authorized-applications/{applicationId}`
  </Tab>

  <Tab title="Python">
    **[List Account Service Keys](/docs/beta/api-client/sdk/account/list-account-service-keys)**

    ```python Python theme={null}
    photon.account.list_account_service_keys(input: ListAccountServiceKeysInput | None = None) -> models.ListAccountServiceKeysResponse
    ```

    `GET /v1/account/service-keys`

    **[List connected applications](/docs/beta/api-client/sdk/account/list-authorized-applications)**

    ```python Python theme={null}
    photon.account.list_authorized_applications(input: ListAuthorizedApplicationsInput | None = None) -> models.ListAuthorizedApplicationsResponse
    ```

    `GET /v1/account/oauth/authorized-applications`

    **[Get the authenticated account](/docs/beta/api-client/sdk/account/get)**

    ```python Python theme={null}
    photon.account.get(input: GetAccountInput | None = None) -> models.Account
    ```

    `GET /v1/account`

    **[Create an Account Service Key](/docs/beta/api-client/sdk/account/create-account-service-key)**

    ```python Python theme={null}
    photon.account.create_account_service_key(input: CreateAccountServiceKeyInput) -> models.CreateAccountServiceKeyResponse
    ```

    `POST /v1/account/service-keys`

    **[Create a profile picture upload](/docs/beta/api-client/sdk/account/create-profile-picture-upload)**

    ```python Python theme={null}
    photon.account.create_profile_picture_upload(input: CreateAccountProfilePictureUploadInput) -> models.ProfilePictureUpload
    ```

    `POST /v1/account/profile-picture/uploads`

    **[Start a phone number verification](/docs/beta/api-client/sdk/account/start-phone-verification)**

    ```python Python theme={null}
    photon.account.start_phone_verification(input: StartAccountPhoneVerificationInput) -> models.StartAccountPhoneVerificationResponse
    ```

    `POST /v1/account/phone/verifications`

    **[Commit a profile picture](/docs/beta/api-client/sdk/account/commit-profile-picture)**

    ```python Python theme={null}
    photon.account.commit_profile_picture(input: CommitAccountProfilePictureInput) -> models.Account
    ```

    `PUT /v1/account/profile-picture`

    **[Confirm a phone number verification](/docs/beta/api-client/sdk/account/confirm-phone-verification)**

    ```python Python theme={null}
    photon.account.confirm_phone_verification(input: ConfirmAccountPhoneVerificationInput) -> models.Account
    ```

    `PUT /v1/account/phone`

    **[Update the authenticated account](/docs/beta/api-client/sdk/account/update)**

    ```python Python theme={null}
    photon.account.update(input: UpdateAccountInput) -> models.Account
    ```

    `PATCH /v1/account`

    **[Delete the authenticated account](/docs/beta/api-client/sdk/account/delete)**

    ```python Python theme={null}
    photon.account.delete(input: DeleteAccountInput | None = None) -> models.Account
    ```

    `DELETE /v1/account`

    **[Remove a profile picture](/docs/beta/api-client/sdk/account/reset-profile-picture)**

    ```python Python theme={null}
    photon.account.reset_profile_picture(input: ResetAccountProfilePictureInput) -> models.Account
    ```

    `DELETE /v1/account/profile-picture`

    **[Revoke an Account Service Key](/docs/beta/api-client/sdk/account/revoke-account-service-key)**

    ```python Python theme={null}
    photon.account.revoke_account_service_key(input: RevokeAccountServiceKeyInput) -> models.RevokeAccountServiceKeyResponse
    ```

    `DELETE /v1/account/service-keys/{serviceKeyId}`

    **[Revoke a connected application](/docs/beta/api-client/sdk/account/revoke-authorized-application)**

    ```python Python theme={null}
    photon.account.revoke_authorized_application(input: RevokeAuthorizedApplicationInput) -> None
    ```

    `DELETE /v1/account/oauth/authorized-applications/{applicationId}`
  </Tab>

  <Tab title="Rust">
    **[List Account Service Keys](/docs/beta/api-client/sdk/account/list-account-service-keys)**

    ```rust Rust theme={null}
    client.list_account_service_keys().await -> Result<ResponseValue<types::ListAccountServiceKeysResponse>, Error<ListAccountServiceKeysError>>
    ```

    `GET /v1/account/service-keys`

    **[List connected applications](/docs/beta/api-client/sdk/account/list-authorized-applications)**

    ```rust Rust theme={null}
    client.list_authorized_applications(params: Option<ListAuthorizedApplicationsParams>).await -> Result<ResponseValue<types::ListAuthorizedApplicationsResponse>, Error<ListAuthorizedApplicationsError>>
    ```

    `GET /v1/account/oauth/authorized-applications`

    **[Get the authenticated account](/docs/beta/api-client/sdk/account/get)**

    ```rust Rust theme={null}
    client.get_account().await -> Result<ResponseValue<types::Account>, Error<GetAccountError>>
    ```

    `GET /v1/account`

    **[Create an Account Service Key](/docs/beta/api-client/sdk/account/create-account-service-key)**

    ```rust Rust theme={null}
    client.create_account_service_key(idempotency_key: String, body: &types::CreateAccountServiceKeyRequest).await -> Result<ResponseValue<types::CreateAccountServiceKeyResponse>, Error<CreateAccountServiceKeyError>>
    ```

    `POST /v1/account/service-keys`

    **[Create a profile picture upload](/docs/beta/api-client/sdk/account/create-profile-picture-upload)**

    ```rust Rust theme={null}
    client.create_account_profile_picture_upload(body: &types::ProfilePictureUploadRequest).await -> Result<ResponseValue<types::ProfilePictureUpload>, Error<CreateAccountProfilePictureUploadError>>
    ```

    `POST /v1/account/profile-picture/uploads`

    **[Start a phone number verification](/docs/beta/api-client/sdk/account/start-phone-verification)**

    ```rust Rust theme={null}
    client.start_account_phone_verification(body: &types::StartAccountPhoneVerificationRequest).await -> Result<ResponseValue<types::StartAccountPhoneVerificationResponse>, Error<StartAccountPhoneVerificationError>>
    ```

    `POST /v1/account/phone/verifications`

    **[Commit a profile picture](/docs/beta/api-client/sdk/account/commit-profile-picture)**

    ```rust Rust theme={null}
    client.commit_account_profile_picture(idempotency_key: String, body: &types::CommitAccountProfilePictureRequest).await -> Result<ResponseValue<types::Account>, Error<CommitAccountProfilePictureError>>
    ```

    `PUT /v1/account/profile-picture`

    **[Confirm a phone number verification](/docs/beta/api-client/sdk/account/confirm-phone-verification)**

    ```rust Rust theme={null}
    client.confirm_account_phone_verification(body: &types::ConfirmAccountPhoneVerificationRequest).await -> Result<ResponseValue<types::Account>, Error<ConfirmAccountPhoneVerificationError>>
    ```

    `PUT /v1/account/phone`

    **[Update the authenticated account](/docs/beta/api-client/sdk/account/update)**

    ```rust Rust theme={null}
    client.update_account(idempotency_key: String, body: &types::UpdateAccountRequest).await -> Result<ResponseValue<types::Account>, Error<UpdateAccountError>>
    ```

    `PATCH /v1/account`

    **[Delete the authenticated account](/docs/beta/api-client/sdk/account/delete)**

    ```rust Rust theme={null}
    client.delete_account().await -> Result<ResponseValue<types::Account>, Error<DeleteAccountError>>
    ```

    `DELETE /v1/account`

    **[Remove a profile picture](/docs/beta/api-client/sdk/account/reset-profile-picture)**

    ```rust Rust theme={null}
    client.reset_account_profile_picture(idempotency_key: String).await -> Result<ResponseValue<types::Account>, Error<ResetAccountProfilePictureError>>
    ```

    `DELETE /v1/account/profile-picture`

    **[Revoke an Account Service Key](/docs/beta/api-client/sdk/account/revoke-account-service-key)**

    ```rust Rust theme={null}
    client.revoke_account_service_key(idempotency_key: String, service_key_id: String).await -> Result<ResponseValue<types::RevokeAccountServiceKeyResponse>, Error<RevokeAccountServiceKeyError>>
    ```

    `DELETE /v1/account/service-keys/{serviceKeyId}`

    **[Revoke a connected application](/docs/beta/api-client/sdk/account/revoke-authorized-application)**

    ```rust Rust theme={null}
    client.revoke_authorized_application(application_id: String).await -> Result<ResponseValue<()>, Error<RevokeAuthorizedApplicationError>>
    ```

    `DELETE /v1/account/oauth/authorized-applications/{applicationId}`
  </Tab>
</Tabs>

## Models

### ListAccountServiceKeysResponse

<ResponseField name="serviceKeys" type={"array of AccountServiceKey"} required />

### ListAuthorizedApplicationsResponse

<ResponseField name="authorizedApplications" type={"array of AuthorizedApplication"} required>
  One page of applications authorized by the authenticated user.
</ResponseField>

<ResponseField name="listMetadata" type={"ListAuthorizedApplicationsResponseListMetadata"} required>
  Pagination cursors to pass as after or before in the next list request.
</ResponseField>

### Account

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

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

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

<ResponseField name="email" type={"string (email)"} required />

<ResponseField name="firstName" type={"string | null"} required />

<ResponseField name="lastName" type={"string | null"} required />

<ResponseField name="phoneNumber" type={"string | null"} required />

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

<ResponseField name="pictureUrl" type={"string (uri)"} required />

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

### CreateAccountServiceKeyResponse

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

<ResponseField name="serviceKey" type={"AccountServiceKey"} required />

### ProfilePictureUpload

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

<ResponseField name="formFields" type={"ProfilePictureUploadFormFields"} required />

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

<ResponseField name="uploadUrl" type={"string (uri)"} required />

### StartAccountPhoneVerificationResponse

<ResponseField name="channel" type={"\"sms\""} required />

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

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

### RevokeAccountServiceKeyResponse

<ResponseField name="serviceKey" type={"AccountServiceKey"} required />


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