curl --request GET \
--url https://api.entendre.finance/v1/journal-entries/syncs \
--header 'X-API-Key: <api-key>'const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.entendre.finance/v1/journal-entries/syncs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/journal-entries/syncs"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "sh_507f1f77bcf86cd799439011",
"organization_id": "org_507f1f77bcf86cd799439011",
"accounting_period_id": "ap_507f1f77bcf86cd799439011",
"created_by": "usr_507f1f77bcf86cd799439011",
"integration_type": "quickbooks",
"job_status": "completed",
"synced_count": 12,
"failed_count": 0,
"total_count": 12,
"completed_at": "2026-08-31T12:01:00Z",
"error_message": null,
"created_at": "2026-08-31T12:00:00Z",
"updated_at": "2026-08-31T12:01:00Z"
}
],
"has_more": false,
"next_cursor": null,
"status_counts": {
"COMPLETED": 1
}
}{
"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 journal sync jobs
Lists general-ledger sync runs, newest first, with their status and counts.
curl --request GET \
--url https://api.entendre.finance/v1/journal-entries/syncs \
--header 'X-API-Key: <api-key>'const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.entendre.finance/v1/journal-entries/syncs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/journal-entries/syncs"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "sh_507f1f77bcf86cd799439011",
"organization_id": "org_507f1f77bcf86cd799439011",
"accounting_period_id": "ap_507f1f77bcf86cd799439011",
"created_by": "usr_507f1f77bcf86cd799439011",
"integration_type": "quickbooks",
"job_status": "completed",
"synced_count": 12,
"failed_count": 0,
"total_count": 12,
"completed_at": "2026-08-31T12:01:00Z",
"error_message": null,
"created_at": "2026-08-31T12:00:00Z",
"updated_at": "2026-08-31T12:01:00Z"
}
],
"has_more": false,
"next_cursor": null,
"status_counts": {
"COMPLETED": 1
}
}{
"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"
}
}include_all=true to add failed, canceled and hanged runs, or include_in_progress=true to add runs that have not finished.
status_counts counts all statuses, not only the completed runs of the default. A failed count can be above zero when the page shows only completed runs.Authorizations
Your organization API key. Some operations also need a key that is associated with a user; their pages say so.
Query Parameters
Restrict to one destination provider.
quickbooks, xero, netsuite, dualentry, campfire Include failed, canceled and hanged runs alongside completed ones.
Include runs that have started but not finished.
Maximum number of records to return.
1 <= x <= 100The next_cursor value from the previous page. Keep the other filters unchanged.
Response
Sync runs in the authenticated organization. An empty data array means no run matches; status_counts still reports what the filters hid.
The records.
Show child attributes
Show child attributes
Whether another page is available.
Cursor for the next page, or null on the last page.
Run counts by status. Statuses with no runs are omitted.
Show child attributes
Show child attributes