Create an issue
const url = 'https://api.pealboard.com/v1/issues';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"repositoryId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","title":"example","body":"example","labels":["example"],"assignees":["example"],"milestoneId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","issueType":"example","project":{"projectId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","fieldValues":{"additionalProperty":{"optionId":"example","optionName":"example","text":"example","number":1,"date":"2026-04-15","iterationId":"example","optionIds":["example"]}}}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.pealboard.com/v1/issues \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "repositoryId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "title": "example", "body": "example", "labels": [ "example" ], "assignees": [ "example" ], "milestoneId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "issueType": "example", "project": { "projectId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "fieldValues": { "additionalProperty": { "optionId": "example", "optionName": "example", "text": "example", "number": 1, "date": "2026-04-15", "iterationId": "example", "optionIds": [ "example" ] } } } }'Creates the issue in GitHub, then caches it. Labels that the repository does not have are created first, because GitHub silently drops an unknown label rather than refusing — which would leave an issue missing the label a workflow depends on.
Send Idempotency-Key to make a retry return the first answer rather than creating a second issue.
Access. Requires the member role or above (member, admin, owner). Creating an issue writes to the customer’s GitHub repository under their installation. API-key scope: issues:write.
Authorizations
Section titled “Authorizations”Request Body
Section titled “Request Body”object
From GET /v1/github/repositories.
Created in the repository if missing.
GitHub logins. GitHub drops anybody without access to the repository.
A UUID this API issued.
An organization issue type by name, when the organization uses them.
object
A UUID this API issued.
Keyed by field node id. Set after the issue joins the project.
object
Send exactly one key. Send null in place of the whole object to clear the field. Assignees, Labels, Milestone and Repository cannot be set this way — GitHub requires those to be changed on the issue itself.
object
A single-select option id.
A single-select option by name, matched case-insensitively.
YYYY-MM-DD.
A multi-select field’s options.
Examplegenerated
{ "repositoryId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "title": "example", "body": "example", "labels": [ "example" ], "assignees": [ "example" ], "milestoneId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "issueType": "example", "project": { "projectId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "fieldValues": { "additionalProperty": { "optionId": "example", "optionName": "example", "text": "example", "number": 1, "date": "2026-04-15", "iterationId": "example", "optionIds": [ "example" ] } } }}Responses
Section titled “Responses”The issue.
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.
Example
{ "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" }}