/organizationThe organization this token belongs to
Basic details of your organization. Doubles as a “whoami” for the token.
{
"object": "organization",
"id": "o_1a…",
"name": "Acme",
"slug": "acme"
}A read-only HTTP API over your organization’s team graph — teams, their mandates, the people on them and their roles, and the dependencies between teams. It exposes only what a member already sees inside Kioo.
Base URL
https://api.kioo.app/v1Authentication
Send your key as a bearer token. Create one in Kioo under Settings → Integration.curl https://api.kioo.app/v1/teams \ -H "Authorization: Bearer kioo_…"
The full machine-readable spec lives at /openapi.yaml.
Every request is scoped to your organization by the key. The API is read-only (GET only) and rate-limited to roughly 600 requests per minute per key.
IDs are opaque strings and timestamps are ISO-8601 UTC. A single resource carries an object field; lists are wrapped in a cursor envelope:
{ "data": [ … ], "next_cursor": null }Errors return a consistent shape with a real HTTP status — 401 (missing / invalid / expired key), 404 (no such resource in your organization), 429 (rate limited; see the Retry-After header):
{
"error": {
"type": "invalid_token",
"message": "Missing, invalid, expired, or revoked API token."
}
}/organizationBasic details of your organization. Doubles as a “whoami” for the token.
{
"object": "organization",
"id": "o_1a…",
"name": "Acme",
"slug": "acme"
}/org-unitsEvery org unit, each with its parent and the layer it sits at.
{
"data": [
{ "object": "org_unit", "id": "ou_03…", "name": "Consumer",
"parent_id": null,
"type": { "id": "out_1…", "name": "Division" } }
]
}/org-unit-typese.g. Division › Value Stream › Cluster.
{
"data": [
{ "object": "org_unit_type", "id": "out_1…", "name": "Division", "level": 0 }
]
}/team-typesThe team types available in your organization.
{
"data": [
{ "object": "team_type", "id": "tt_11…", "name": "Product team", "color": "#4f8cff" }
]
}/teamsA light summary per team — the catalogue. Filter with ?org_unit_id=.
{
"data": [
{ "object": "team", "id": "t_9f2a…", "name": "Payments Platform",
"type": { "id": "tt_11…", "name": "Product team" },
"org_unit": { "id": "ou_03…", "name": "Consumer" },
"member_count": 7 }
],
"next_cursor": null
}/teams/{teamId}The team’s profile (purpose, scope, …), the people on it with their roles, its links, and the dependencies touching it.
{
"object": "team",
"id": "t_9f2a…",
"name": "Payments Platform",
"type": { "id": "tt_11…", "name": "Product team" },
"org_unit": { "id": "ou_03…", "name": "Consumer" },
"profile": {
"purpose": "Own the shared payments rails…",
"scope": "All card and account-to-account flows…",
"work_style": "mix"
},
"members": [
{ "id": "u_5c…", "name": "A. Example",
"email": "a.example@…", "team_role": "admin",
"roles": [{ "id": "r_2…", "name": "Tech Lead" }] }
],
"dependencies": [
{ "counterpart_team": { "id": "t_04b…", "name": "Identity" },
"direction": "we_depend_on_them", "modes": ["x_as_a_service"] }
]
}/teams/{teamId}/membersName, email, team role (admin / coach / member) and functional roles.
{
"data": [
{ "id": "u_5c…", "name": "A. Example",
"email": "a.example@…", "team_role": "admin",
"roles": [{ "id": "r_2…", "name": "Tech Lead" }] }
]
}/peopleThe full member directory.
{
"data": [
{ "object": "person", "id": "u_5c…", "name": "A. Example", "email": "a.example@…" }
],
"next_cursor": null
}/people/{personId}Their memberships across the org, with roles on each team.
{
"object": "person",
"id": "u_5c…",
"name": "A. Example",
"email": "a.example@…",
"memberships": [
{ "team": { "id": "t_9f2a…", "name": "Payments Platform" },
"team_role": "admin",
"roles": [{ "id": "r_2…", "name": "Tech Lead" }] }
]
}/rolese.g. Tech Lead, Product Owner. Referenced by a person’s roles.
{
"data": [
{ "object": "role", "id": "r_2…", "name": "Tech Lead", "description": null }
]
}/dependenciesEvery dependency between teams, in absolute terms.
{
"object": "dependency",
"id": "dep_7a…",
"team_a": { "id": "t_9f2a…", "name": "Payments Platform" },
"team_b": { "id": "t_04b…", "name": "Identity" },
"direction": "a_depends_on_b",
"a_modes": ["x_as_a_service"]
}/teams/{teamId}/dependenciesThe edges touching a single team, framed relative to it.
{
"data": [
{ "object": "dependency", "id": "dep_7a…",
"counterpart_team": { "id": "t_04b…", "name": "Identity" },
"direction": "we_depend_on_them",
"modes": ["x_as_a_service"] }
]
}