Keka HR PSA API

The PSA API from Keka HR — 15 operation(s) for psa.

Operations 20

GET /api/v1/psa/clients Get all clients #
POST /api/v1/psa/clients Create a client #
GET /api/v1/psa/clients/{id} Get a client #
PUT /api/v1/psa/clients/1c4f9c58-2db6-49d0-8030-717b8227840c Update a Client #
GET /api/v1/psa/clients/1c4f9c58-2db6-49d0-8030-717b8227840c/billingroles Get Billingroles #
GET /api/v1/psa/projects/{projectId}/phases Get project phases #
POST /api/v1/psa/projects/{projectId}/phases Create project phase #
POST /api/v1/psa/projects Create a project #
GET /api/v1/psa/projects Get all projects #
GET /api/v1/psa/projects/{id} Get a project #
PUT /api/v1/psa/projects/{projectId} Update Project details #
GET /api/v1/psa/projects/{projectId}/allocations Get project allocations #
POST /api/v1/psa/projects/03355969-3efa-4550-bcbd-7c89bf8c5806/allocations Add a Project Allocation #
GET /api/v1/psa/projects/{id}/timeentries Get project timesheet enteries #
GET /api/v1/psa/projects/{projectId}/tasks Get project tasks #
POST /api/v1/psa/projects/{projectId}/tasks Create New Project Task #
PUT /api/v1/psa/projects/{projectId}/tasks/{taskId} Update Project Task #
GET /api/v1/psa/projects/{projectId}/tasks/{taskId} Get project task assignees #
GET /api/v1/psa/projects/{projectId}/tasks/{taskId}/timeentries Get project task time enteries #
GET /api/v1/psa/timeentries Get timesheet enteries #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/keka-psa-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

keka-psa-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Keka HR Assets PSA API
  description: REST API for the Keka HR and payroll platform covering employee records, attendance, leave, payroll, expense management, performance, recruitment, professional services automation, helpdesk, background verification, and rewards.
  version: v1
  contact:
    url: https://developers.keka.com/
  license:
    name: Keka Terms of Service
    url: https://www.keka.com/terms-of-service
servers:
- url: https://{tenant}.keka.com/api/v1
  description: Keka HR API
  variables:
    tenant:
      default: your-company
      description: Your Keka tenant subdomain
security:
- oauth2:
  - kekaapi
