List journal sync jobs
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": "Invalid or expired API Key",
"request_id": "req_example",
"suggested_action": "Send an API key in X-API-Key, or an OAuth access token as Authorization: Bearer. Refresh an expired access token.",
"documentation_url": "https://entendre.ai/docs/get-started/authentication"
}
}{
"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"
}
}Journals
List journal sync jobs
Lists general-ledger sync runs, newest first, with their status and counts.
GET
/
v1
/
journal-entries
/
syncs
List journal sync jobs
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": "Invalid or expired API Key",
"request_id": "req_example",
"suggested_action": "Send an API key in X-API-Key, or an OAuth access token as Authorization: Bearer. Refresh an expired access token.",
"documentation_url": "https://entendre.ai/docs/get-started/authentication"
}
}{
"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"
}
}By default, only completed runs are returned. Set
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. See Authentication.
Query Parameters
Restrict to one destination provider.
Available options:
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.
Required range:
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