---
title: "Coevera Developers: build on the Coevera CRM API"
description: "Build on the Coevera CRM: REST and GraphQL APIs, webhooks, an MCP server for AI assistants, and the integration platforms."
canonical: https://developers.coevera.com/
publisher: Coevera
---

# Build on the Coevera CRM API

REST and GraphQL APIs, webhooks, and an MCP server for AI assistants, with examples that work when you copy them.

- [Make your first call in 5 minutes](/get-started/quickstart/)
- [Browse the API reference](/reference/rest/)

**REST · cURL**

```bash
curl -sS --fail-with-body -G "$COEVERA_BASE/entities/Accounts" \
  -d first=3 \
  -d load-only=id,name,email1,modified \
  -u "$COEVERA_API_KEY:$COEVERA_API_SECRET"
```

**REST · TypeScript**

```ts
const params = new URLSearchParams({ first: "3", "load-only": "id,name,email1,modified" });
const res = await fetch(`${base}/entities/Accounts?${params}`, {
  headers: { Authorization: `Basic ${auth}` },
});
const body = await res.json();
if (!res.ok) throw new Error(`HTTP ${res.status} ${body.name}: ${body.message}`);
console.log(JSON.stringify(body, null, 2));
```

**REST · Python**

```python
response = requests.get(
    f"{BASE}/entities/Accounts",
    params={"first": 3, "load-only": "id,name,email1,modified"},
    auth=AUTH,
    timeout=30,
)
body = response.json()
if not response.ok:
    sys.exit(f"HTTP {response.status_code} {body.get('name')}: {body.get('message')}")
print(json.dumps(body, indent=2))
```

**GraphQL · cURL**

```bash
curl -sS --fail-with-body "$COEVERA_GRAPHQL" \
  -u "$COEVERA_API_KEY:$COEVERA_API_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"query": "{ entities { account { getByCriteria(first: 3) { totalCount pageInfo { hasNextPage endCursor } edges { node { id name email1 modified } } } } } }"}'
```

**GraphQL · TypeScript**

```ts
const res = await fetch(endpoint, {
  method: "POST",
  headers: { Authorization: `Basic ${auth}`, "Content-Type": "application/json" },
  body: JSON.stringify({
    query: `{
      entities {
        account {
          getByCriteria(first: 3) {
            totalCount
            pageInfo { hasNextPage endCursor }
            edges { node { id name email1 modified } }
          }
        }
      }
    }`,
  }),
});
const body = await res.json();
// GraphQL reports errors in the body, often with HTTP 200: check both.
if (!res.ok || body.errors) throw new Error(`HTTP ${res.status}: ${JSON.stringify(body.errors ?? body)}`);
console.log(JSON.stringify(body.data, null, 2));
```

**GraphQL · Python**

```python
QUERY = """
{
  entities {
    account {
      getByCriteria(first: 3) {
        totalCount
        pageInfo { hasNextPage endCursor }
        edges { node { id name email1 modified } }
      }
    }
  }
}
"""
response = requests.post(ENDPOINT, json={"query": QUERY}, auth=AUTH, timeout=30)
body = response.json()
# GraphQL reports errors in the body, often with HTTP 200: check both.
if not response.ok or body.get("errors"):
    sys.exit(f"HTTP {response.status_code}: {json.dumps(body.get('errors', body))}")
print(json.dumps(body["data"], indent=2))
```

## Choose your path

Start where your integration starts. Guides and recipes show REST and GraphQL side by side.

### REST API

CRUD, batch and merge on 212 entities. JSON over HTTPS with Basic auth.

- [Quickstart](/get-started/quickstart/)
- [Reference](/reference/rest/)

### GraphQL

One endpoint, 219 repositories, and business actions such as qualify and move.

- [Repositories](/reference/graphql/)

### Webhooks

138 events with HMAC-SHA256 signatures, retries over about 24 hours.

- [Guide](/webhooks/overview/)
- [Events](/webhooks/events/)

### AI & MCP

Connect Claude or ChatGPT to a Coevera space through the MCP server.

- [Overview](/ai/overview/)
- [Set up](/ai/activation/)

### Integrations

Zapier and Power Platform when you would rather not write code.

- [Compare](/integrations/overview/)
- [Zapier](/integrations/zapier/)

## Popular recipes

- [Create an account with contacts](/recipes/create-account-with-contacts/) (REST · GraphQL)
- [Create an opportunity](/recipes/create-opportunity/) (REST · GraphQL)
- [Products and line items](/recipes/products-and-line-items/) (REST · GraphQL)
- [Attach a document](/recipes/attach-document/) (REST · GraphQL)
- [Merge duplicates](/recipes/merge-duplicates/) (REST · GraphQL)

[All recipes](/recipes/overview/)

## Latest API changes

- 2026-10-29, Breaking, Removed: [App-only mutations removed from the public schema](/changelog/api/#release-6-6-0-app-only-mutations-removed-from-the-public-schema)
- 2026-10-29, Breaking, Removed: [`getByIdsFor…` queries removed from `cloudObjectTemplate`](/changelog/api/#release-6-6-0-getbyidsfor-queries-removed-from-cloudobjecttemplate)
- 2026-10-29, Breaking, Changed: [Three repository queries return a different shape](/changelog/api/#release-6-6-0-three-repository-queries-return-a-different-shape)

[Changelog](/changelog/api/)

## Written for people and for AI assistants

Every page has a Markdown twin at the same URL plus `.md`. Point your assistant at `llms.txt` for the index.

- [llms.txt](/llms.txt)
- [llms-full.txt](/llms-full.txt)
