---
title: "Set Client Polaris Credentials"
method: PUT
path: "/api/v1/admin/polaris/clients/{client_id}/credentials"
tags: ["Admin APIs", "polaris"]
---

# Set Client Polaris Credentials

`PUT /api/v1/admin/polaris/clients/{client_id}/credentials`

Persist an externally-obtained Polaris client_id/secret pair.

Use when the Polaris principal already exists with credentials CAMS
didn't mint (e.g. created by a non-internal-token flow), so the normal
mint/rotate path is unavailable. The operator pastes the existing
pair — sourced from the customer's vault, the original onboarding
ticket, etc. — and CAMS stores them so the SQL editor's "Connect
Your Query Engine" modal can surface them like any other client.

Does not call Polaris and does not validate the pair against Polaris.
If the values are wrong, the customer's SQL editor sessions will 401
when they try to use them.

All three columns (principal_name, client_id, client_secret) are
required on the request and written together — the row never carries
client_id/secret without a principal_name.

## Path parameters

- `client_id` string, required

## Request body

- SetClientPolarisCredentialsRequest
  - `polaris_client_id` string, required — Existing Polaris client_id for this client's principal — obtained out-of-band (customer's vault, original onboarding ticket, etc.).
  - `polaris_client_secret` string, required — Existing Polaris client_secret matching ``polaris_client_id``. Polaris does not expose existing secrets, so this is the only path for CAMS to hold creds for a principal it didn't mint.
  - `polaris_principal_name` string, required — Polaris principal name the pair belongs to. Required: CAMS will not derive or carry forward a stored value — the operator must name the principal explicitly so the three columns are always written together from a single source.

## Response `200`

Successful Response

- ClientPolarisCredentialsState
  - `minted` boolean, required
  - `polaris_principal_name` string, nullable
  - `polaris_client_id` string, nullable
  - `polaris_client_secret` string, nullable
  - `polaris_provisioned_at` string, date-time, nullable
  - `polaris_provisioning_status` string, nullable
  - `polaris_provisioning_error` string, nullable
  - `polaris_provisioning_attempted_at` string, date-time, nullable
  - `polaris_provisioning_attempted_by` string, nullable
  - `polaris_provisioning_attempted_source` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api.md) · [All operations](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/carbonarc/carbon-arc-client-admin-api/revisions/a8ca30023371/schema)
