Coevera Developers
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.
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"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));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))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 } } } } } }"}'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));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.
Popular recipes
All recipesWritten 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.