> For the complete documentation index, see [llms.txt](https://codemash.gitbook.io/codemash/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://codemash.gitbook.io/codemash/api-reference/guides.md).

# Guides

Short guides for calling the Norbix REST API by hand — addresses, keys, environments, testing and CORS.

Norbix has two REST services. The **Api** is what your app calls at run time (records, files, sign-in of your end users, sending messages). The **Hub** is the control side that Cloud uses (projects, schemas, templates, integrations, settings). Both take the same keys and the same headers. The pages under [API reference](/codemash/api-reference/api-reference.md) list every endpoint; these guides explain what every call has in common.

## How Norbix models it

| Guide                                                              | Answers                                         |
| ------------------------------------------------------------------ | ----------------------------------------------- |
| [Base URLs](/codemash/api-reference/guides/base-urls.md)           | Which address do I call?                        |
| [Authentication](/codemash/api-reference/guides/authentication.md) | How do I say who I am and which project I mean? |
| [Environments](/codemash/api-reference/guides/environments.md)     | How do I call TEST instead of PROD?             |
| [How to test](/codemash/api-reference/guides/how-to-test.md)       | How do I try a call with curl or Postman?       |
| [CORS](/codemash/api-reference/guides/cors.md)                     | Can a web page call Norbix from the browser?    |

Every answer has the same shape. A failed call still answers HTTP `200` with `"isSuccess": false` and one error per problem:

```json
{
  "responseStatus": {
    "isSuccess": false,
    "errors": [
      {
        "message": "Property ProjectId is required",
        "errorCode": "CM-ERRORS-PROPERTY-001",
        "context": { "Type": "Required", "Property": "ProjectId" }
      }
    ]
  }
}
```

Always check `responseStatus.isSuccess`, not only the HTTP status. The exceptions: a missing or wrong key answers HTTP `401`, a key used outside its scope answers `403`, and a body that cannot be read answers `400`. More about error codes: [Errors](/codemash/cloud/concepts/errors.md).

## Where you use it

* Keys and ids: [Keys and environments](/codemash/get-started/keys-and-environments.md) · [Ids and prefixes](/codemash/get-started/ids.md)
* SDK: [Install the SDK](/codemash/sdks/install.md) · CLI: [CLI](/codemash/cli/cli.md)
