---
title: "Grant one of your personal credentials (a secret, OAuth connection, or MCP server in your personal org) to an org you..."
method: PUT
path: "/v1/personal-credential-grants/{credential_id}/{org}"
tags: ["secrets"]
---

# Grant one of your personal credentials (a secret, OAuth connection, or MCP server in your personal org) to an org you...

`PUT /v1/personal-credential-grants/{credential_id}/{org}`

## Request

- Base URL: `https://api.kody.codes`
- URL: `https://api.kody.codes/v1/personal-credential-grants/{credential_id}/{org}`
- Auth: HTTP bearer

Grant one of your personal credentials (a secret, OAuth connection, or MCP server in your personal org) to an org you belong to (ADR 0068). It then works in that org only in your own runs, for scoped `credential(key)` clients; nobody else there can use it, Owners and Automation included. Granting again is a no-op. Needs Write on the credential (a token needs secret:write, or integration:write for OAuth connections and MCP servers) and a live person, and is audited in your personal org. `{{secret:name}}` placeholders never resolve personal credentials. Never takes or returns a value.

Org permission: none (touches no org data).

## Path parameters

- `credential_id` string, required: Credential id of a secret, OAuth connection, or MCP server in your personal org (secretList or credentialList there).
- `org` string, required: Slug of the org. Defaults to the org this request is bound to when that is not your personal org.

## Request body

- object

## Response `200`

Success.

- object
  - `credential_id` string, required
  - `credential_kind` 'secret' | 'integration' | 'mcp-server', required
  - `name` string, required
  - `org` object, required
    - `id` string, required
    - `slug` string, required
  - `created` boolean, required: False when the credential was already granted to the org.

## Other responses

- `400`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `401`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `403`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `404`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `409`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `413`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `429`: Too many requests (edge IP/token limit) or an entitlement / plan-cap limit. Wait at least `Retry-After` seconds before retrying.
- `500`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `503`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `default`: Error envelope `{ "error": { "code", "message", "details"? } }`.

---

[API](https://skmtc.dev/kody/apis/kody-api.md) · [All operations](https://skmtc.dev/kody/apis/kody-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kody/apis/kody-api/revisions/705f4f022728?raw)
