> For the complete documentation index, see [llms.txt](https://docs.meetalto.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.meetalto.ai/api/quickstart.md).

# Make your first API request

Authenticate and read your workspace without changing any data.

This walkthrough reads the workspace associated with your credential. It does not change settings or send messages.

## Before you start

You need access to a Meet Alto workspace, an available API key with `workspace:read`, and a terminal with cURL. If API keys are unavailable in your workspace, [contact us](mailto:hey@meetalto.ai) before continuing.

{% stepper %}
{% step %}

### Create a credential for this integration

In Meet Alto, select the intended workspace and open **Settings → Integrations → Manage API keys**. Select **Create API key**, give it a recognizable name and select the workspace read permission. Copy the key before closing the creation dialog.

Store it in your local secret manager or server environment as `MEETALTO_API_KEY`. Keep it out of browser code, source control and AI conversations. [Read the authentication guide](/api/authentication.md).
{% endstep %}

{% step %}

### Read your workspace

With `MEETALTO_API_KEY` available to your shell, run:

```bash
curl --fail-with-body \
  'https://app.meetalto.ai/api/v1/workspace' \
  -H "Authorization: Bearer ${MEETALTO_API_KEY}" \
  -H 'Accept: application/json'
```

Or use Node.js with its built-in `fetch`:

```javascript
const token = process.env.MEETALTO_API_KEY;
if (!token) throw new Error('Set MEETALTO_API_KEY in your environment.');

const response = await fetch('https://app.meetalto.ai/api/v1/workspace', {
  headers: { Authorization: `Bearer ${token}`, Accept: 'application/json' },
});
const result = await response.json();
if (!response.ok) {
  throw new Error(`${result.error?.code}: ${result.error?.message}`);
}
console.log(result.data.workspace?.name ?? 'Workspace name unavailable');
```

{% endstep %}

{% step %}

### Confirm the workspace

A successful response has HTTP status `200`, a `data` object and a `request_id`. This fictional example shows the shape:

```json
{
  "data": {
    "workspace": { "id": "org_example", "name": "Cedar Studio" },
    "is_owner": true,
    "role": "org:owner"
  },
  "request_id": "example-request-id"
}
```

Check `data.workspace.name` before making further requests. If workspace details are unavailable, do not infer a workspace name. If it is the wrong workspace, create a separate credential for the correct one; switching the dashboard does not change the key's workspace.
{% endstep %}
{% endstepper %}

## If the request fails

* **401:** Check that a valid credential was supplied and that you still have workspace access.
* **403:** Check the required permission, workspace role and feature access.
* **429:** Respect `Retry-After` and reduce request frequency.

See [connection troubleshooting](/mcp/troubleshooting.md) for recovery steps.

Next, read [requests, limits and retries](/api/requests.md) before adding write operations.
