Kioo API

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/v1

Authentication

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.

Conventions

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."
  }
}

Structure

GET/organization

The 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"
}
GET/org-units

The org-unit hierarchy

Every 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" } }
  ]
}
GET/org-unit-types

The named layers of the hierarchy

e.g. Division › Value Stream › Cluster.

{
  "data": [
    { "object": "org_unit_type", "id": "out_1…", "name": "Division", "level": 0 }
  ]
}
GET/team-types

Team type definitions

The team types available in your organization.

{
  "data": [
    { "object": "team_type", "id": "tt_11…", "name": "Product team", "color": "#4f8cff" }
  ]
}
GET/teams

List every team

A 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
}
GET/teams/{teamId}

One team in full

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"] }
  ]
}

People

GET/teams/{teamId}/members

The people on a team

Name, 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" }] }
  ]
}
GET/people

Everyone in the organization

The full member directory.

{
  "data": [
    { "object": "person", "id": "u_5c…", "name": "A. Example", "email": "a.example@…" }
  ],
  "next_cursor": null
}
GET/people/{personId}

One person and every team they’re on

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" }] }
  ]
}
GET/roles

Functional role definitions

e.g. Tech Lead, Product Owner. Referenced by a person’s roles.

{
  "data": [
    { "object": "role", "id": "r_2…", "name": "Tech Lead", "description": null }
  ]
}

Graph

GET/dependencies

The whole dependency graph

Every 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"]
}
GET/teams/{teamId}/dependencies

Dependencies for one team

The 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"] }
  ]
}
Kioo API · read-only · v1