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

# Overview

> Get started with the Fibery HTTP API.

The Fibery HTTP API lets you integrate Fibery with external systems and automate routine tasks. The API covers the following domains:

<Columns cols={2}>
  <Card title="Schema" icon="database" href="/guides/http-api/schema">
    Manage databases, fields, and workspace structure.
  </Card>

  <Card title="Entities" icon="table" href="/guides/http-api/query-entities">
    Create, read, update, and delete data records.
  </Card>

  <Card title="Views" icon="columns-3" href="/guides/http-api/views">
    Create and configure saved views programmatically.
  </Card>

  <Card title="Files" icon="paperclip" href="/guides/http-api/files">
    Upload and attach files to entities.
  </Card>

  <Card title="Webhooks" icon="webhook" href="/guides/http-api/webhooks">
    Subscribe to entity changes in real-time.
  </Card>

  <Card title="History" icon="clock" href="/guides/http-api/history">
    Access a paginated log of every workspace change.
  </Card>
</Columns>

<Callout icon="circle-info" color="#199EE3">
  Examples in this guide run against a `Cricket` Space. Install the [Cricket template](https://shared.fibery.io/t/ad2c7ce2-0d9c-4ce9-941f-5e8507a46e13-cricket) into your own workspace to run every example as-is and inspect the real responses.
</Callout>

## Commands API

Every read or write is a POST to `/api/commands` with a command name and arguments.
The endpoint works with batches of commands. The request should contain an array of commands with their names and arguments. You'll get an array back too. Take a look at the example below in which we retrieve the basic info about a user.

<CodeGroup>
  ```javascript JavaScript theme={null}
  const response = await fetch('https://YOUR_ACCOUNT.fibery.io/api/commands', {
    method: 'POST',
    headers: {
      'Authorization': 'Token YOUR_TOKEN',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      command: 'fibery.entity/query',
      args: {
        query: {
          'q/from': 'fibery/user',
          'q/select': ['fibery/id', 'user/name'],
          'q/limit': 1
        }
      }
    })
  });
  const data = await response.json();
  ```

  ```bash cURL theme={null}
  curl -X POST https://YOUR_ACCOUNT.fibery.io/api/commands \
    -H 'Authorization: Token YOUR_TOKEN' \
    -H 'Content-Type: application/json' \
    -d '
    {
      "command": "fibery.entity/query",
      "args": {
        "query": {
          "q/from": "fibery/user",
          "q/select": ["fibery/id", "user/name"],
          "q/limit": 1
        }
      }
    }
    '
  ```
</CodeGroup>

Here's the result:

```json theme={null}
{
  "success": true,
  "result": [
    {
      "fibery/id": "7dcf4730-82d2-11e9-8a28-82a9c787ee9d",
      "user/name": "Arthur Dent"
    }
  ]
}
```

For the response envelope format and error handling, see [Response envelope](/api-reference/response-envelope).

<Note>
  This guide uses **Database** and **Space** (the current UI vocabulary). API command names and JSON payloads still use the original `type` and `app` — see [Terminology](/guides/general/terminology#api-naming) for the mapping.
</Note>
