API
Every route the forge names to you: a signed-out reader sees the ones open to anyone. The OpenAPI document, as JSON. Try it sends the request as you; paste a token to send it as that token instead.
94 operations in 20 areas
admin 2
-
POST /api/v1/first-admin
Body
code string username string email string scope string name string expiresIn integer 201 Done
default An error: { error, message }; `error` is a stable code. Refusals: `too_large` (413, the body is over the limit for a stranger's); `invalid_scope` (422, scope is not ro, rw or admin); `invalid_expiry` (422, expiresIn is not whole seconds in range); `rate_limited` (429, too many attempts from here; retry-after says when); `refused` (403, the code does not work or this forge already has an admin); `i
-
POST /api/v1/first-admin/recover
Body
code string scope string name string expiresIn integer 201 Done
default An error: { error, message }; `error` is a stable code. Refusals: `too_large` (413, the body is over the limit for a stranger's); `invalid_scope` (422, scope is not ro, rw or admin); `invalid_expiry` (422, expiresIn is not whole seconds in range); `rate_limited` (429, too many attempts from here; retry-after says when); `refused` (403, the code does not work)
apps 5
-
GET /api/v1/apps
200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/app
Parameters
owner path string required name path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/app/production/open
Parameters
owner path string required name path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/app/pulls
Parameters
owner path string required name path string required limit query integer 200 Done
Fields
items object[] default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (404: no such repository or app, or not the caller's to read); `invalid_limit` (422: limit is not a whole number from 1 to 100)
-
GET /api/v1/repos/{owner}/{name}/app/{env}/open
Parameters
owner path string required name path string required env path string required 200 Done
default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (404: no such repository or app, or not the caller's to see); `no_such_env` (422: `env` is not an environment name); `no_runtime` (422: this forge runs no apps); `unauthorized` (401: a private app and no signed-in account)
builds 4
-
GET /api/v1/repos/{owner}/{name}/builds
Parameters
owner path string required name path string required 200 Done
Fields
items object[] next_cursor null 304 Done
default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (404: no such repository, or it is not readable)
-
GET /api/v1/repos/{owner}/{name}/builds/{label}/cart
Parameters
owner path string required name path string required label path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/builds/{label}/shots
Parameters
owner path string required name path string required label path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/builds/{label}/shots/looks
Parameters
owner path string required name path string required label path string required 200 Done
default An error: { error, message }; `error` is a stable code
contract 2
-
GET /api/v1/openapi.json
308 Done
default An error: { error, message }; `error` is a stable code
-
GET /contract/openapi.json
200 Done
default An error: { error, message }; `error` is a stable code
crew 4
-
GET /api/v1/agents/{username}
Parameters
username path string required 200 Done
default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (no such agent, or not yours to see)
-
GET /api/v1/fleet/ops/{id}
Parameters
id path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/fleet/rows
Parameters
q query string sort query string 200 Done
Fields
kind string columns object[] items object[] default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (q is empty, over 500 characters, or does not parse; the reason is the message (422)); `invalid_sort` (sort is not a column of the kind (422))
-
GET /api/v1/repos/{owner}/{name}/crew
Parameters
owner path string required name path string required 200 Done
default An error: { error, message }; `error` is a stable code
feed 3
-
GET /api/v1/explore
Parameters
q query string cursor query string 200 Done
304 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400))
-
GET /api/v1/front
200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/search
Parameters
q query string kind query string limit query integer 200 Done
Fields
repos object[] issues object[] code object[] truncated object moreCode boolean codeSkipped boolean note string, only when q is blank: what to send default An error: { error, message }; `error` is a stable code. Refusals: `invalid_kind` (kind is not all, repos, issues or code (422)); `invalid_limit` (limit is not a whole number from 1 to 100 (422))
forges 9
-
GET /api/v1/family
200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/forge
200 Done
default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (404: this forge was not spawned)
-
GET /api/v1/forges/sizes
200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/forges/templates
200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/orgs/{org}
Parameters
org path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/orgs/{org}/teams
Parameters
org path string required limit query integer cursor query string 200 Done
304 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400))
-
GET /api/v1/orgs/{org}/teams/{team}/members
Parameters
org path string required team path string required limit query integer cursor query string 200 Done
304 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400))
-
GET /api/v1/plans
200 Done
default An error: { error, message }; `error` is a stable code
-
POST /api/v1/start
Body
name string description string agent string code string 201 Done
default An error: { error, message }; `error` is a stable code. Refusals: `off` (403, the owner turned the start call off); `code_needed` (403, this forge asks for an open invite link's token as `code`); `rate_limited` (429, too many starts from this source; retry-after says when); `full` (429, the forge has started its share for today); `too_large` (413, the body is over the limit for a stranger's); `inv
forks 4
-
GET /api/v1/contribute
200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/following
Parameters
owner path string required name path string required 200 Done
default An error: { error, message }; `error` is a stable code. Refusals: `not_a_fork` (404: this repository follows nothing)
-
GET /api/v1/repos/{owner}/{name}/following/proposals
Parameters
owner path string required name path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/forks
Parameters
owner path string required name path string required limit query integer cursor query string 200 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)); `invalid_limit` (limit is not a whole number from 1 to 200 (422)); `invalid_cursor` (cursor is not the next_cursor of a page before, or names a row deleted since (422))
gates 3
-
GET /api/v1/repos/{owner}/{name}/gates/{id}/log
Parameters
owner path string required name path string required id path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/queue
Parameters
owner path string required name path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/queue/gates
Parameters
owner path string required name path string required limit query integer cursor query string 200 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400))
issues 6
-
GET /api/v1/repos/{owner}/{name}/issues
Parameters
owner path string required name path string required state query enum(open, closed, all) limit query integer cursor query integer label query string author query string fields query enum(brief) 200 Done
304 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)); `invalid_limit` (limit is not a whole number from 1 to 200 (422)); `invalid_cursor` (cursor is not the next_cursor of a previous page (422)); `invalid_state` (state is not open, closed or all (422))
-
GET /api/v1/repos/{owner}/{name}/issues/{number}
Parameters
owner path string required name path string required number path integer required comments query integer 200 Done
304 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/issues/{number}/comments
Parameters
owner path string required name path string required number path integer required after query string cursor query string limit query integer 200 Done
304 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400))
-
GET /api/v1/repos/{owner}/{name}/issues/{number}/dependencies
Parameters
owner path string required name path string required number path integer required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/issues/{number}/plan
Parameters
owner path string required name path string required number path integer required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/issues/{number}/teams
Parameters
owner path string required name path string required number path integer required 200 Done
default An error: { error, message }; `error` is a stable code
labels 1
-
GET /api/v1/repos/{owner}/{name}/labels
Parameters
owner path string required name path string required limit query integer cursor query string 200 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)); `invalid_limit` (limit is not a whole number from 1 to 200 (422)); `invalid_cursor` (cursor is not the next_cursor of a page before, or names a row deleted since (422))
meta 14
-
GET /api/v1
200 Done
default An error: { error, message }; `error` is a stable code. Refusals:
-
GET /api/v1/changelog
Parameters
repo query string 200 Done
304 Done
default An error: { error, message }; `error` is a stable code. Refusals:
-
GET /api/v1/features/{slug}
Parameters
slug path string required 200 Done
default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (no such app, or one you may not read); `not_a_feature` (the app's forge.json declares no feature (422))
-
GET /api/v1/features/{slug}/feed
Parameters
slug path string required 200 Done
default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (no such app, or one you may not read); `not_a_feature` (the app's forge.json declares no feature (422))
-
GET /api/v1/health
200 Done
default An error: { error, message }; `error` is a stable code
-
POST /api/v1/heartbeat
200 Done
default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (the beat is not signed by a child of this forge)
-
GET /api/v1/here
Parameters
path query string 200 Done
default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (404: the path names no page you can read)
-
GET /api/v1/keeper
200 Done
default An error: { error, message }; `error` is a stable code. Refusals: `forbidden` (the release history is for the forge's administrators and its repository's readers)
-
GET /api/v1/map
200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/packs
200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/packs/{name}
Parameters
name path string required 200 Done
default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (404: no such pack)
-
GET /api/v1/releases
Parameters
shipped query boolean 200 Done
304 Done
default An error: { error, message }; `error` is a stable code. Refusals: `forbidden` (the release history is for the forge's administrators and its repository's readers); `invalid_shipped` (shipped is true or absent (422))
-
GET /api/v1/repos/{owner}/{name}/map
Parameters
owner path string required name path string required done query string 200 Done
304 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/version
200 Done
default An error: { error, message }; `error` is a stable code. Refusals:
milestones 2
-
GET /api/v1/repos/{owner}/{name}/milestones
Parameters
owner path string required name path string required limit query integer cursor query string 200 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400))
-
GET /api/v1/repos/{owner}/{name}/milestones/{number}
Parameters
owner path string required name path string required number path integer required 200 Done
default An error: { error, message }; `error` is a stable code
plan 5
-
GET /api/v1/repos/{owner}/{name}/iterations
Parameters
owner path string required name path string required 200 Done
Fields
forks object[] lanes object[] default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (404: no such repository, or it is not readable)
-
GET /api/v1/repos/{owner}/{name}/roadmap
Parameters
owner path string required name path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/vision
Parameters
owner path string required name path string required number query integer 200 Done
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_number` (number is not a whole number of 1 or more (422))
-
GET /api/v1/repos/{owner}/{name}/waves
Parameters
owner path string required name path string required 200 Done
Fields
items object[] next_cursor null default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (404: no such repository, or it is not readable)
-
GET /api/v1/repos/{owner}/{name}/waves/{version}
Parameters
owner path string required name path string required version path string required 200 Done
Fields
version string date string headline string highlights object[] pulls object[] default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (404: no such repository, or it is not readable, or no such wave)
pulls 7
-
GET /api/v1/repos/{owner}/{name}/pulls
Parameters
owner path string required name path string required state query enum(open, closed, all) limit query integer cursor query integer label query string author query string 200 Done
304 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)); `invalid_limit` (limit is not a whole number from 1 to 200 (422)); `invalid_cursor` (cursor is not the next_cursor of a previous page (422)); `invalid_state` (state is not open, closed or all (422))
-
GET /api/v1/repos/{owner}/{name}/pulls/{number}
Parameters
owner path string required name path string required number path integer required diff query enum(0, 1) 200 Done
Fields
check string 304 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/pulls/{number}/checks
Parameters
owner path string required name path string required number path integer required 200 Done
Fields
head string state string required boolean run object runs object[] default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/pulls/{number}/looks
Parameters
owner path string required name path string required number path integer required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/pulls/{number}/review-states
Parameters
owner path string required name path string required number path integer required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/pulls/{number}/reviews
Parameters
owner path string required name path string required number path integer required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/pulls/{number}/threads
Parameters
owner path string required name path string required number path integer required 200 Done
default An error: { error, message }; `error` is a stable code
reports 1
-
POST /api/v1/repos/{owner}/{name}/reports
Parameters
owner path string required name path string required Body
title string body string page string agent string 202 Done
default An error: { error, message }; `error` is a stable code
repos 10
-
GET /api/v1/repos
Parameters
limit query integer cursor query string 200 Done
304 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)); `invalid_limit` (limit is not a whole number from 1 to 200 (422)); `invalid_cursor` (cursor is not the next_cursor of a previous page (422))
-
GET /api/v1/repos/{owner}/{name}
Parameters
owner path string required name path string required 200 Done
default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (404: no such repository, or it is not readable by the caller)
-
GET /api/v1/repos/{owner}/{name}/branches
Parameters
owner path string required name path string required limit query integer cursor query string 200 Done
304 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)); `invalid_limit` (limit is not a whole number from 1 to 200 (422)); `invalid_cursor` (cursor is not the next_cursor of a page before (422))
-
GET /api/v1/repos/{owner}/{name}/commits
Parameters
owner path string required name path string required ref query string limit query integer 200 Done
304 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/commits/{oid}
Parameters
owner path string required name path string required oid path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/commits/{oid}/check
Parameters
owner path string required name path string required oid path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/contents
Parameters
owner path string required name path string required path query string ref query string 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/contents/{path}
Parameters
owner path string required name path string required path path string required ref query string 200 Done
default An error: { error, message }; `error` is a stable code
-
POST /api/v1/repos/{owner}/{name}/origin-hook
Parameters
owner path string required name path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/tags
Parameters
owner path string required name path string required limit query integer cursor query string 200 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400))
runs 6
-
GET /api/v1/repos/{owner}/{name}/decisions
Parameters
owner path string required name path string required kind query string limit query integer cursor query string 200 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400))
-
GET /api/v1/repos/{owner}/{name}/events
Parameters
owner path string required name path string required kind query string limit query integer cursor query string 200 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400))
-
GET /api/v1/repos/{owner}/{name}/flow
Parameters
owner path string required name path string required 200 Done
default An error: { error, message }; `error` is a stable code. Refusals: `not_found` (no such repository, or it is not readable by the caller)
-
GET /api/v1/repos/{owner}/{name}/runs
Parameters
owner path string required name path string required kind query string state query enum(open, closed, all) env query string limit query integer cursor query string 200 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400))
-
GET /api/v1/repos/{owner}/{name}/runs/{id}
Parameters
owner path string required name path string required id path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/repos/{owner}/{name}/runs/{id}/log
Parameters
owner path string required name path string required id path string required follow query string 200 Done
default An error: { error, message }; `error` is a stable code
tokens 2
-
POST /api/v1/sessions
Body
username string password string 201 Done
default An error: { error, message }; `error` is a stable code. Refusals: `unauthorized` (401, the username or password is wrong); `too_many_attempts` (429, past the sign-in windows; retry-after says when); `too_large` (413, the body is over the limit for a stranger's)
-
DELETE /api/v1/sessions
200 Done
default An error: { error, message }; `error` is a stable code
user 4
-
GET /api/v1/passport/health
200 Done
default An error: { error, message }; `error` is a stable code. Refusals: `unauthorized` (the passport is missing, malformed, expired, or not for this audience and scope (always 401))
-
POST /api/v1/users
Body
username string email string password string invite string note string from string turnstile_token string 201 Done
default An error: { error, message }; `error` is a stable code. Refusals: `rate_limited` (429, too many sign-ups; retry-after says when); `too_large` (413, the body is over the limit for a stranger's); `signup_closed` (403, this forge makes no new accounts (or the invite is not one)); `forbidden` (403, the name is not one this edge allows); `passkey_required` (422, this forge signs up with a passkey on th
-
GET /api/v1/users/{username}
Parameters
username path string required 200 Done
default An error: { error, message }; `error` is a stable code
-
GET /api/v1/users/{username}/repos
Parameters
username path string required limit query integer cursor query string 200 Done
400 page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)
default An error: { error, message }; `error` is a stable code. Refusals: `invalid_query` (page or offset was sent: this list pages by cursor, pass next_cursor as ?cursor= (400)); `invalid_limit` (limit is not a whole number from 1 to 200 (422)); `invalid_cursor` (cursor is not the next_cursor of a previous page (422))