---
title: "ProjectKPIs.create"
method: POST
path: "/entities/ProjectKPIs"
tags: ["Project"]
---

# ProjectKPIs.create

`POST /entities/ProjectKPIs`

## Request

- Base URL: `https://us-east.api.coevera.com/api/v100/rest/spaces/your_space_id`
- URL: `https://us-east.api.coevera.com/api/v100/rest/spaces/your_space_id/entities/ProjectKPIs`
- Auth: HTTP basic
- TypeScript: <https://skmtc.dev/coevera/apis/coevera-crm-api/docs/entities/ProjectKPIs/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates a ProjectKPI record.

## Query parameters

- `validation-level` integer

## Request body

- CreateProjectKPIInput: Field values of a new ProjectKPI record.
  - `modified` string, date-time: Last modification time.
  - `created` string, date-time: Creation time.
  - `application_id` string, uuid: Application context in which the KPI event was triggered (e.g. browser, automation, third-party integration).
  - `client_id` string, uuid: Id of the user who triggered the event.
  - `kpi` 1 | 2 | 3, required: KPI metric this event represents: Create, ProjectCompleted or LastModified. Integer enum value: 1 - ProjectCompleted, 2 - Create, 3 - LastModified
  - `owner_id` string, uuid, required: Id of the project owner at the time of the event.
  - `project_id` string, uuid, required: Id of the project this KPI event relates to.
  - `unit_id` string, uuid: Id of the sales unit.
  - `revision` integer: Revision when entity was lastly changed.

## Response `201`

The created ProjectKPI record.

- object
  - `success` boolean: True when the request succeeded; false on error.
  - `data` ProjectKPI: KPI event of a project (its completion), used in activity reporting.
    - `is_delete_protected` boolean, required: True when the record is protected against deletion because it must always exist in the space. Deleting a record that is not protected can still fail on other checks. Read-only.
    - `id` string, uuid, required: Unique identifier of entity.
    - `is_deleted` boolean: Specifies if the entity is considered deleted.
    - `modified` string, date-time: Last modification time.
    - `created` string, date-time: Creation time.
    - `client` string, uri: User who triggered the KPI event (project completion). Related Client record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'Client' for its fields.
    - `owner` string, uri, required: Project owner at the time the KPI event occurred. Related Client record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'Client' for its fields.
    - `project` string, uri, required: Project this KPI event relates to. Related Project record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'Project' for its fields.
    - `unit` string, uri: Sales unit the triggering user belonged to at the time of the event. Related SalesUnit record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'SalesUnit' for its fields.
    - `application_id` string, uuid: Application context in which the KPI event was triggered (e.g. browser, automation, third-party integration).
    - `client_id` string, uuid: Id of the user who triggered the event.
    - `kpi` 1 | 2 | 3, required: KPI metric this event represents: Create, ProjectCompleted or LastModified. Integer enum value: 1 - ProjectCompleted, 2 - Create, 3 - LastModified
    - `owner_id` string, uuid, required: Id of the project owner at the time of the event.
    - `project_id` string, uuid, required: Id of the project this KPI event relates to.
    - `unit_id` string, uuid: Id of the sales unit.
    - `revision` integer: Revision when entity was lastly changed.

## Other responses

- `400`: Bad request: a bad or unknown parameter (codes 117, 118), a missing permission (code 50), conflicting data (code 2002) or any other API error. The REST API answers 400 where others answer 403 or 409; check `code`.
- `401`: Not authenticated: missing or wrong credentials, a credential of another space, or an expired token (code 401, ERROR_UNAUTHORIZED).
- `422`: Validation failed (code 40000, with the failing fields) or a required parameter is missing (code 119). By default one failed item fails a whole batch and nothing is written.
- `429`: Too many requests (code 182). Wait for the seconds in Retry-After, then retry.
- `500`: Unexpected server error (code 1000, ERROR_UNKNOWN).

---

[API](https://skmtc.dev/coevera/apis/coevera-crm-api.md) - [All operations](https://skmtc.dev/coevera/apis/coevera-crm-api/llms.txt) - [OpenAPI document](https://skmtc.dev/coevera/apis/coevera-crm-api/revisions/40ebbc83f179?raw)
