Skip to content

Add an issue to a project

POST
/v1/projects/{projectId}/items
curl --request POST \
--url https://api.pealboard.com/v1/projects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/items \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "issueId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }'

GitHub returns the existing item when the issue is already on the project, so sending this twice adds one card and not two.

The field values a project’s built-in workflow sets on add are not invented here; they arrive with the projects_v2_item webhook or the next reconciliation.

Access. Requires the member role or above (member, admin, owner). Adding an issue to a project changes the customer’s GitHub project. API-key scope: projects:write.

projectId
required

From GET /v1/projects.

string format: uuid

From GET /v1/projects.

Media typeapplication/json
object
issueId
required

A UUID this API issued.

string format: uuid
Examplegenerated
{
"issueId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
}

The item.

Media typeapplication/json
object
itemNodeId
required
string
projectId
required

A UUID this API issued.

string format: uuid
content
required

What the card points at. Redacted is GitHub’s answer for an item in a repository the installation cannot see; its content is null and that is not an error.

object
type
required
string
Allowed values: Issue PullRequest DraftIssue Redacted
issueId
required

Set when the item is an issue in a synced repository.

string | null format: uuid
number
required
number | null
title
required
string | null
state
required

GitHub’s own word for whether the issue is open or closed.

string | null
Allowed values: open closed
repositoryFullName
required
string | null
htmlUrl
required
string | null format: uri
fieldValues
required
object
key
additional properties
One of:
object
type
required
string
Allowed values: text
text
required
string
archived
required
boolean
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
Example
{
"content": {
"type": "Issue",
"state": "open"
},
"fieldValues": {
"additionalProperty": {
"type": "text"
}
}
}

No valid credentials.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

Authenticated, but not permitted.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

No such resource, or it is not visible to you.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

The request conflicts with the current state.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

The request did not match the expected shape.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

Rate limited. Retry after the interval in the header.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
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.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}