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

# Start Portfolio

> Resumes automation on a paused portfolio.

Resumes automation for the portfolio. Idempotent — calling `start` on an
already-active portfolio returns the current detail without side effects.

On transition, `nextDueAt` resets to the current time so the next rebalance
happens promptly rather than honouring the stale due time captured when
automation was stopped.

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

Concurrent `start` and `stop` calls on the same portfolio are last-writer
wins. Both requests return `200` with the state each observed, so a client
that issued the losing transition may briefly see stale status — re-fetch
the portfolio detail if you need the post-race state.

Returns `404` for portfolios your API key does not have access to —
same response shape as a portfolio that doesn't exist.

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

Common error responses:

* `400` when the portfolio has no rebalance schedule to transition
* `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 POST \
    --url 'https://api.glider.fi/v2/portfolios/pf_01JWZEE2MF30KVRMRX53N88VA4/start' \
    --header 'x-api-key: gldr_sk_your_api_key'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.glider.fi/v2/portfolios/pf_01JWZEE2MF30KVRMRX53N88VA4/start",
    {
      method: "POST",
      headers: { "x-api-key": "gldr_sk_your_api_key" },
    },
  );
  const data = await response.json();
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "data": {
      "portfolioId": "pf_01JWZEE2MF30KVRMRX53N88VA4",
      "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-16T12:00:00.000Z"
    }
  }
  ```

  ```json 400 theme={null}
  {
    "success": false,
    "error": {
      "code": "API_400",
      "message": "Portfolio pf_01JWZEE2MF30KVRMRX53N88VA4 has no rebalance schedule"
    }
  }
  ```

  ```json 404 theme={null}
  {
    "success": false,
    "error": {
      "code": "API_006",
      "message": "Portfolio with ID pf_01JWZEE2MF30KVRMRX53N88VA4 not found"
    }
  }
  ```
</ResponseExample>
