Most org chart tools don't have an API. The ones that do charge enterprise prices.
That's a problem, because the most valuable thing an org chart can do isn't hang on a wall. It's feed data to other systems. Specifically, it should tell your provisioning scripts who works where, who reports to whom, and when those things change.
Without that data flowing automatically, someone on your IT team is manually toggling access every time a person joins, leaves, or switches teams. That's slow. It's error-prone. And it's how people end up with access to systems they shouldn't touch.
The manual provisioning tax
Here's how access provisioning works at most companies: a new hire starts. Their manager sends an email or Slack message to IT. IT creates accounts one by one — Google Workspace, Slack, GitHub, Jira, Figma, whatever the team uses. If the new hire is in engineering, they get GitHub. If they're in design, they get Figma. If they're in both... somebody guesses.
When someone moves teams, the process is worse. Nobody sends a ticket saying "I transferred from Marketing to Engineering." The old access stays. The new access gets added piecemeal. Three months later, the former marketing coordinator still has admin access to the company's ad accounts.
Functionly describes the opportunity well: "An Org Chart API can link to your HR management system (HRMS) or database, automatically reflecting any changes in roles, titles, or reporting lines... saving teams from the hassle of manual adjustments."
That's the whole idea. The org chart isn't just a picture. It's a data source that other systems can consume.
Why most tools can't do this
Browse GetApp's org chart software category and count how many offer API access. It's a short list. Most org chart tools are visual-first — they let you draw boxes and lines, export a PNG, and call it a day. They were built for HR presentations, not for developer workflows.
The ones that do offer APIs tend to gate them behind enterprise contracts. You need to talk to sales, negotiate a custom price, and wait weeks for access.
Meanwhile, over on Microsoft's Q&A forums, developers trying to programmatically fetch org chart data from Azure AD describe significant hurdles — pagination limits, permission scoping complexity, and inconsistent manager fields that require multiple API calls to resolve into a clean tree.
The tooling gap is real. Org data exists in every company. Getting it out programmatically, in a clean format, with real-time updates? That's where things break down.
The provisioning use case, spelled out
Picture this flow:
- Sarah transfers from Marketing to Engineering in Google Workspace
- ChartPull detects the department change during its next sync
- A
employee.department_changedwebhook fires to your provisioning endpoint - Your script reads the payload, sees the new department is "Engineering"
- The script grants Sarah access to GitHub, AWS staging, and the engineering Slack channel
- The same script revokes her access to the ad platform, the marketing Slack channel, and the brand asset library
No tickets. No Slack messages. No "Hey IT, can you give me access to..." emails. The org structure is the source of truth, and the provisioning logic follows it automatically.
Here's what the webhook payload looks like:
{
"type": "employee.department_changed",
"timestamp": "2026-02-19T14:30:00.000Z",
"data": {
"employeeId": "emp_abc123",
"email": "sarah.chen@example.com",
"name": "Sarah Chen",
"changes": {
"previousDepartment": "Marketing",
"newDepartment": "Engineering"
}
}
}
Your provisioning script matches the department to a set of tools. Engineering gets GitHub, AWS, and Datadog. Marketing gets HubSpot, Google Ads, and Canva. The mapping lives in a config file, not in someone's head.
The API that makes this work
The ChartPull REST API exposes your full org tree as structured JSON. One GET request returns the entire hierarchy:
curl -H "Authorization: Bearer cpk_your_key_here" \
https://chartpull.com/api/v1/org-tree
The response is a nested JSON tree. Every node includes the employee's ID, name, email, title, department, and their direct reports. You can traverse it programmatically to answer questions like "who reports to this VP?" or "which department does this person belong to?"
For provisioning, you typically don't need the full tree. You need to know when things change. That's what webhooks are for.
ChartPull supports 8 event types:
employee.created— new hire appeared in the directoryemployee.deleted— someone leftemployee.manager_changed— reporting line shiftedemployee.department_changed— team transferemployee.updated— title, name, or location changedemployee.dotted_line_added— cross-functional relationship createdemployee.dotted_line_removed— cross-functional relationship removedemployee.custom_field_updated— custom metadata changed
Each event fires as an HTTP POST to your endpoint with a signed payload. You verify the signature, parse the JSON, and run your logic. Retries are handled automatically via Svix — if your endpoint is down, ChartPull will retry with exponential backoff.
Beyond provisioning: what else the API unlocks
Access provisioning is the clearest use case, but it's not the only one. Teams use the ChartPull API to:
Sync to internal tools. Push org data into your company wiki, intranet, or internal directory. When someone changes titles, it updates everywhere.
Power Slack bots. Build a /who-reports-to command that queries the org tree in real time. No stale spreadsheet lookup.
Feed BI dashboards. Pull department sizes, span-of-control metrics, and headcount changes into your analytics stack. Track org health over time with real numbers.
Automate compliance. When an auditor asks "who had access to what, and why?" your answer is a log of webhook events tied to org changes. Every access grant traces back to an org structure event.
The natural language option
For non-developers who still need programmatic answers, ChartPull also exposes a natural language API endpoint. Send a plain-English question:
curl -X POST \
-H "Authorization: Bearer cpk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"question": "Who are the direct reports of the VP of Engineering?"}' \
https://chartpull.com/api/v1/ask
The response comes back as structured JSON. Useful for chatbot integrations, Slack workflows, or quick scripts where you don't want to parse a tree.
What this costs
ChartPull's REST API, webhooks, and natural language API are all included with the Integrations add-on. No per-call pricing. No usage caps. No enterprise-only gating behind a sales conversation.
Every workspace starts with a 14-day free trial that includes full API access. Connect your Google Workspace, generate an API key, and start building against real org data in under five minutes.
Your org chart already has the data. Stop copying it by hand.