v1

latestOpenAPI 3.0.42026-07-2481154567.6 KB
Training Content

Create Training Content [Batch]

🚧 Partner Restricted All LMS API endpoints are restricted to LMS providers that have signed a Paylocity technology partnership agreement. Please reach out to our team if you would like to discuss partnership opportunities.

Summary Description

Creates a bulk upload request for multiple training content items and returns a pre-signed upload URL for a single ZIP payload.

Workflow

  1. POST metadata for all content items and the ZIP file details.
  2. Receive bulkUploadId + uploadUrl + expiration timestamp.
  3. Upload the ZIP file with the returned HTTP method (typically PUT).
  4. Poll the status endpoint using bulkUploadId until a terminal status is returned.

Use Cases

  • Partner wants to upload multiple training courses in a single operation.
  • Partner needs to efficiently add a library of content to their LMS catalog.

Validation Rules

  • contentItems is required and must contain between 1 and 100 items
  • Each contentItem must follow the same validation rules as single content upload
  • zipFileDetails is required
  • zipFileDetails.contentType must be application/zip
  • zipFileDetails.length must be greater than 0 and less than or equal to 2 GB (2147483648 bytes)
  • contentItems[].training is optional; when provided, the name field is required and the description field is optional. Supplying the training object places the content in the On-Demand Trainings area of LMS. If the training object is omitted, the content is stored in the Company Content Library.

Test Mode

When testMode=true, the endpoint returns a mocked accepted response and does not create a persistent bulk upload record.

post/apiHub/learningManagementSystem/v1/companies/{companyId}/batchedContent

Path parameters

companyIdstring required

The Paylocity Company Identifier. Unique value provided by Paylocity. Allowable Values: 9 char max.

Headers

testModeboolean

If true, responses are mocked and generated randomly.

Request body

Example request

{
  "contentItems": [
    {
      "title": "Introduction to Workplace Safety",
      "description": "An overview of essential safety guidelines and procedures for new employees.",
      "url": "https://cdn.example.com/videos/workplace-safety.mp4",
      "fileDetails": {
        "name": "workplace-safety-guide.pdf",
        "length": 2048000,
        "contentType": "application/pdf"
      },
      "training": {
        "name": "Workplace Safety Fundamentals"
      }
    }
  ],
  "zipFileDetails": {
    "name": "workplace-safety-guide.pdf",
    "length": 2048000,
    "contentType": "application/pdf"
  }
}

Response

Accepted - Bulk upload request has been accepted.

bulkUploadIdstring nullable

Gets or sets the unique identifier for the bulk upload operation. Use this ID to check status.

messagestring nullable

Gets or sets the descriptive message about the bulk upload request.

uploadUrlstring nullable

Gets or sets the pre-signed URL where the partner should upload the ZIP file containing all content files.

httpMethodstring nullable

Gets or sets the HTTP method to use when uploading the file (typically PUT).

expiresAtstring date-time

Gets or sets the ISO 8601 timestamp when the upload URL expires.

totalItemsinteger

Gets or sets the total number of content items in the bulk upload.

status'Pending' | 'Downloading' | 'Downloaded' | 'Processing' | 'Uploading' | 'Created' | 'PartialCreated' | 'CreationFailed' | 'Completed' | 'PartialSuccess' | 'Failed'

Gets or sets the current status of the bulk upload operation.

Example response

{
  "bulkUploadId": "550e8400-e29b-41d4-a716-446655440000",
  "message": "Bulk upload request accepted. Upload your ZIP file to the provided URL.",
  "uploadUrl": "https://fileaccess.paylocity.com/uploads/bulk/550e8400-e29b-41d4-a716-446655440000?signature=...",
  "httpMethod": "PUT",
  "expiresAt": "2024-01-15T11:00:00Z",
  "totalItems": 2
}