COUNTCOUNT
Sign Up
ProjectsCreate a project

Create a project

POST/partners/projects

Creates a new project in the workspace.

Only `name` is required. `statusUuid` defaults to the workspace default status when omitted. Numeric `customerId`, `statusId`, and `teamId` are stripped — use UUID fields.

HMAC signature + Bearer access token
Try this request

Request body

namestringrequired

Project name.

customerUuiduuid

Customer UUID from the Customers API. Omit or null for no customer.

statusUuiduuid

Project status UUID from List project statuses.

descriptionstring

Project description.

customIdstring

External reference id.

startDatedate

Start date (YYYY-MM-DD).

endDatedate

End date (YYYY-MM-DD).

Responses

201Project created successfully.
400Validation failed — for example missing name.
401Missing or invalid HMAC signature, expired timestamp, or invalid Bearer token. Troubleshoot
403The credential does not have access to this workspace or resource. Troubleshoot
429Rate limit exceeded (100 requests per minute per clientId). Retry after the Retry-After header. Troubleshoot
POSThttps://api.getcount.com/partners/projects
Request
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 = 'POST';
const signingPath = '/projects';
const timestamp = Math.floor(Date.now() / 1000).toString();
const body = {
  "name": "Website Redesign",
  "customerUuid": "dfa3219e-6af8-4c53-997a-037534f63a35",
  "statusUuid": "aabbccdd-eeff-4012-8000-001122334455",
  "description": "Redesign the marketing website for Acme Corporation.",
  "startDate": "2026-02-01",
  "endDate": "2026-06-30"
};
const bodyString = JSON.stringify(body);

const bodyHash = crypto.createHash('sha256').update(bodyString).digest('hex');
const baseString = `${method}:${signingPath}:${timestamp}:${bodyHash}`;
const signature = crypto.createHmac('sha256', CLIENT_SECRET).update(baseString).digest('hex');

const response = await fetch(`${BASE_URL}/partners/projects`, {
  method,
  headers: {
    'x-client-id': CLIENT_ID,
    'x-timestamp': timestamp,
    'x-signature': signature,
    'Content-Type': 'application/json',
    Authorization: `Bearer ${ACCESS_TOKEN}`,
  },
  body: bodyString,
});

console.log(await response.json());
Response · 201
{
  "status": "success",
  "message": "Success on creating project",
  "data": {
    "project": {
      "id": "11223344-5566-7788-99aa-bbccddeeff00",
      "name": "Website Redesign",
      "description": "Redesign the marketing website for Acme Corporation.",
      "customId": "PRJ-2026-001",
      "startDate": "2026-02-01",
      "endDate": "2026-06-30",
      "customer": {
        "uuid": "dfa3219e-6af8-4c53-997a-037534f63a35",
        "customer": "Acme Corporation"
      },
      "projectStatus": {
        "uuid": "aabbccdd-eeff-4012-8000-001122334455",
        "name": "In Progress",
        "color": "#E48642"
      },
      "createdAt": "2026-01-15T10:30:00.000Z",
      "updatedAt": "2026-01-28T14:22:30.000Z"
    }
  }
}