pixee api
SkillSecuritySend authenticated requests to any Pixee REST API endpoint.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the pixee api skill
What this skill tells your AI
The instructions your AI receives, as published by pixee/pixee-cli in skills/pixee-api/SKILL.md and read by ahel’s review.
PREREQUISITE: Read
../pixee-shared/SKILL.mdfor global flags, exit codes, and error handling. Those conventions apply to every command in this skill. See../pixee-auth/SKILL.mdif authentication needs to be configured.
The escape-hatch subcommand. pixee api sends authenticated HTTP requests to any Pixee REST API
endpoint, modeled on gh api. Use it when a dedicated subcommand does not yet exist, or when an
agent needs to compose multi-step operations directly against the API.
HAL discovery
The Pixee API is a HAL (Hypertext Application Language) API: every response contains _links that
name the related resources. Start at /api/v1 and follow _links to reach every other endpoint.
Do not hardcode paths beyond the root.
# Inspect the root to find the available resources
pixee api /api/v1
# Follow a link — here, the "repositories" link on the root
pixee api /api/v1/repositories --paginate
# Each resource has its own _links; follow them to related resources
pixee api /api/v1/repositories/<id>
Conventions
pixee api closely mirrors gh api:
- Default method is
GET.pixee apiswitches toPOSTautomatically when any-f/-Ffield is supplied. Override explicitly with--method <VERB>. -f key=valueadds a raw string field.-F key=valueadds a typed field, convertingtrue/falseto booleans and numeric strings to numbers.--input <file>reads a pre-constructed JSON body from a file. Use--input -to read from stdin.- Output is raw JSON.
pixeedoes not embed a jq implementation; pipe tojqexternally for filtering or transformation.
Pagination
By default, paginated endpoints return only the first page. Add --paginate to let pixee walk
the collection automatically:
pixee api /api/v1/repositories --paginate
With --paginate, pixee follows _links.next until it is absent, merges each page's
_embedded.items array, and emits a single flat JSON array. The HAL envelope (_links, page,
total) is stripped from the output.
This is pagination-strategy-agnostic: the CLI does not construct page-number query parameters
itself, so if the API migrates to a different strategy the same --paginate flag continues to
work.
Non-JSON resources
A handful of endpoints serve a resource only as markdown rather than JSON — for example, a triage
result's report and article links from pixee-finding. pixee api negotiates this
automatically:
- Without
--json/--output json, it sends a JSON-preferred-but-lenientAcceptheader. A JSON response still renders as the usual flattenedkey\tvaluetext; a non-JSON response prints as the raw body (e.g. the markdown report, unrendered) instead of failing. - With
--json/--output json, it asks for JSON only and stays strict: a resource that can't comply returns406 Not Acceptablerather than silently handing a non-JSON body tojqas if it were parseable. That 406 is expected behavior for an explicit JSON request against a markdown-only resource, not a sign of a broken endpoint.
There is no -H/--header flag to set an arbitrary Accept yourself — the negotiation above is
the whole mechanism. If you need JSON specifically from a resource and get a 406, that resource
does not offer a JSON representation; drop --json to read it instead.
Examples
# POST a workflow with typed fields (auto-switches to POST because fields are present)
pixee api /api/v1/repositories/<id>/workflows \
-f event=new-scan \
-F branch=main \
-f action=none
# Or submit a pre-constructed body
pixee api /api/v1/repositories/<id>/workflows --input workflow.json
# Filter a paginated response externally with jq
pixee api /api/v1/repositories --paginate | jq '.[] | .full_name'
Best practices
- Always use
--paginateto collect a full collection; do not hand-rollpage-numberquery parameters. - Discover endpoints by following
_linksfrom/api/v1; do not inject the OpenAPI specification into agent context. - Prefer dedicated subcommands (
pixee repo list,pixee workflow list) when they exist — they encode best practices on top ofpixee api. Usepixee apias the escape hatch for operations that do not yet have a subcommand. - A
406 Not Acceptablefrompixee api --jsonmeans the resource only serves non-JSON content — see Non-JSON resources above. Drop--jsonto read it instead of retrying with other flags; there is no header override to reach for.
Signals
- GitHub stars
- 31
- Forks
- 12
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
pixee-api- Source
- github.com/pixee/pixee-cli