Getting Started
Quickstart
From zero to your first authenticated API call in three steps.
- 1
Get your credentials
Request a
clientIdandclientSecretand register your redirect URI. See API access credentials. - 2
Authorize a workspace
Send the user through the OAuth flow and exchange the code for an access token, as described in Authentication & signing.
- 3
Make your first request
Sign the request and list the workspace's customers:
GET
https://api.getcount.com/partners/customersRequest
import crypto from 'node:crypto';
const BASE_URL = 'https://api.getcount.com';
const CLIENT_ID = process.env.COUNT_CLIENT_ID;
const CLIENT_SECRET = process.env.COUNT_CLIENT_SECRET;
const ACCESS_TOKEN = process.env.COUNT_ACCESS_TOKEN;
const method = 'GET';
const signingPath = '/customers';
const timestamp = Math.floor(Date.now() / 1000).toString();
const bodyString = '';
const bodyHash = '';
const baseString = `${method}:${signingPath}:${timestamp}:${bodyHash}`;
const signature = crypto.createHmac('sha256', CLIENT_SECRET).update(baseString).digest('hex');
const response = await fetch(`${BASE_URL}/partners/customers`, {
method,
headers: {
'x-client-id': CLIENT_ID,
'x-timestamp': timestamp,
'x-signature': signature,
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
});
console.log(await response.json());Response · 200
{
"status": "success",
"message": "Success on fetching customers.",
"data": {
"page": 1,
"limit": 20,
"totalRecords": 1,
"totalPages": 1,
"records": [
{
"id": "dfa3219e-6af8-4c53-997a-037534f63a35",
"customer": "Acme Corporation",
"email": "contact@acme.com",
"mainPhone": "+1234567890",
"website": "https://acme.com",
"status": "active",
"notes": "Preferred customer. Net-30 terms.",
"paymentTerm": "net30",
"taxNumber": null,
"taxAutoCalculate": false,
"taxExcluded": false,
"contactName": "John Doe",
"billingAddress": {
"id": "0b2c1f5e-7a9d-4f2b-9c1e-2a4b6d8e0f12",
"street": "123 Main St",
"city": "San Francisco",
"state": "CA",
"zipCode": "94102",
"country": "USA"
},
"shippingAddress": null,
"contacts": [
{
"id": "a5da3577-bf85-4e3a-aa73-df85ca69bc67",
"firstName": "John",
"lastName": "Doe",
"email": "john@acme.com",
"phone": "+1234567890",
"isPrimary": true
}
],
"taxes": [],
"salesRep": null,
"createdAt": "2026-01-15T10:30:00.000Z",
"updatedAt": "2026-01-28T14:22:30.000Z"
}
],
"filters": {
"search": null,
"status": null,
"orderBy": "customer",
"orderDirection": "ASC"
}
}
}Prefer a running head start?
Download a starter template in your language — signing and OAuth are already wired up.
Browse SDKs & templates