# OnboardMe > Partner API for OnboardMe. Sync clients, send eForms, run KYC, and manage proposals from your own system. - [Introduction](https://docs.onboardme.app/introduction.md): Welcome to the OnboardMe Partner API. REST, JSON, regional hosting, and API key authentication for practice integrations. - [Get Started with OnboardMe Partner API](https://docs.onboardme.app/quickstart.md): Learn how to make your first OnboardMe API call in five steps: get credentials, pick a region, validate access, list clients, and run incremental sync. - [Authenticate with the Partner API](https://docs.onboardme.app/authentication.md): Pass Client ID and secret as headers or HTTP Basic. Learn canWrite, 401 vs 403, and when to call validate. - [Errors and rate limits](https://docs.onboardme.app/errors.md): HTTP status codes, problem-details bodies, and Partner API rate limits including Retry-After headers. - [Send an identity verification](https://docs.onboardme.app/api-reference/endpoints/id-verifications/send.md): Starts an identity verification and sends the recipient an email with a link to complete it, unless **`mute`** is **true** — then no email is sent and you use **`accessUrl`** from the response instead. **Who to verify** - **`entityKey`** — reference an existing client. You may override **`enti… - [List client entities](https://docs.onboardme.app/api-reference/endpoints/entities/list.md): Returns clients (entities) for the practice—typically companies and individuals you onboard. Use `lastUpdated` for incremental sync and `pageNumber` for paged exports (1-based, up to 10000). Optional `name`, `otherName`, `surname`, and `email` query parameters apply case-insensitive substring… - [Get entity by key](https://docs.onboardme.app/api-reference/endpoints/entities/get.md): Returns full detail for one client entity, including contact fields, addresses where configured, custom field values, and identity verification summary when present. **`customFields`** — populated custom field values for the client (active field definitions only). Each item includes `customFieldI… - [Create a client entity](https://docs.onboardme.app/api-reference/endpoints/entities/create.md): Creates a new client (entity) in the practice. Requires an API client with **write** access (`canWrite` from `/api/v1/auth/validate`). **Body fields (common)** - `entityTypeID`: numeric id (see `/api/v1/settings/entity-types`). Ignored when `entityType` is set. - `entityType`: optional **code… - [Get linked integration IDs](https://docs.onboardme.app/api-reference/endpoints/entities/integrations.md): Returns external system identifiers (for example tax, practice management, or CRM IDs) linked to this client. Use the client’s **`entityKey`** from list or detail responses to correlate records in your systems. **404:** Entity not found for your practice. **429:** Rate limit exceeded. - [List deals](https://docs.onboardme.app/api-reference/endpoints/deals/list.md): Returns deals for your practice. Use `lastUpdated` for incremental sync and `pageNumber` for paged exports (1-based, up to 10000). Optional filters: `name`, `status`, `source` (substring), `entityKey`, `groupCode`. By default, deals with status **Lost** are excluded. Set `includeLostDeals=t… - [Validate API credentials](https://docs.onboardme.app/api-reference/endpoints/auth/validate.md): Confirms that your Client ID and secret are accepted and returns basic facts about this integration. **When to use:** During setup, monitoring, or troubleshooting—not on every downstream API call. **200:** `authenticated`, human-readable `message`, `clientID`, `clientName`, `canWrite` (whether… - [List bills](https://docs.onboardme.app/api-reference/endpoints/bills/list.md): Returns bills (invoices) for your practice within a **bill date** range. Unlike most list endpoints, this uses **`startDate`** / **`endDate`** (not `lastUpdated`). Optional filters: `searchFilter`, `invoiceStatus` (`Paid`, `Unpaid`, `Partially Paid`, `Overpaid`, `Cancelled`), `billNowFilter` (… - [Ledger connection status](https://docs.onboardme.app/api-reference/endpoints/bills/ledger-status.md): Returns whether the practice is connected to **Xero** (XpmBlue). Use this before create to know whether line items must include `extAccountID`/`extItemID` and `extTaxID`. **429:** Rate limit exceeded. - [List Xero revenue accounts](https://docs.onboardme.app/api-reference/endpoints/bills/ledger-accounts.md): Returns synced Xero chart-of-accounts rows for the practice (`extAccountID` = local id for create). Empty when Xero is not connected. Prefer accounts with class **REVENUE** for invoice lines. **429:** Rate limit exceeded. - [List Xero tax rates](https://docs.onboardme.app/api-reference/endpoints/bills/ledger-tax-rates.md): Returns selected practice tax rates for Xero invoice lines. Use `extTaxID` on create line items (practice tax option id). Empty when Xero is not connected. **429:** Rate limit exceeded. - [List Xero branding themes](https://docs.onboardme.app/api-reference/endpoints/bills/ledger-branding-themes.md): Returns Xero branding themes for the practice. Use `themeID` (GUID string) as `brandingThemeID` on create. Empty when Xero is not connected. **429:** Rate limit exceeded. - [Create a bill](https://docs.onboardme.app/api-reference/endpoints/bills/create.md): Creates an **adhoc** bill for a real **Active** client entity. Requires **write** access. Bills are **not** linked to proposals/engagements and **not** linked to onboarding entities. `entityKey` must come from **GET `/api/v1/entities`** (Active client only — not a lead). **Does not** push to… - [Download bill PDF](https://docs.onboardme.app/api-reference/endpoints/bills/pdf.md): Returns the OnboardMe-generated invoice **PDF** for the given bill (`application/pdf`). Same layout as the in-app invoice download (practice branding, logo, optional pay link when configured). **404:** Unknown `billingId`, bill outside your practice, or PDF could not be produced. **429:** R… - [Load a bill](https://docs.onboardme.app/api-reference/endpoints/bills/get.md): Returns a single bill with line items and ledger sync fields (`externalId`, `externalNumber`, `externalUrl`). `invoiceStatus` is computed from cancel state and payment totals (same values as list). **404:** Unknown `billingId` or bill outside your practice. **429:** Rate limit exceeded. - [List client contacts](https://docs.onboardme.app/api-reference/endpoints/contacts/list.md): Returns contacts linked to clients in your practice. Each row is an **entity contact** — a person tied to one client (`entityKey`). Use `lastUpdated` for incremental sync and `pageNumber` for paged exports (1-based, up to 10000). Optional `entityKey` limits results to one client. By default, s… - [List leads](https://docs.onboardme.app/api-reference/endpoints/leads/list.md): Returns leads for your practice (clients with lead status). Use `lastUpdated` for incremental sync and `pageNumber` for paged exports (1-based, up to 10000). Optional filters: `name`, `email`, `leadStatus`, and `leadSource` apply case-insensitive substring matching. By default, leads with s… - [Create a lead](https://docs.onboardme.app/api-reference/endpoints/leads/create.md): Creates a new lead in the practice: a client entity with lead status, lead details, and optionally an initial note in one request. Requires an API client with **write** access (`canWrite` from `/api/v1/auth/validate`). **Body fields (common)** - `entityType` / `entityTypeID`: see `/api/v1/s… - [Convert lead to client](https://docs.onboardme.app/api-reference/endpoints/leads/convert.md): Promotes a lead to an **Active** client by setting the underlying entity's client status from Lead to Active. The same **`entityKey`** continues to identify the record; after conversion it appears in **`GET /api/v1/entities/list`** rather than lead list endpoints. Requires an API client with *… - [List groups](https://docs.onboardme.app/api-reference/endpoints/groups/list.md): Returns client groups for your practice. Use `lastUpdated` for incremental sync and `pageNumber` for paged exports (1-based, up to 10000). Optional filters: `name` (substring), `groupCode` (exact), `isActive`. Set **`includeMembers=true`** to nest each group’s members. Members include **`en… - [List eForm templates](https://docs.onboardme.app/api-reference/endpoints/eforms/templates.md): Returns **eForm templates** available to your practice (industry defaults and practice-specific templates). **Paging** - `pageNumber`: 1-based page index (default **1**). - `pageSize`: rows per page (default **50**, maximum **100**). **`includeInactive`:** when **true**, inactive templates… - [Create and send an eForm](https://docs.onboardme.app/api-reference/endpoints/eforms/send.md): Creates an eForm from a **template** (`templateId` from `GET /api/v1/eforms/templates`), then sends the invitation email. **Recipient** - **`entityKey`** — reference an existing client. You may override **`recipientName`**, **`recipientEmail`**, or **`recipientMobile`** for this send only. -… - [List onboardings](https://docs.onboardme.app/api-reference/endpoints/onboardings/list.md): Returns onboarding jobs for your practice. Use `lastUpdated` for incremental sync and `searchFilter` for quick narrowing. **Query tips** - `statusID`: filter by onboarding status ID. - `searchFilter`: free-text search across key onboarding fields. - `pageNumber`: 1-based page (1–10000). - `… - [List recurring billing schedules](https://docs.onboardme.app/api-reference/endpoints/recurring-billing/list.md): Returns recurring billing schedules for your practice. Optional filters: `searchFilter`, `isActive` (`-1` all, `0` inactive, `1` active; default **1**), `pageNumber` (1-based). Schedules do not carry ledger invoice numbers/URLs — those appear on generated bills (`GET /api/v1/bills/{billingId}`… - [Get practice details](https://docs.onboardme.app/api-reference/endpoints/practice/info.md): Returns display and configuration information for the practice tied to your API credentials (name, branding, regional settings, etc.). **401:** Invalid credentials. **404:** Practice information could not be loaded. **429:** Rate limit exceeded. - [List proposals](https://docs.onboardme.app/api-reference/endpoints/proposals/list.md): Returns proposal rows for your practice. Use **`entityKey`** to look up all proposals for one client (then **GET `/api/v1/proposals/{key}/pricing`** for services and billings, or **POST `/api/v1/proposals/{key}/duplicate`** to replicate). **Query tips** - `statusID`: filter by proposal status… - [Get proposal by key](https://docs.onboardme.app/api-reference/endpoints/proposals/get.md): Loads one proposal by **`key`**, including full detail: **services** (prices, quantities, packages), **invoices** / **recurringBillingSetups**, **xpmJobs**, **fyiJobs**, signatories, and clients. Prefer **GET `/api/v1/proposals/{key}/pricing`** when you only need previous pricing, billing, and jo… - [List entity types](https://docs.onboardme.app/api-reference/endpoints/settings/entity-types.md): Returns the practice’s configured entity (client) types—used when creating entities or mapping from your CRM. Pair these IDs with `entityTypeID` on **POST `/api/v1/entities`**. **429:** Rate limit exceeded. - [List practice users](https://docs.onboardme.app/api-reference/endpoints/users/list.md): Returns staff users for the practice so you can map user keys to your own directory or CRM. Use `lastUpdated` to pull only changes since a previous sync. `pageNumber` is 1-based (1–10000). Each row includes `inactive` (practice membership disabled flag). **429:** Rate limit exceeded. - [List outbound webhooks](https://docs.onboardme.app/api-reference/endpoints/webhooks/list.md): Returns webhook subscriptions for the practice tied to your API credentials. Secrets are not included in the response. **401:** Invalid credentials. **429:** Rate limit exceeded. - [Subscribe a webhook](https://docs.onboardme.app/api-reference/endpoints/webhooks/create.md): Creates an outbound webhook subscription (for example a Zapier REST hook target URL). Supported `webhookEvent` values are listed at `GET /api/v1/webhooks/events` (e.g. `proposal.accepted`, `eform.submitted`). One subscription row per event; use the same URL twice for multiple events. Request accep… - [The Entity](https://docs.onboardme.app/api-reference/objects/entity.md): An entity is a client in an OnboardMe practice. Use entityKey as the foreign key for eForms, KYC, proposals, contacts, and bills. - [The Lead](https://docs.onboardme.app/api-reference/objects/lead.md): A lead is a client entity with lead status. The same entityKey is used after you convert the lead to an Active client. - [The Proposal](https://docs.onboardme.app/api-reference/objects/proposal.md): A proposal (engagement) is the commercial document a practice sends a client. The stable id is engagementKey. - [The eForm](https://docs.onboardme.app/api-reference/objects/eform.md): An eForm is a sent form instance created from a template. Use formKey and accessUrl to track and deliver it. - [The Onboarding](https://docs.onboardme.app/api-reference/objects/onboarding.md): An onboarding job collects details, documents, and optional ID checks from one recipient on behalf of one or more clients. - [The Webhook](https://docs.onboardme.app/api-reference/objects/webhook.md): A webhook subscription delivers Partner API events to your HTTPS URL. Store webhookSecret from the 201 response; it is not returned again. - [The Bill](https://docs.onboardme.app/api-reference/objects/bill.md): A bill is an OnboardMe invoice. List by bill date range, download the PDF, and read Xero ledger fields when connected. - [Regional Base URLs for OnboardMe API](https://docs.onboardme.app/concepts/regions.md): OnboardMe hosts each practice in a single region. Learn which base URL to use for ANZ, UK, and South Africa, and how regions affect your requests. - [What Are Entities in OnboardMe?](https://docs.onboardme.app/concepts/entities.md): Entities are the clients in an OnboardMe practice — individuals and companies. Learn about entity keys, types, statuses, and how they map to external systems. - [Pagination and Incremental Sync](https://docs.onboardme.app/concepts/pagination-sync.md): OnboardMe list endpoints support pageNumber pagination and lastUpdated filtering. Learn how to page through results and set up incremental sync. - [Sync Clients from OnboardMe to Your System](https://docs.onboardme.app/guides/sync-clients.md): Learn how to run a full client import and keep your system in sync using the OnboardMe entities list endpoint with lastUpdated incremental filtering. - [Send an eForm to a Client](https://docs.onboardme.app/guides/send-eform.md): Learn how to list OnboardMe eForm templates and send a form to an existing client or ad-hoc recipient, with or without an email notification. - [Trigger Identity Verification and AML Screening](https://docs.onboardme.app/guides/id-verification.md): Learn how to send a KYC identity verification request through OnboardMe, with options for Basic or Extensive AML screening, for clients or new recipients. - [Read Proposals and Services from OnboardMe](https://docs.onboardme.app/guides/send-proposal.md): Learn how to list proposals, retrieve proposal details, and read available services and packages from OnboardMe to sync with your practice management system. - [Leads and deals](https://docs.onboardme.app/guides/leads.md): Create leads, convert them to Active clients, attach notes, and sync the deals pipeline. - [Create and track onboarding jobs](https://docs.onboardme.app/guides/onboarding.md): Create a client onboarding, send or save as draft, track recipients, and download required documents. - [Bills and recurring billing](https://docs.onboardme.app/guides/bills.md): List invoices, download PDFs, create adhoc bills, look up Xero ledger data, and read recurring schedules. - [Outbound webhooks](https://docs.onboardme.app/guides/webhooks.md): Subscribe to Partner API events, store the webhook secret, verify HMAC signatures, and handle retries idempotently. ## OpenAPI Specs - [swagger](https://anzapi.onboardme.app/swagger/v1-external/swagger.json)