Batch retry sync logs
Re-enqueue all retryable failed entries for an integration in one call. Emits one retry attempt per entry; respects the integration's circuit breaker (capped at `max_consecutive_errors`). Returns a summary of how many were queued versus skipped. --- **Related endpoints** - `POST /integrations/{provider}/activate` — Activate integration - `POST /integrations/{provider}/deactivate` — Deactivate integration - `GET /integrations/{provider}` — Get integration status - `POST /integrations/{provider}/test` — Test integration credentials - `POST /integrations/{provider}/rotate` — Rotate integration credentials - `POST /integrations/{provider}/sync` — Trigger manual sync - `POST /integrations/{provider}/invoices/{externalInvoiceId}/refresh` — Refresh a single PracticeHub invoice - `GET /integrations/{provider}/invoices/{externalInvoiceId}/refresh-status` — Get demand invoice refresh status **Common errors** - `401 authentication_error` — missing, invalid, expired, or revoked credential. Codes: `authentication_failed`, `invalid_api_key`, `expired_api_key`, `api_key_revoked`, `session_invalid`, `merchant_required`. Carries a `WWW-Authenticate: Bearer` challenge. **Idempotency** Pass an `Idempotency-Key` header (UUID v4 recommended) to make retries safe. Keys are valid for 24 hours; see [the idempotency guide](/docs/fundamentals/idempotency).
Re-enqueue all retryable failed entries for an integration in one call. Emits one retry attempt per entry; respects the integration's circuit breaker (capped at max_consecutive_errors). Returns a summary of how many were queued versus skipped.
Related endpoints
POST /integrations/{provider}/activate— Activate integrationPOST /integrations/{provider}/deactivate— Deactivate integrationGET /integrations/{provider}— Get integration statusPOST /integrations/{provider}/test— Test integration credentialsPOST /integrations/{provider}/rotate— Rotate integration credentialsPOST /integrations/{provider}/sync— Trigger manual syncPOST /integrations/{provider}/invoices/{externalInvoiceId}/refresh— Refresh a single PracticeHub invoiceGET /integrations/{provider}/invoices/{externalInvoiceId}/refresh-status— Get demand invoice refresh status
Common errors
401 authentication_error— missing, invalid, expired, or revoked credential. Codes:authentication_failed,invalid_api_key,expired_api_key,api_key_revoked,session_invalid,merchant_required. Carries aWWW-Authenticate: Bearerchallenge.
Idempotency
Pass an Idempotency-Key header (UUID v4 recommended) to make retries safe. Keys are valid for 24 hours; see the idempotency guide.
Your RevKeen merchant API key. Create and manage keys in Dashboard → Settings → Developer. Use rk_sandbox_* for staging/test and rk_live_* for production. The same key may be sent as Authorization: Bearer <key> if that suits your HTTP client better. A missing, invalid, expired, or revoked key returns 401 with a WWW-Authenticate: Bearer challenge; a valid key without the required scope returns 403.
In: header
Path Parameters
Legacy configurable integration provider (practicehub, wodify, terminal).
Value in
- "practicehub"
- "wodify"
- "terminal"
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://api.revkeen.com/v2/integrations/practicehub/sync-logs/batch-retry" \
-H "x-api-key: $REVKEEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"integrationId": "00000000-0000-0000-0000-000000000000"
}'{ "success": true, "data": null}Toggle auto-send invoices PUT
When enabled, invoices synced from the external provider are automatically emailed to the customer on arrival using the merchant's default email template. When disabled, synced invoices land in `draft` state and must be finalised manually. Existing invoices are unaffected by this toggle. --- **Related endpoints** - `POST /integrations/{provider}/activate` — Activate integration - `POST /integrations/{provider}/deactivate` — Deactivate integration - `GET /integrations/{provider}` — Get integration status - `POST /integrations/{provider}/test` — Test integration credentials - `POST /integrations/{provider}/rotate` — Rotate integration credentials - `POST /integrations/{provider}/sync` — Trigger manual sync - `POST /integrations/{provider}/invoices/{externalInvoiceId}/refresh` — Refresh a single PracticeHub invoice - `GET /integrations/{provider}/invoices/{externalInvoiceId}/refresh-status` — Get demand invoice refresh status **Common errors** - `404 resource_missing` — the referenced resource does not exist or is not visible to your key. **Idempotency** Pass an `Idempotency-Key` header (UUID v4 recommended) to make retries safe. Keys are valid for 24 hours; see [the idempotency guide](/docs/fundamentals/idempotency).
Get billable items from line items GET
Fetch distinct `billable_item_id` values observed on PracticeHub invoice line items over a lookback window (default 90 days), with a strict page budget and Redis cache. Not a full-history scrape — use refresh + larger lookback for progressive scan. --- **Related endpoints** - `POST /integrations/{provider}/activate` — Activate integration - `POST /integrations/{provider}/deactivate` — Deactivate integration - `GET /integrations/{provider}` — Get integration status - `POST /integrations/{provider}/test` — Test integration credentials - `POST /integrations/{provider}/rotate` — Rotate integration credentials - `POST /integrations/{provider}/sync` — Trigger manual sync - `POST /integrations/{provider}/invoices/{externalInvoiceId}/refresh` — Refresh a single PracticeHub invoice - `GET /integrations/{provider}/invoices/{externalInvoiceId}/refresh-status` — Get demand invoice refresh status **Common errors** - `404 resource_missing` — the referenced resource does not exist or is not visible to your key. **Pagination** Offset-based with `limit` (default 25, max 100) and `offset`. The response `pagination` block includes `total` and `hasMore`. See [the pagination guide](/docs/fundamentals/pagination) for SDK auto-paging helpers.