tags:
- name: PSA
paths:
  /api/v1/psa/clients:
    get:
      operationId: get_all_clients
      summary: Get all clients
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for fetching list of all clients.</p>

        '
    post:
      operationId: create_a_client
      summary: Create a client
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for creating a client.</p>

        '
  /api/v1/psa/clients/{id}:
    get:
      operationId: get_a_client
      summary: Get a client
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for fetching a specific client.</p>

        '
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
  /api/v1/psa/clients/1c4f9c58-2db6-49d0-8030-717b8227840c:
    put:
      operationId: update_a_client
      summary: Update a Client
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      requestBody:
        content:
          application/json:
            schema:
              type: object
              example:
                billingAddress:
                  countryCode: US
                  addressLine2: Manhatten
                  addressLine1: Cosco Street, US
                  state: NY
                  zip: '543313'
                name: United Health Group
                description: This project is about developing patients management system
                code: USBU0051
  /api/v1/psa/clients/1c4f9c58-2db6-49d0-8030-717b8227840c/billingroles:
    get:
      operationId: get_billingroles
      summary: Get Billingroles
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
  /api/v1/psa/projects/{projectId}/phases:
    get:
      operationId: get_project_phases
      summary: Get project phases
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for fetching list of all project phases.</p>

        '
      parameters:
      - name: projectId
        in: path
        required: true
        schema:
          type: string
    post:
      operationId: create_project_phase
      summary: Create project phase
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for creating a project phase.</p>

        '
      parameters:
      - name: projectId
        in: path
        required: true
        schema:
          type: string
  /api/v1/psa/projects:
    post:
      operationId: create_a_project
      summary: Create a project
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for creating a project.</p>

        <h2 id="enumerated-values">Enumerated Values</h2>

        <div class="click-to-expand-wrapper is-table-wrapper"><table>

        <thead>

        <tr>

        <th>ProjectStatus</th>

        </tr>

        </thead>

        <tbody>

        <tr>

        <td>0 = InProgress  <br />1 = Completed  <br />2 = Cancelled</td>

        </tr>

        </tbody>

        </table>

        </div>'
    get:
      operationId: get_all_projects
      summary: Get all projects
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for fetching list of all projects.</p>

        <h2 id="enumerated-values">Enumerated Values</h2>

        <div class="click-to-expand-wrapper is-table-wrapper"><table>

        <thead>

        <tr>

        <th>ProjectStatus</th>

        </tr>

        </thead>

        <tbody>

        <tr>

        <td>0 = InProgress  <br />1 = Completed  <br />2 = Cancelled</td>

        </tr>

        </tbody>

        </table>

        </div>'
  /api/v1/psa/projects/{id}:
    get:
      operationId: get_a_project
      summary: Get a project
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for fetching a specific project.</p>

        <h2 id="enumerated-values">Enumerated Values</h2>

        <div class="click-to-expand-wrapper is-table-wrapper"><table>

        <thead>

        <tr>

        <th>ProjectStatus</th>

        </tr>

        </thead>

        <tbody>

        <tr>

        <td>0 = InProgress  <br />1 = Completed  <br />2 = Cancelled</td>

        </tr>

        </tbody>

        </table>

        </div>'
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
  /api/v1/psa/projects/{projectId}:
    put:
      operationId: update_project_details
      summary: Update Project details
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for updating details against a specific project.</p>

        '
      parameters:
      - name: projectId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              example:
                name: Project-KK
                description: Sample project test-II
                code: TAX
                status: 0
                startDate: '2023-07-01'
                endDate: '2023-08-31'
                isBillable: true
  /api/v1/psa/projects/{projectId}/allocations:
    get:
      operationId: get_project_allocations
      summary: Get project allocations
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for fetching allocations against a specific project.</p>

        '
      parameters:
      - name: projectId
        in: path
        required: true
        schema:
          type: string
  /api/v1/psa/projects/03355969-3efa-4550-bcbd-7c89bf8c5806/allocations:
    post:
      operationId: add_a_project_allocation
      summary: Add a Project Allocation
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      requestBody:
        content:
          application/json:
            schema:
              type: object
              example:
                employeeId: 8d04399f-8057-4b0d-ab0f-d9b9a5fb0376
                allocationPercentage: 10
                billingRoleId: 5f497651-5736-4386-8253-a0c7c2be99ab
                billingRate: 120
                startDate: '2024-10-08T06:36:23.750Z'
                endDate: '2024-10-08T06:36:23.750Z'
  /api/v1/psa/projects/{id}/timeentries:
    get:
      operationId: get_project_timesheet_enteries
      summary: Get project timesheet enteries
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for fetching the project time entries between selected from and to date range. If both from and to are not specified, last 30 days records are returned. From date should be before To date.The difference between from and to date cannot be more than 90 days.</p>

        '
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
  /api/v1/psa/projects/{projectId}/tasks:
    get:
      operationId: get_project_tasks
      summary: Get project tasks
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for fetching list of tasks against a specific project.</p>

        <h2 id="enumerated-values">Enumerated Values</h2>

        <div class="click-to-expand-wrapper is-table-wrapper"><table>

        <thead>

        <tr>

        <th>TaskType</th>

        <th>TaskBillingType</th>

        </tr>

        </thead>

        <tbody>

        <tr>

        <td>0 = None  <br />1 = Phase  <br />2 = Milestone</td>

        <td>0 = NonBillable  <br />1 = Billable  <br />2 = Any</td>

        </tr>

        </tbody>

        </table>

        </div>'
      parameters:
      - name: projectId
        in: path
        required: true
        schema:
          type: string
    post:
      operationId: create_new_project_task
      summary: Create New Project Task
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for creating a new task against a project.</p>

        '
      parameters:
      - name: projectId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              example:
                projectId: 97fb2578-c000-4ad0-9757-d4b0dba65f4c
                name: Task 5567
                description: Project 555
                assignedTo:
                - ec1f540f-b355-413f-8a9b-9bd25ad22b70
                - 22af8d5c-6bf3-46b6-8515-38284b99e144
                - 17b28efc-ad5c-41ef-83fa-86142aa6f8dc
                - 444d61be-76c5-4f82-9107-31aa32a2f5df
                taskBillingType: 1
                startDate: '2023-08-04'
                endDate: '2023-08-30'
                estimatedHours: 139.5
                phaseId: null
  /api/v1/psa/projects/{projectId}/tasks/{taskId}:
    put:
      operationId: update_project_task
      summary: Update Project Task
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for updating task details against a project.</p>

        '
      parameters:
      - name: projectId
        in: path
        required: true
        schema:
          type: string
      - name: taskId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              example:
                name: Task 55
                description: Project 555
                assignedTo:
                - ec1f540f-b355-413f-8a9b-9bd25ad22b70
                - 22af8d5c-6bf3-46b6-8515-38284b99e144
                - 17b28efc-ad5c-41ef-83fa-86142aa6f8dc
                - 444d61be-76c5-4f82-9107-31aa32a2f5df
                taskBillingType: 1
                startDate: '2023-08-04'
                endDate: '2023-08-30'
                estimatedHours: 139.5
                phaseId: null
    get:
      operationId: get_project_task_assignees
      summary: Get project task assignees
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for fetching list of task assignees against a project task.</p>

        '
      parameters:
      - name: projectId
        in: path
        required: true
        schema:
          type: string
      - name: taskId
        in: path
        required: true
        schema:
          type: string
  /api/v1/psa/projects/{projectId}/tasks/{taskId}/timeentries:
    get:
      operationId: get_project_task_time_enteries
      summary: Get project task time enteries
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for fetching the project task time entries between selected from and to date range. If both from and to are not specified, last 30 days records are returned. From date should be before To date.The difference between from and to date cannot be more than 90 days.</p>

        <h2 id="enumerated-values">Enumerated Values</h2>

        <div class="click-to-expand-wrapper is-table-wrapper"><table>

        <thead>

        <tr>

        <th>TaskType</th>

        <th>TaskBillingType</th>

        </tr>

        </thead>

        <tbody>

        <tr>

        <td>0 = None  <br />1 = Phase  <br />2 = Milestone</td>

        <td>0 = NonBillable  <br />1 = Billable  <br />2 = Any</td>

        </tr>

        </tbody>

        </table>

        </div>'
      parameters:
      - name: projectId
        in: path
        required: true
        schema:
          type: string
      - name: taskId
        in: path
        required: true
        schema:
          type: string
  /api/v1/psa/timeentries:
    get:
      operationId: get_timesheet_enteries
      summary: Get timesheet enteries
      tags:
      - PSA
      responses:
        '200':
          description: Successful response
      description: '<p>This API is used for fetching the time entries between selected from and to date range. If both from and to are not specified, last 30 days records are returned. From date should be before To date.The difference between from and to date cannot be more than 90 days.</p>

        <h2 id></h2>

        <p>Enumerated Values</p>

        <div class="click-to-expand-wrapper is-table-wrapper"><table>

        <thead>

        <tr>

        <th>TimeEntryStatus</th>

        </tr>

        </thead>

        <tbody>

        <tr>

        <td>0 = UnSubmitted  <br />1 = Submitted  <br />2 = Approved  <br />3 = Rejected  <br />4 = InApprovalProcess  <br />5 = Invoiced</td>

        </tr>

        </tbody>

        </table>

        </div>'
components:
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth 2.0 client credentials flow
      flows:
        clientCredentials:
          tokenUrl: https://login.keka.com/connect/token
          scopes:
            kekaapi: Access to Keka HR API