Run a view as a board
const url = 'https://api.pealboard.com/v1/views/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/board';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.pealboard.com/v1/views/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/board \ --header 'Authorization: Bearer <token>'The view’s issues arranged into columns by its groupBy: a project single-select field’s options in the order the project shows them, a label prefix, assignees, milestones, or state. Every board has a final column for issues with no value, because the work nobody has triaged is the work a board exists to surface.
Each column carries its own count and its own nextCursor. To page one column, send column naming it together with cursor; the other columns then come back empty, because a client paging one column is not redrawing the board.
A view whose layout is not board can still be run as one, provided it has a groupBy.
Access. Requires the viewer role or above (viewer, member, admin, owner). A board is a way of arranging issues the member may already read. API-key scope: issues:read.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”From GET /v1/views.
From GET /v1/views.
Query Parameters
Section titled “Query Parameters”Page only this column. Its id comes from a previous board.
Page only this column. Its id comes from a previous board.
That column’s nextCursor from the previous page.
That column’s nextCursor from the previous page.
Cards per column. Defaults to 20.
Cards per column. Defaults to 20.
Responses
Section titled “Responses”The board.
object
A UUID this API issued.
object
For a view saved before any project existed. Resolved when the board is run.
A UUID this API issued.
object
object
object
object
object
A UUID this API issued.
What every field value is keyed by. Survives a rename.
GitHub’s ProjectV2FieldType: TEXT, SINGLE_SELECT, NUMBER, DATE, ITERATION, and the rest.
In the order the project shows them. Null unless the field is a single select.
object
True when the field is an organization issue field linked into this project.
object
Stable within the board: an option id, a label name, a login, a milestone id, or a state.
What the column is headed.
How many issues are in the column, which is more than the page returned.
object
A UUID this API issued.
GitHub’s own word for whether the issue is open or closed.
Why the issue is in this state. Null while it is open. duplicate is what makes a portal show a request as Merged.
object
A UUID this API issued.
object
GitHub’s numeric user id.
User, Bot or Organization.
object
GitHub’s numeric user id.
User, Bot or Organization.
object
object
A UUID this API issued.
A UUID this API issued.
The organization issue type, when the organization uses them.
object
object
object
Pass this to the project item routes.
A UUID this API issued.
Keyed by the field’s node id, which is what GitHub identifies it by.
object
object
object
object
object
object
object
Empty for an issue no portal knows about, which is most of them.
A portal request that points at this issue. One issue maps to at most one request per portal.
object
A UUID this API issued.
A UUID this API issued.
Lowercase letters, digits and hyphens.
The portal-local request number.
The issue on GitHub.
When Pealboard last read this issue from GitHub.
Pass back as cursor with column naming this column to page it.
Example
{ "groupBy": { "kind": "project_field" }, "columns": [ { "cards": [ { "id": "8f1c2b3e-0a4d-4e6f-9c11-2d3e4f5a6b7c", "nodeId": "I_kwDOAbc123", "number": 412, "title": "Board columns lose their order after a drag", "body": "Dragging a card to the last column reorders every other column.", "state": "open", "stateReason": null, "repository": { "id": "1b2c3d4e-5f60-4718-8293-a4b5c6d7e8f9", "nodeId": "R_kgDOAbc123", "fullName": "mersoft-corp/pealboard-api", "ownerLogin": "mersoft-corp", "name": "pealboard-api", "private": false }, "author": { "id": 4891, "login": "jdoe", "avatarUrl": null, "type": "User" }, "assignees": [ { "id": 5120, "login": "asmith", "avatarUrl": null, "type": "User" } ], "labels": [ { "nodeId": "LA_kwDOAbc", "name": "bug", "color": "d73a4a" } ], "milestone": null, "issueType": null, "subIssues": null, "projectItems": [], "requests": [], "commentsCount": 3, "locked": false, "htmlUrl": "https://github.com/mersoft-corp/pealboard-api/issues/412", "createdAt": "2026-09-01T09:14:00.000Z", "updatedAt": "2026-09-08T16:02:11.000Z", "closedAt": null, "syncedAt": "2026-09-08T16:02:14.000Z" } ] } ]}No valid credentials.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}Authenticated, but not permitted.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}No such resource, or it is not visible to you.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}The request conflicts with the current state.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}The request did not match the expected shape.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}Rate limited. Retry after the interval in the header.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}GitHub or another dependency refused or did not answer. Nothing in the workspace changed.
object
object
A stable identifier for the kind of failure. Safe to branch on.
What went wrong, written for a person.
Structured particulars, when there are any.
object
What to do about it, when there is something to do.
Quote this when asking about a specific failure.
Examplegenerated
{ "error": { "code": "example", "message": "example", "detail": { "additionalProperty": "example" }, "remedy": "example", "requestId": "example" }}