01 — PRICING AND CONTRACTS
What it costs and what’s in the package
Do I need Core Developer, or can I just use the API?
Do I need Core Developer, or can I just use the API?
Can I license Core Developer for only some of my providers?
Can I license Core Developer for only some of my providers?
Are part-time providers billed at the same rate?
Are part-time providers billed at the same rate?
Can I buy just the API, or just the Hosted Database?
Can I buy just the API, or just the Hosted Database?
Does Elation Analyst cost extra?
Does Elation Analyst cost extra?
Will my bill go up if my API traffic goes up?
Will my bill go up if my API traffic goes up?
02 — ACCESS AND CREDENTIALS
Getting keys and keeping them working
Do I create my own API credentials, or does Elation issue them?
Do I create my own API credentials, or does Elation issue them?
Can I rotate a credential without taking my integration down?
Can I rotate a credential without taking my integration down?
I lost my client secret. Can you send it again?
I lost my client secret. Can you send it again?
Can one credential work for both REST API 2.0 and the FHIR API?
Can one credential work for both REST API 2.0 and the FHIR API?
My integration sent a username and password and now authentication fails.
My integration sent a username and password and now authentication fails.
grant_type to client_credentials. Your client ID and secret do not change.See Get Token.A vendor is asking for access to my Elation data. Is that Core Developer?
A vendor is asking for access to my Elation data. Is that Core Developer?
03 — SANDBOX
Building before you buy
Do I have to buy Core Developer to get a sandbox?
Do I have to buy Core Developer to get a sandbox?
Does the sandbox come with sample patients and test data?
Does the sandbox come with sample patients and test data?
Can I copy my sandbox setup into production when I go live?
Can I copy my sandbox setup into production when I go live?
What does the sandbox validation sign-off need to include?
What does the sandbox validation sign-off need to include?
401, 429, and 5xx handling, because those are the failures that show up in production rather than in a happy-path test.If you cannot produce that list, the build is not ready for real patient data. See Get started.04 — APIS AND WEBHOOKS
Building against REST 2.0, FHIR, and events
What are the API rate limits?
What are the API rate limits?
429 when you exceed them. See errors.Two things that help in practice. Reuse an access token until it expires instead of requesting a fresh one per call, since the token endpoint is limited separately from the resource endpoints. And do not rely on a Retry-After header being present on every 429. Use your own exponential backoff with jitter.Does hitting a rate limit generate a charge?
Does hitting a rate limit generate a charge?
429 and never generates an invoice. Build in retry with exponential backoff and jitter — see errors.Can I write data back through the FHIR API?
Can I write data back through the FHIR API?
Why did count disappear from my list responses?
Why did count disappear from my list responses?
next, previous, and results, and they omit count.If you need the total, add an offset parameter to the request, for example &offset=0. That switches the response to offset-based pagination, which includes count alongside limit and offset. Either way, a single page returns at most 100 results.Cursor pagination is the more performant and more reliable of the two, so prefer it and track completion from next being null rather than from a total. See Pagination.My webhook endpoint was down. Will you resend the events I missed?
My webhook endpoint was down. Will you resend the events I missed?
5xx response or no response at all triggers a retry. A 4xx is treated as final and is never retried, so returning 400 to an event you cannot parse discards it.If retries are exhausted without a 200, the event stops and you are not notified. That is what the Published Events API is for: it returns the delivery record, including the HTTP status Elation received, for every event sent to your application over the last 90 days. Reconcile against it rather than assuming delivery.If you find a gap older than the retry window, contact Support.Why did I receive the same webhook event more than once?
Why did I receive the same webhook event more than once?
event_id rather than event_uuid, since event_uuid is newer and can be absent. And make handlers idempotent per resource, not only per event: processing the same resource twice should reach the same end state rather than creating a second record.See Acknowledging events.Can I poll for changes instead of subscribing to webhooks?
Can I poll for changes instead of subscribing to webhooks?
patients and visit_notes. A polling loop can miss in-place edits to resources that do not expose one. That failure is silent, so you will not see an error when it happens.The recommended pattern is Webhooks for change detection, with the Published Events API as your reconciliation backstop. Reserve polling for patients and visit_notes.Why do documents my integration creates come back unsigned?
Why do documents my integration creates come back unsigned?
signed_by or signed_date returns a 400 with "Practice does not have API signing enabled". Requests that omit both fields are unaffected.Turning it on is a paid add-on. It requires an executed BAA, and an Admin User at your practice must review and accept the API document signing agreement, which covers clinical oversight and regulatory responsibility for documents signed this way. See Pricing and add-ons and errors.Can my integration act as a specific user instead of the API account?
Can my integration act as a specific user instead of the API account?
X-On-Behalf-Of header with the numeric id of the user you want to act as, and the request is processed as if that user made it. Attribution then lands on that provider in the chart, the action log, and the Hosted Database.Your token needs the act_as_user scope alongside at least one resource scope, and the user has to be active and in a practice your token covers. See User Impersonation. This is currently in closed beta and available to select customers only, so confirm with Support that it is on for your account before you design around it.05 — HOSTED DATABASE
Querying your data in Snowflake
Who pays for Snowflake compute?
Who pays for Snowflake compute?
How current is the data?
How current is the data?
My data looks stale. How do I check when it actually refreshed?
My data looks stale. How do I check when it actually refreshed?
hdb_last_sync is a per-row column that records when Elation’s internal store last refreshed that row from the source application. It does not tell you when your Hosted Database finished its most recent build, and it does not confirm that an individual record has landed. If you are filtering to find recent activity, filter on a business timestamp such as creation_time instead.A query that runs during the rebuild window can also see a partially built table. If the data still looks wrong after you have checked the last refresh time, contact Support with the table and what you expected.Can I write to the Hosted Database, load my own data in, or schedule a query?
Can I write to the Hosted Database, load my own data in, or schedule a query?
Does the Hosted Database include Elation Billing data?
Does the Hosted Database include Elation Billing data?
A table or column I expected isn't in my schema.
A table or column I expected isn't in my schema.
How much notice do I get before a schema change breaks my query?
How much notice do I get before a schema change breaks my query?
My API timestamps and my Hosted Database timestamps don't line up.
My API timestamps and my Hosted Database timestamps don't line up.
convert_timezone does this per query, though the result does not persist.See Dates for the API side and What timezone is my data in for the Hosted Database side, including the one column that is documented as an exception.I'm locked out of my Snowflake account.
I'm locked out of my Snowflake account.
How do I verify that Elation Analyst's answer is correct?
How do I verify that Elation Analyst's answer is correct?
- Read the interpretation line. Analyst restates what it thought you asked, including the date range it chose. That is where a wrong answer usually reveals itself, and it’s written in plain English.
- Start with a question you already know the answer to. Ask something you can verify against a report you already run. If it matches, you have calibrated it for the questions you can’t check.
- Download the CSV and spot-check a few rows. Pull two or three patients out of the result and open their charts. Faster than auditing a query, and it catches the errors that matter.
06 — SECURITY AND COMPLIANCE
PHI, agreements, and access control
Do I need a BAA?
Do I need a BAA?
Can other Elation customers see my Hosted Database?
Can other Elation customers see my Hosted Database?
Do I need to allowlist Elation's IP addresses, or does Elation allowlist mine?
Do I need to allowlist Elation's IP addresses, or does Elation allowlist mine?
Can I restrict who reaches my Hosted Database?
Can I restrict who reaches my Hosted Database?
Who at my practice can create API credentials?
Who at my practice can create API credentials?
How do I limit what a credential can read or write?
How do I limit what a credential can read or write?
system/<resource>.<read|write>. Assign them when you create a credential, or edit them afterward, and changes take effect immediately. A credential with no scopes assigned falls back to a global scope carrying full practice read and write, which is rarely what you want for a single-purpose integration.Granular scopes are currently in closed beta and available to select customers only, so confirm with Support what is enabled for your account. See Token Scopes for the format, the full resource list, and the rule that specific scopes cannot be combined with the global scope in one token request.07 — STAYING CURRENT Elation publishes RSS for both the API 2.0 Changelog and the Hosted Database Release Notes. Subscribing is how you hear about new endpoints, field changes, and deprecations before they reach your integration. See Subscribe to Elation Release Feeds. For pricing, access, contract questions, or anything above, raise a request at app.elationemr.com/support or contact your Customer Success Manager.
Related articles
- Core Developer overview — what it is and who it’s for
- Pricing and add-ons — cost, seat rules, and add-ons
- Get started — sandbox, credentials, and production access