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

# Quickstart

> Create a workspace, sign in with Roblox, and give your staff access.

This walks a Roblox group from nothing to a working staff portal. It assumes
you own the group — workspaces can only be created from a group you own.

<Steps>
  <Step title="Create the workspace">
    Sign in at [crovant.com](https://crovant.com) with Roblox and create a
    workspace from one of your owned groups. The group's ranks are imported as
    Crovant roles.
  </Step>

  <Step title="Enable panel access">
    Open **Configuration → Roles & Permissions** and turn on panel access for
    the ranks that should reach the portal.

    <Warning>
      Every role starts with panel access disabled. Skip this and your staff
      sign in fine but land on an empty portal — the most common setup problem.
    </Warning>
  </Step>

  <Step title="Assign permissions">
    Still under Roles & Permissions, grant the individual permissions each role
    needs. Access is per role, not per person, so a rank change in Roblox
    carries the matching Crovant access with it.
  </Step>

  <Step title="Invite your staff">
    Anyone with a rank you enabled can now sign in with Roblox and reach the
    portal — there is nothing to send them beyond the link.
  </Step>

  <Step title="Publish something">
    Create an event or a post so the portal is not empty. See
    [Events and posts](/guides/events-and-posts).
  </Step>
</Steps>

## Using the API

Once a workspace exists you can drive it programmatically. Generate a key from
**Configuration → API** and send it as a bearer token:

<CodeGroup>
  ```bash cURL theme={null}
  curl https://crovant.com/api/events?workspaceId=YOUR_WORKSPACE_ID \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```js JavaScript theme={null}
  const res = await fetch(
    'https://crovant.com/api/events?workspaceId=YOUR_WORKSPACE_ID',
    { headers: { Authorization: 'Bearer YOUR_API_KEY' } },
  );
  const data = await res.json();
  ```

  ```python Python theme={null}
  import requests

  res = requests.get(
      "https://crovant.com/api/events",
      params={"workspaceId": "YOUR_WORKSPACE_ID"},
      headers={"Authorization": "Bearer YOUR_API_KEY"},
  )
  data = res.json()
  ```
</CodeGroup>

Most endpoints are scoped to a workspace and expect a `workspaceId` query
parameter. Omitting it returns `400 Missing workspaceId`.

Next: the [API reference](/api-reference/introduction) for the full endpoint list.
