curl --request GET \
--url https://api.entendre.finance/v1/accounting-periods \
--header 'X-API-Key: <api-key>'const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.entendre.finance/v1/accounting-periods', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/accounting-periods"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "ap_123def",
"organization_id": "org_abc123",
"name": "September 2026",
"start_date": "2026-08-31T12:00:00Z",
"end_date": "2026-08-31T12:00:00Z",
"status": "open",
"legal_entity_id": "le_507f1f77bcf86cd799439011",
"closed_on_date": "2026-08-31T12:00:00Z",
"closed_by": "usr_507f1f77bcf86cd799439011",
"created_at": "2025-01-01T00:00:00.000Z",
"updated_at": "2025-01-01T00:00:00.000Z"
}
],
"has_more": false,
"next_cursor": null
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid path, query or request body.",
"request_id": "req_example"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required.",
"request_id": "req_example"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient access to organization",
"request_id": "req_example"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found",
"request_id": "req_example"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 30s.",
"request_id": "req_example"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error",
"request_id": "req_example"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service unavailable.",
"request_id": "req_example"
}
}List accounting periods
Lists accounting periods with their boundaries and close state.
curl --request GET \
--url https://api.entendre.finance/v1/accounting-periods \
--header 'X-API-Key: <api-key>'const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.entendre.finance/v1/accounting-periods', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/accounting-periods"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "ap_123def",
"organization_id": "org_abc123",
"name": "September 2026",
"start_date": "2026-08-31T12:00:00Z",
"end_date": "2026-08-31T12:00:00Z",
"status": "open",
"legal_entity_id": "le_507f1f77bcf86cd799439011",
"closed_on_date": "2026-08-31T12:00:00Z",
"closed_by": "usr_507f1f77bcf86cd799439011",
"created_at": "2025-01-01T00:00:00.000Z",
"updated_at": "2025-01-01T00:00:00.000Z"
}
],
"has_more": false,
"next_cursor": null
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid path, query or request body.",
"request_id": "req_example"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required.",
"request_id": "req_example"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient access to organization",
"request_id": "req_example"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found",
"request_id": "req_example"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 30s.",
"request_id": "req_example"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error",
"request_id": "req_example"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service unavailable.",
"request_id": "req_example"
}
}Authorizations
Your organization API key. Some operations also need a key that is associated with a user; their pages say so.
Query Parameters
Exact start date of the period (YYYY-MM-DD), such as 2026-09-01. Not a lower bound.
IDs to return, separated by commas. The other filters also apply.
1 - 100 elements1Filter by one or more legal entity IDs. Omit to include all authorized entities. An empty list is invalid.
Include the total number of matching records. If the count cannot be calculated, the request fails.
Maximum number of records to return.
1 <= x <= 100The next_cursor value from the previous page. Keep the other filters unchanged.
Filter by period status.
open, soft_closed, closed Response
The matching records.
The records.
Show child attributes
Show child attributes
Whether another page is available.
Cursor for the next page, or null on the last page.
Total matching records across all pages. Present when include_count=true.
x >= 0