---
title: "Get the workspace"
method: GET
path: "/v0/workspace"
tags: ["Workspace"]
---

# Get the workspace

`GET /v0/workspace`

## Request

- Base URL: `https://api.schedulin.app`
- URL: `https://api.schedulin.app/v0/workspace`
- Auth: one of:
  - API key in header `x-api-key`
  - OAuth 2 (authorization code, authorization URL `https://api.schedulin.app/oauth/authorize`, token URL `https://api.schedulin.app/oauth/token`, scopes: `org:read`)

The workspace the API key or OAuth token is scoped to: its name, the caller's role, whether posts need approval, the active plan, and usage against plan limits (connected channels, and posts used during a free trial). Check `plan.active` and `limits` before bulk scheduling to avoid `402` responses.

## Response `200`

OK

- object
  - `id` string, required
  - `name` string, required
  - `slug` string, nullable, required
  - `logo` string, nullable, required
  - `createdAt` string, date-time, required
  - `requireApproval` boolean, required: When true, posts written by Members are held for approval before they publish
  - `role` string, nullable, required: The caller's role in this workspace (owner, admin or member)
  - `memberCount` integer, required
  - `plan` object, required
    - `id` string, nullable, required: Active plan id, or null when the workspace has no active plan
    - `name` string, nullable, required
    - `status` string, nullable, required: Subscription status, e.g. active, trialing, past_due, canceled
    - `active` boolean, required: Whether the workspace has an active plan, which scheduling and publishing require
  - `limits` object, required
    - `channels` object, required
      - `used` integer, required: Connected channels counting toward the limit
      - `limit` integer, nullable, required: Channel limit of the plan; null means unlimited or no plan
    - `trialPosts` object, nullable, required: During a free trial, how many of the trial's scheduled/published posts the caller has used; null outside a trial
      - `used` integer, required
      - `limit` integer, required

## Other responses

- `400`: Bad Request — the request isn't allowed in the resource's current state (e.g. editing a published post).
- `401`: Unauthorized — missing or invalid API key / access token.
- `403`: Forbidden — the credential lacks the required scope or access.
- `422`: Unprocessable request. Schema validation failures have `code: "INPUT_VALIDATION_FAILED"` and `data.fieldErrors` mapping each invalid field to its messages (nested issues name their full path, e.g. `media[0].url: ...`). Business-rule rejections (e.g. a `scheduledAt` in the past) have `code: "UNPROCESSABLE_CONTENT"` and carry the reason in `data.message` and `data.formErrors`.
- `429`: Rate limit exceeded. Wait `Retry-After` seconds before retrying.
- `500`: Internal Server Error

---

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