API Version 1 - Changelog - Cloud


2026-11

Fixes

Every 429 and 503 response now carries Retry-After

Responses with status 429 Too Many Requests and 503 Service Unavailable now include a Retry-After header with the number of seconds to wait before retrying.

429 responses say which limit was hit, and errors set detail

Every 429 response body now has a limitType member when the limit is known: rateLimit, ioRateLimit, concurrentSearches, concurrentOperations or repositorySessions. Concurrency limits also carry limitScope (principal or account). 413 responses carry limitType: requestSize. Error responses now set detail to the error message, which is also still in title. 400 and 413 responses for malformed or oversized request bodies now return the request path in instance and the operation id in operationId (they were swapped).

503 Service Unavailable when the repository server cannot be reached

When the API server could not connect to the repository server, requests answered 500. They now answer 503 with the error class serviceUnavailable and a Retry-After header. A failure after the request reached the repository server still answers 500.

503 Service Unavailable when the session store is unavailable

When the API server's session store was briefly unreachable, too slow or still starting up, requests answered 500, or 401 with "no existing session". They now answer 503 with the error class serviceUnavailable and a Retry-After header. A 401 still means the session or token is not valid.

A busy server answers 503 with limitType: serverBusy

When a server is already working on as many requests as it can, it can now answer a new request with 503, limitType: serverBusy and a Retry-After header after waiting at most about a second, instead of holding it until it times out. The request has not been started, so it is safe to send again after the delay in Retry-After.

Service principals can open 10 concurrent searches

A service principal can now have up to 10 open searches per access token. It was limited to 6.

Oversized uploads now fail with 413 instead of 503

A multipart upload larger than the import size limit could reach the client as 503. It is now rejected with 413 and errorCode 221 before the body is read.

Invalid or missing field values from the repository server now return 400 instead of 500

Repository server errors 9017, 9028 and 9368 answered 500. They now answer 400, and the repository error code stays in errorCode.

Electronic document downloads can answer 503 when the server is short of memory

GET /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Document/edoc and POST .../Laserfiche.Repository.Document/GetEdocWithAuditReason can return 503 with Retry-After when the server is temporarily short of memory for the requested range; retry after that delay. A range too large to buffer at all (about 2 GiB) returns 400 before anything is read, instead of failing part-way.

Folder listings no longer stay open on the repository server after paging stops

A folder listing that a client stopped paging through was kept open on the repository server while the client kept making other requests, which could cause unrelated requests to fail under load. A listing that has not been used for five minutes is now closed.

Other

Security Updates

  • Updated to .NET 10.
  • Updated vulnerable dependencies.

2026-03

Other

Bug Fixes

  • Fixed the Start Menu shortcut for Laserfiche API Server to now point to the correct documentation.

Maintenance

  • Updated rate limits for import and export APIs. Exact limits can be found in the documentation.

2025-08

Maintenance

  • Added support for various languages including Japanese and German for error messages

2025-07

Maintenance

  • Removed v2-alpha endpoints

Security Updates

  • Updated vulnerable dependencies.
  • Updated to .NET 8

2024-08

Maintenance

  • Removed v1-alpha endpoints

2024-04

Security Updates

Updated vulnerable dependencies.


2024-01

Entries

The following API is updated to always return entryType, even if the OData $select query options is used and it doesn't include entryType:

  • GET /Repositories/{repoId}/Entries/{entryId}

Searches

The following API is updated to always return entryType, even if the OData $select query options is used and it doesn't include entryType:

  • GET /Repositories/{repoId}/Searches/{searchToken}/Results

SimpleSearches

The following API is updated to always return entryType, even if the OData $select query options is used and it doesn't include entryType:

  • POST /Repositories/{repoId}/SimpleSearches
2023-12

Entries

[BREAKING] The following API returns the length of the document in the X-APIServer-ContentLength response header, instead of the HTTP Content-Length response header:

  • HEAD /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Document/edoc
2023-09

Entries

OAuth scope for the following APIs has been revised to repository.Read:

  • POST /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Document/GetEdocWithAuditReason
  • POST /Repositories/{repoId}/Entries/{entryId}/fields/GetDynamicFieldLogicValue

