---
title: "Quickstart"
description: "Authenticate, list your contacts, and read the response in under five minutes."
canonical_url: https://developer.onepagecrm.com/getting-started/quickstart/
source: Markdown mirror of https://developer.onepagecrm.com/getting-started/quickstart/
---

By the end of this page you'll have made an authenticated call against
the OnePageCRM REST API and parsed the response. We'll use **HTTP Basic
auth with your own user credentials** — the simplest path for scripts,
internal tools, and accessing your own account.

> **Building an app that acts on behalf of other OnePageCRM users?**
> Use [OAuth 2.1](/oauth/overview/) instead. Skip the API key flow
> below and follow the [OAuth quickstart](/oauth/quickstart/).

## 1. Get your API credentials

Sign in to OnePageCRM and open the **API settings** page:

[https://app.onepagecrm.com/app/api](https://app.onepagecrm.com/app/api)

Open the **Configuration** tab. You need two values:

| Value      | Used as            |
| ---------- | ------------------ |
| `user_id`  | HTTP Basic username |
| `api_key`  | HTTP Basic password |

Treat the `api_key` like a password — it grants full access to your
account. Don't commit it to source control.

## 2. Make your first request

The base URL for the REST API is:

```
https://app.onepagecrm.com/api/v3
```

A good first call is listing your contacts:

```bash
curl -u "USER_ID:API_KEY" \
  https://app.onepagecrm.com/api/v3/contacts.json
```

Replace `USER_ID` and `API_KEY` with your values. The `.json` suffix
sets the response format. Another useful early call is
`GET /bootstrap` — it returns account-wide reference data (statuses,
deal stages, custom field schemas, etc.) in one request:

```bash
curl -u "USER_ID:API_KEY" \
  https://app.onepagecrm.com/api/v3/bootstrap.json
```

## 3. Read the response

OnePageCRM wraps every response in a standard envelope:

```json
{
  "status": 0,
  "message": "OK",
  "timestamp": 1716205200,
  "data": {
    "contacts": [
      { "id": "5f...", "first_name": "Ada", "last_name": "Lovelace", "...": "..." }
    ],
    "total_count": 1,
    "page": 1,
    "per_page": 10,
    "max_page": 1
  }
}
```

- `status: 0` means success. Non-zero status codes correspond to
  [documented error categories](/api/errors/).
- `data` carries the actual payload, shaped per the endpoint.
- List endpoints include [pagination](/api/pagination/) (`page`,
  `per_page`, `max_page`, `total_count`). Request more pages with
  `?page=2`.

## Common errors

| HTTP status | What it usually means | Fix |
| --- | --- | --- |
| `401 Unauthorized` | Wrong `user_id` or `api_key`, or missing `Authorization` header. | Double-check both values; re-copy from the API settings page. |
| `403 Forbidden` | Credentials are correct but the user lacks permission for that resource. | Check the user's role or whether the record belongs to a teammate. |
| `404 Not Found` | Typo in the path, or the record ID doesn't exist. | Confirm the endpoint URL against the [API reference](/api/reference/). |
| `400 Bad Request` | Required field missing or a value is invalid on a write request. | Inspect the `errors` object in the response body for the offending field — see [errors](/api/errors/). |
| `429 Too Many Requests` | You're being [rate-limited](/api/rate-limits/). | Slow down. Back off exponentially with jitter and retry. |

## What to read next

- **[The data model](/getting-started/data-model/)** — the seven core entities behind every OnePageCRM surface, and the Action Stream that ties them together. Ten minutes here saves hours later.
- **[API reference](/api/reference/)** — every endpoint, parameter, and response shape. Try requests directly from the browser.
- **[Subscribe to webhook events](/tutorials/webhooks/)** — react to CRM changes in real time instead of polling.
- **[Query CRM data with OQL](/tutorials/oql/)** — one JSON query language across contacts, deals, actions, notes, calls, and meetings. Runs through the MCP server today.
- **[OAuth 2.1](/oauth/overview/)** — when your app needs to act on behalf of users other than yourself.
- **[MCP for AI agents](/mcp/overview/)** — let Claude, ChatGPT, or your favorite agent talk to your CRM.
