---
updatedAt: 2026-06-24T13:48:50.000Z
agentTools:
  siteIndex: https://developer.paylocity.com/llms.txt
  projectIndex: https://developer.paylocity.com/integrations/llms.txt
---

# Create Company Punch Detail Operation

**Summary Description**

The Company Punch Detail endpoint returns punch records for all employees within a specified company. Company Punch Detail endpoint represents the first step in a three-step process for retrieving punch details at the company level. Results can be limited by specifying a start date and end date. Date and time filtering uses the consumer's time zone and supports standard daily boundaries (00:00:00, 12:00:00, and 23:59:59).

For information about the complete sequence, see the Punch Detail Overview or the Getting Started with Company Punch Details API recipe.

**Use Cases**
- Retrieve punch details for all employees associated with a specific company ID.
- Narrow results to a defined timeframe by using the relativeStart and relativeEnd parameters.

# OpenAPI definition

```json
{
  "openapi": "3.0.1",
  "info": {
    "title": "Punch detail Api",
    "description": "The Punch detail Api is designed to streamline the process of retrieving employee punch details",
    "version": "v1"
  },
  "servers": [
    {
      "url": "dc1demogwext.paylocity.com"
    }
  ],
  "paths": {
    "/apiHub/time/v2/companies/{companyId}/punchDetails": {
      "post": {
        "tags": [
          "Company Punch Details"
        ],
        "summary": "Create Company Punch Detail Operation",
        "description": "**Summary Description**\n\nThe Company Punch Detail endpoint returns punch records for all employees within a specified company. Company Punch Detail endpoint represents the first step in a three-step process for retrieving punch details at the company level. Results can be limited by specifying a start date and end date. Date and time filtering uses the consumer's time zone and supports standard daily boundaries (00:00:00, 12:00:00, and 23:59:59).\n\nFor information about the complete sequence, see the Punch Detail Overview or the Getting Started with Company Punch Details API recipe.\n\n**Use Cases**\n- Retrieve punch details for all employees associated with a specific company ID.\n- Narrow results to a defined timeframe by using the relativeStart and relativeEnd parameters.",
        "x-explorer-enabled": false,
        "operationId": "POST_apiHub_time_v2_companies_{companyId}_punchDetails",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The Paylocity Company ID. This is the unique value provided by Paylocity to each specific Payroll Entity.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "AB345"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "Authorization token. Ex. Bearer ...",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer JWT_GOES_HERE"
            },
            "example": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
          }
        ],
        "requestBody": {
          "description": "The company punch detail request payload.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompanyPunchDetailRequestBody"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CompanyPunchDetailRequestBody"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CompanyPunchDetailRequestBody"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted. This response has no body. Use the Location header value to retrieve the operation status and operationId in Step 2.",
            "headers": {
              "Location": {
                "description": "The URL location where the operation status can be retrieved. This URL contains the operationId needed for Step 2.",
                "schema": {
                  "type": "string"
                },
                "example": "/apiHub/time/v2/companies/AB345/punchDetailOperations/e81967e4-fffd-49d6-9e3a-2acc3e467ecb"
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BadRequestFieldModel"
                  }
                },
                "example": [
                  {
                    "field": "$.relativeStart",
                    "message": "relative start should be less than or equal to relative end"
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "409": {
            "description": "Conflict. A pending operation already exists for this client and company.",
            "headers": {
              "Location": {
                "description": "The URL location of the existing pending operation.",
                "schema": {
                  "type": "string"
                },
                "example": "/apiHub/time/v2/companies/AB345/punchDetailOperations/e81967e4-fffd-49d6-9e3a-2acc3e467ecb"
              },
              "Retry-After": {
                "description": "The number of seconds to wait before retrying or checking the existing operation's status.",
                "schema": {
                  "type": "integer"
                },
                "example": 30
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "A message describing the conflict."
                    }
                  }
                },
                "example": {
                  "message": "A pending operation e81967e4-fffd-49d6-9e3a-2acc3e467ecb already exists for this client and company. Please wait to retry in 30 second(s) or when the operation completes."
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests"
          },
          "500": {
            "description": "Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Error500Model"
                  }
                },
                "example": [
                  {
                    "code": "INTERNAL_SERVER_ERROR",
                    "message": "An unexpected error occurred while processing your request.",
                    "errorId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
                  }
                ]
              }
            }
          }
        },
        "security": [
          {
            "JWTAuthorization": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "CompanyPunchDetailRequestBody": {
        "type": "object",
        "properties": {
          "relativeStart": {
            "type": "string",
            "description": "The relative DateTime for the beginning of the WorkedShift. Value must not have timezone information.",
            "format": "date-time"
          },
          "relativeEnd": {
            "type": "string",
            "description": "The relative DateTime for the end of the WorkedShift. Value must not have timezone information.",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "Error500Model": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "A unique code, within an API, that identifies what went wrong.\r\nThis value can be used for logic branching within client code\r\nto prevent the need to parse message values.",
            "nullable": true
          },
          "message": {
            "type": "string",
            "description": "A message indicating what went wrong that can be presented to an end user.",
            "nullable": true
          },
          "moreInfoUrl": {
            "type": "string",
            "description": "When provided, this will specific a URL that can be accessed to learn more\r\nabout this specific error.",
            "nullable": true
          },
          "exception": {
            "$ref": "#/components/schemas/ExceptionModel"
          },
          "errorId": {
            "type": "string",
            "description": "A unique identifier that can be used to search the logs to find the specific\r\nerror details that highlight what occurred.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "This class represents the error model that will be used when returning\r\na 500 error (server failure) within a Paylocity RESTful API."
      },
      "BadRequestFieldModel": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "The JSON path of the request field that failed validation (for example, $.relativeStart).",
            "nullable": true
          },
          "message": {
            "type": "string",
            "description": "A message describing why the field failed validation.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "This class represents a single field-level validation error returned when a 400 Bad Request occurs due to invalid input."
      },
      "ExceptionModel": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true,
            "description": "The type of the exception."
          },
          "message": {
            "type": "string",
            "nullable": true,
            "description": "The exception message."
          },
          "source": {
            "type": "string",
            "nullable": true,
            "description": "The source of the exception."
          },
          "stackTrace": {
            "type": "string",
            "nullable": true,
            "description": "The stack trace of the exception."
          },
          "innerException": {
            "$ref": "#/components/schemas/ExceptionModel"
          }
        },
        "additionalProperties": false,
        "description": "This class represents the full set of properties that could be returned\r\nas a part of an error coming back from a Paylocity RESTful API. Optional\r\nproperties will be ignored during serialization when they are null"
      }
    },
    "securitySchemes": {
      "JWTAuthorization": {
        "type": "http",
        "description": "Paste JWT here.",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  }
}
```