New isSource property added to the request body of the following API. This allows assigning link metadata where the current entry is the source or target in the link relationship.

  • PUT /Repositories/{repoId}/Entries/{entryId}/links

Bug Fixes

Fixed a bug where parts of the following API URLs were case sensitive:

  • GET /Repositories/{repoId}/Entries/links
  • PUT /Repositories/{repoId}/Entries/links
  • GET /Repositories/{repoId}/Entries/tags
  • PUT /Repositories/{repoId}/Entries/tags
  • DELETE /Repositories/{repoId}/Entries/Laserfiche.Repository.Document/pages

Maintenance

Marked file parameter electronicDocument as required and added documentation on how to create a blank document to the following API:

  • POST /Repositories/{repoId}/Entries/{parentEntryId}/{fileName}

Searches

OAuth scope for the following APIs has been revised to repository.Read:

  • POST /Repositories/{repoId}/Searches
  • DELETE /Repositories/{repoId}/Searches/{searchToken}

SimpleSearches

OAuth scope for the following APIs has been revised to repository.Read:

  • POST /Repositories/{repoId}/SimpleSearches

Tasks

OAuth scope no longer applies to the following APIs:

  • GET /Repositories/{repoId}/Tasks/{operationToken}
  • DELETE /Repositories/{repoId}/Tasks/{operationToken}
2023-08

Other

Maintenance

Improved service security and stability

2023-07

Other

Features

Support Brotli and Gzip response compression to reduce response latency when the Accept-Encoding request header is used.

2023-06

Entries

Bug Fixes

Fixed a bug where in some scenarios with the Time or Data field type, the following APIs had an error when returning field values:

  • GET /Repositories/{repoId}/Entries/{entryId}/fields
  • PUT /Repositories/{repoId}/Entries/{entryId}/fields

Fixed a bug where in some scenarios, the following API could return an error:

  • HEAD /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Document/edoc

Other

Bug Fixes

Fixed inconsistent error responses to now return ProblemDetails schema.

2023-04

Entries

Bug Fixes

Fixed a bug where in some scenarios, the following API could return an incorrect nextlink:

  • GET /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Folder/children
2023-03

Other

Features

OAuth 2.0 scope support has been added for security but is optional in v1 for backwards compatibility. If your access token does not contain any scopes, you will not run into any issues, but if your token explicitly contains scopes, the API Server will enforce scope security and issue a 403 Forbidden if it does not have the correct scopes.

2023-02

Entries

Bug Fixes

Fixed a bug where in some scenarios, the following API could return an error instead of the entries in the folder:

  • GET /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Folder/children

Other

Maintenance

Added a maximum JSON request body size limit of 5 MB to all non-import document related APIs. As a result, the 413 Payload Too Large status code has been added to several APIs.

Added a maximum JSON response body size limit of 5 MB to all non-export document related APIs.

2023-01

Entries

Features

The APIServer can now include an error message in a HTTP response header named X-APIServer-Error for the following API:

  • HEAD /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Document/edoc

Other

Maintenance

Updated the ProblemDetails error response schema to more accurately reflect the response. Undocumented extension properties are now documented.

Added support for localized error messages for the fr and es culture codes. The culture code can be sent in API requests through the culture query parameter or the Accept-Language header.

2022-12

Entries

Bug Fixes

Removed an incorrect ProblemDetails error response schema from the following API:

  • HEAD /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Document/edoc

[BREAKING] Token substitution in the name of the copied entry is no longer supported in the following API to avoid errors while copying:

  • POST /Repositories/{repoId}/Entries/{entryId}/Laserfiche.Repository.Folder/CopyAsync
2022-10

Entries

Maintenance

The Entry base type schema has been marked as abstract. If using the Laserfiche API client libraries, should use the derived types like Folder, Document, Shortcut, and RecordSeries.

ServerSession

Maintenance

The following APIs are marked as deprecated in v1:

  • POST /Repositories/{repoId}/ServerSession/Create
  • POST /Repositories/{repoId}/ServerSession/Refresh
  • POST /Repositories/{repoId}/ServerSession/Invalidate
2022-09

Entries

Features

Added the following API:

  • GET /Repositories/{repoId}/Entries/ByPath

Searches

Bug Fixes

Fixed a bug that caused the search results return localized field values in a different format from other APIs.

2021-02: Initial Release