---
title: App-shell resolver state for the authenticated user
description: "Returns resolver-only app state (currently last_workspace_id) for the authenticated user."
api_method: GET
api_path: "/v1/me/resolver-state"
canonical_url: https://wiblo.app/docs/developers/api/identity/get-me-resolver-state
last_updated: 2026-07-28T17:12:38+02:00
md_url: https://wiblo.app/docs/developers/api/identity/get-me-resolver-state.md
---

# App-shell resolver state for the authenticated user

`GET /v1/me/resolver-state`

Returns resolver-only app state (currently `last_workspace_id`) for the authenticated user. Read by the web `/dashboard` resolver to pick the workspace a returning user lands in when no `wiblo_last_workspace_id` cookie is present. Kept separate from `GET /v1/me` so adding more resolver fields later does not pollute the profile contract. Per-user rate-limited at 120/min.

## Request

**curl**

```bash
curl https://api.wiblo.app/v1/me/resolver-state \
  -H "Authorization: Bearer $WIBLO_TOKEN"
```

**TypeScript**

```ts
import { createSdk, getMeResolverState } from "@workspace/sdk"

const sdk = createSdk({ baseUrl: "https://api.wiblo.app" })

const { data, error } = await getMeResolverState({
  client: sdk,
})
```

## Responses

**`200`** — The caller's resolver state. Returns `ResolverStateResponse`.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `last_workspace_id` | `string \| null` | Yes |  |

**`401`** — No valid Supabase session cookie was present. Returns `ApiErrorEnvelope`.

**`429`** — Rate limit exceeded. The body's `error.code` is `RATE_LIMITED` and `error.details.retry_after` is the same number of seconds as the `Retry-After` header. Returns `ApiErrorEnvelope`.
