API Developer Portal

See API Specification

Developer Portal Key Instructions

The apikeys endpoint allows developers to manage CustomerKeys for their accounts. To interact with this endpoint, you must authenticate with a DeveloperPortalKey. At this time, Open Dental initializes and resets DeveloperPortalKey, self-service functionality for generating/clearing DeveloperPortalKeys will be available in the Developer Portal in a future release. Contact Open Dental support if you need your key reset.

Authorization Header Format: ODFHIR {DeveloperKey}/{DeveloperPortalKey}

ApiKeys GET (multiple)

Returns all CustomerKeys associated with your account.

Example Requests:
GET /apikeys

Example Response:
[
{
"CustomerKey": "AAM2DYNOLF0F7ZUD",
"KeyStatus": "Enabled",
"DateCreated": "2024-12-04",
"DateDisabled": "0001-01-01",
"DateTimeAssigned": "0001-01-01 00:00:00"
},
{
"CustomerKey": "93R8TEL22OI4UPYX",
"KeyStatus": "Enabled",
"DateCreated": "2024-12-04",
"DateDisabled": "0001-01-01",
"DateTimeAssigned": "0001-01-01 00:00:00"
},
{
"CustomerKey": "565ATSAH4SZDUTTK",
"KeyStatus": "DisabledByDeveloper",
"DateCreated": "2025-06-12",
"DateDisabled": "2025-07-28",
"DateTimeAssigned": "0001-01-01 00:00:00"
}
]

200 OK
400 BadRequest (with explanation)
401 Unauthorized (with explanation)

ApiKeys POST (create)

Creates and returns a new CustomerKey. This is the most common call when onboarding a new practice.

Example Requests:
POST /apikeys

Example Response:
{
"CustomerKey": "AAM2DYNOLF0F7ZUD",
"KeyStatus": "Enabled",
"DateCreated": "2024-12-04",
"DateDisabled": "0001-01-01",
"DateTimeAssigned": "0001-01-01 00:00:00"
}

201 Created
400 BadRequest (with explanation)
401 Unauthorized (with explanation)

ApiKeys PUT (update)

Updates the status or metadata of an existing CustomerKey.

CustomerKey: Required. The customer key to update..
KeyStatus: Optional. Either "Enabled" or "DisabledByDeveloper".

Example Requests:
PUT /apikeys

{
"CustomerKey": "CustomerKeyHere",
"KeyStatus": "DisabledByDeveloper",
}

Example Response:
{
"CustomerKey": "AAM2DYNOLF0F7ZUD",
"KeyStatus": "DisabledByDeveloper",
"DateCreated": "2024-12-04",
"DateDisabled": "0001-01-01",
"DateTimeAssigned": "0001-01-01 00:00:00"
}

200 OK
400 BadRequest (with explanation)
401 Unauthorized (with explanation)
404 NotFound (with explanation)