For Agents
Manage clients, branches, files, contacts, and end-of-period closes inside the Keeper bookkeeping platform via 69 endpoints, authenticated with an OAuth2 client-credentials bearer token.
Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the Double API, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with Double API.
List and update the full client roster across a Keeper practice
Navigate branch hierarchies to scope client lists to a specific office
Read end-of-period close records and supporting files for a given client
GET STARTED
Use for: I want to list every client at a Keeper practice, Get the activity log entries for a specific client, Retrieve all files attached to a client record, List end-of-period closes for a client this quarter
Not supported: Does not handle journal entries, ledger postings, payroll, or invoicing — use for Keeper practice-management data such as clients, branches, files, and activity logs only.
The Double API (the public API for Keeper, the bookkeeping platform) gives bookkeepers and accounting firms programmatic access to clients, branches, files, contacts, assignments, end-of-period closes, and the activity log. The 69 endpoints cover reading and updating the client roster, navigating branch hierarchies, and pulling the audit trail used to track who did what across a practice. Authentication is OAuth2 client credentials — clients exchange a client_id and client_secret at the OAuth token endpoint for a 24-hour bearer token, then attach it to every request. Rate limits are 300 requests per OAuth client per 5-minute window.
Query the activity log to audit who took what action across the practice
Pull contact records associated with each client for outreach workflows
Read assignment records that map staff to client engagements
Patterns agents use Double API for, with concrete tasks.
★ Accounting Firm Client Roster Sync
Pull the full Keeper client roster into a CRM, billing tool, or internal data warehouse on a schedule so client metadata stays consistent across systems. The /api/clients endpoints support count and detail reads, and /api/clients/summary/count gives a quick portfolio total. Most firms wire up a daily sync in a single afternoon because the OAuth client-credentials flow only needs to refresh once every 24 hours.
GET /api/clients with pagination to fetch the full roster, then POST each new client into the firm's CRM with the Keeper client ID stored on the CRM record
Practice Activity Audit
Surface practice-wide activity for compliance and review by querying /api/activity-log with date filters and per-client scoping. The endpoint feeds into audit reports that show which staff member touched which client record and when, which is required by many accounting partners during peer review. Pair it with /api/activity-log/count to gauge volume before pulling full pages.
GET /api/activity-log/count for the last 30 days, then page through GET /api/activity-log to build a CSV of staff actions by client
Client File and Close Document Retrieval
Fetch the files and end-of-period closes attached to a specific client so an automation can attach them to an email, archive them, or feed them into a downstream review tool. The /api/clients/{clientId}/files and /api/clients/{clientId}/end-closes endpoints return the file metadata needed to download and route documents.
GET /api/clients/{clientId}/end-closes for the last quarter, then GET /api/clients/{clientId}/files filtered to the matching close period to retrieve the supporting documents
AI Agent Bookkeeping Assistant
An AI agent that helps bookkeepers manage their workload uses Jentic to discover and call Keeper operations — listing clients, reading recent activity, and pulling contacts — to answer questions like 'which clients haven't had activity in two weeks'. Jentic injects the bearer token per call so the agent never holds the OAuth client_secret. The agent composes multiple endpoints in one workflow without learning Keeper's REST surface manually.
Through Jentic, call GET /api/clients then GET /api/activity-log per client to surface clients with no activity in the last 14 days
69 endpoints — the double api (the public api for keeper, the bookkeeping platform) gives bookkeepers and accounting firms programmatic access to clients, branches, files, contacts, assignments, end-of-period closes, and the activity log.
METHOD
PATH
DESCRIPTION
/api/clients
List clients across the practice
/api/clients
Create a new client record
/api/clients/{clientId}
Read a single client by ID
/api/clients/{clientId}/files
List files attached to a client
/api/clients/{clientId}/end-closes
List end-of-period closes for a client
/api/activity-log
Query the practice-wide activity log
/api/branches
List branches in the practice
/api/clients/{clientId}/assignments
List staff assignments for a client
/api/clients
List clients across the practice
/api/clients
Create a new client record
/api/clients/{clientId}
Read a single client by ID
/api/clients/{clientId}/files
List files attached to a client
/api/clients/{clientId}/end-closes
List end-of-period closes for a client
Three things that make agents converge on Jentic-routed access.
Credential isolation
The Keeper / Double client_id and client_secret are stored encrypted in the Jentic vault. Jentic mints and refreshes the OAuth2 bearer on the agent's behalf, so the secret never enters the agent's context.
Intent-based discovery
Agents search by intent (e.g. 'list clients in keeper' or 'get keeper activity log') and Jentic returns the matching Double API operation with its input schema attached.
Time to first call
Direct Double API integration: 1-3 days for OAuth2 setup, token refresh, pagination, and rate-limit handling. Through Jentic: under 1 hour — search, load, execute.
Alternatives and complements available in the Jentic catalogue.
Specific to using Double API through Jentic.
What authentication does the Double API use?
OAuth 2.0 client credentials. POST your client_id and client_secret with grant_type=client_credentials to https://api.doublehq.com/oauth/token to get a bearer token, then attach the token in the Authorization header on every request. Tokens are valid for 24 hours. Through Jentic the client_secret stays in the encrypted vault and Jentic refreshes the bearer for you.
Can I list every client in a Keeper practice with the Double API?
Yes. GET /api/clients returns the client roster with pagination, and GET /api/clients/summary/count gives a portfolio total without paging. Use GET /api/clients/{clientId} to drill into a single client.
What are the rate limits for the Double API?
The API enforces 300 requests per 5-minute window per OAuth client on a rolling-window basis. If you exceed this you receive HTTP 429. For high-volume reads, batch by paginating /api/clients rather than calling /api/clients/{clientId} per record.
How do I pull a client's activity log through Jentic?
Search Jentic for 'get keeper activity log' to find GET /api/activity-log, load its schema, and execute with date and clientId filters. The Jentic flow is pip install jentic, then client.search, client.load, and client.execute — Jentic injects the OAuth bearer at execution time.
Does the Double API expose end-of-period close records?
Yes. GET /api/clients/{clientId}/end-closes returns the close records for one client, and the related GET /api/clients/{clientId}/files endpoint returns the supporting documents that were attached when the close was completed.
Can I create new clients through the Double API?
Yes. POST /api/clients accepts the client payload and creates the record inside Keeper. Most practices use the existing onboarding flow in Keeper itself, so this endpoint is mostly used for bulk migrations from another bookkeeping system.
/api/activity-log
Query the practice-wide activity log
/api/branches
List branches in the practice
/api/clients/{clientId}/assignments
List staff assignments for a client