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

# Patch Portfolio

> Updates the authenticated tenant's portfolio metadata by ID.

Updates metadata for a portfolio owned by the authenticated tenant. Today only
`portfolioName` is mutable.

* Auth: `x-api-key` header (required)
* Scope: `portfolios:write`

The body uses JSON Merge Patch semantics: omit a field to preserve it, send
`null` to clear it, or send a string to set it. Empty body `{}` is a 200 no-op.
Unknown keys return `400`.

`portfolioName` is trimmed server-side. Names may be up to 64 characters and may
include Unicode letters, digits, spaces, and `- _ . ' : ( ) & /`.

<ParamField path="portfolioId" type="string" required>
  Portfolio identifier returned by `POST /v2/enroll` or `GET /v2/portfolios`.
</ParamField>

Common error responses:

* `400` when the body is invalid
* `401` when `x-api-key` header is missing or the key is invalid
* `403` when the API key lacks the `portfolios:write` scope
* `404` when the portfolio does not exist or does not belong to the tenant
* `500` on unexpected server errors

<RequestExample>
  ```bash cURL theme={null}
  curl --request PATCH \
    --url 'https://api.glider.fi/v2/portfolios/a1b2c3d4' \
    --header 'x-api-key: gldr_sk_your_api_key' \
    --header 'Content-Type: application/json' \
    --data '{ "portfolioName": "Alice Conservative Yield" }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.glider.fi/v2/portfolios/a1b2c3d4",
    {
      method: "PATCH",
      headers: {
        "x-api-key": "gldr_sk_your_api_key",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({ portfolioName: "Alice Conservative Yield" }),
    },
  );
  const data = await response.json();
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "data": {
      "portfolioId": "a1b2c3d4",
      "portfolioName": "Alice Conservative Yield",
      "ownerAccountId": "eip155:0:0xabcdef0000000000000000000000000000000001",
      "strategyId": "01JWZEE2MF30KVRMRX53N88VA4",
      "strategyName": "Conservative Yield",
      "strategyDescription": "Multi-chain balanced allocation strategy",
      "smartAccounts": [
        { "accountId": "eip155:8453:0xe3a2d1f49aee887e42655b56371d4d76bbf58058" }
      ],
      "schedule": {
        "status": "active",
        "frequency": "daily",
        "intervalMs": 86400000,
        "nextDueAt": "2026-04-16T12:00:00.000Z",
        "lastRebalanceAt": "2026-04-15T12:00:00.000Z"
      },
      "createdAt": "2026-04-10T08:30:00.000Z",
      "strategyVersion": 4,
      "updatedAt": "2026-04-15T12:00:00.000Z"
    }
  }
  ```

  ```json 400 theme={null}
  {
    "success": false,
    "error": {
      "code": "API_400",
      "message": "Request validation failed"
    }
  }
  ```
</ResponseExample>
