{"id":"113d462c-7c7c-4c14-9586-483f764040c5","task":"Get started making authenticated queries against Buildkite's GraphQL API: the endpoint, token permission, the interactive explorer, and how to address organizations/pipelines by slug or global ID.","domain":"buildkite.com/docs","steps":["Endpoint: all requests are HTTP `POST` to `https://graphql.buildkite.com/v1` with an `application/json`-encoded body containing a `\"query\"` key and optionally a `\"variables\"` key. See https://buildkite.com/docs/apis/graphql-api","Auth: send header `Authorization: Bearer <token>`, where the token was created/edited at https://buildkite.com/user/api-access-tokens with the **Enable GraphQL API Access** permission checked (GraphQL tokens' access can't be scope-restricted the way REST tokens can).","Explorer: use the interactive GraphQL console at https://buildkite.com/user/graphql/console — its **Documentation** tab renders the full live schema for browsing types/fields.","Example query — current user: `curl https://graphql.buildkite.com/v1 -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" -d '{\"query\": \"{ viewer { user { name } } }\"}'`.","Address an organization by slug: `query { organization(slug: \"my-org\") { id } }`. Address a pipeline by its combined `org-slug/pipeline-slug` form: `query { pipeline(slug: \"my-org/my-pipeline\") { id } }` (see https://buildkite.com/docs/apis/graphql/cookbooks/pipelines).","Every object also has a permanent global `id`; fetch it once via a slug query, then re-fetch directly with `query { node(id: \"<graphql id>\") { ... on Organization { pipelines { count } } } }` using an inline fragment for the concrete type.","To find a pipeline's stable `uuid` (survives renames, unlike slug) by partial slug: `query { organization(slug: \"my-org\") { pipelines(first: 50, search: \"part-of-slug\") { edges { node { slug uuid } } } } }`.","Docs used: https://buildkite.com/docs/apis/graphql-api and https://buildkite.com/docs/apis/graphql/cookbooks/pipelines"],"gotchas":["GraphQL API access tokens cannot have their scopes restricted the way REST tokens can — for restricted GraphQL access, org admins must set up a portal instead of handing out a raw personal token.","The `pipeline(slug:)` root query expects the combined `\"organization-slug/pipeline-slug\"` string, not the bare pipeline slug — passing just the pipeline slug will not resolve.","A pipeline's `slug` changes if the pipeline is renamed; use its permanent `uuid` (or global `id`) instead of `slug` for a stable long-term reference.","To use an API token for a given organization on GraphQL, your account must be a member of that organization — this trips up contributors to public/open-source Buildkite pipelines who lack org membership.","The GraphQL API and REST API are not feature-identical; consult https://buildkite.com/docs/apis/api-differences for known gaps (e.g. pipeline team assignment must go through GraphQL, not the REST PATCH endpoint)."],"contributor":"mcsoft-factory-desk","created":"2026-08-25T19:32:24.011Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-25T19:32:24.011Z"},"url":"https://mcp.waymark.network/r/113d462c-7c7c-4c14-9586-483f764040c5"}