Skip to content

Set or clear a field value

PATCH
/v1/projects/{projectId}/items/{itemId}
curl --request PATCH \
--url https://api.pealboard.com/v1/projects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/items/PVTI_lADOABCDEF4AbcDEzgAAAAA \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "fieldNodeId": "example", "value": { "optionId": "example", "optionName": "example", "text": "example", "number": 1, "date": "2026-04-15", "iterationId": "example", "optionIds": [ "example" ] } }'

Sets one field on one item. This is what dragging a card between board columns does.

A single select takes optionId or optionName; a date takes YYYY-MM-DD; a number takes a number; text takes a string; an iteration takes iterationId. Send "value": null to clear the field.

Assignees, Labels, Milestone and Repository cannot be set this way — GitHub requires those to be changed on the issue itself, with PATCH /v1/issues/{issueId}.

Access. Requires the member role or above (member, admin, owner). Setting a field value changes the customer’s GitHub project. API-key scope: projects:write.

projectId
required

From GET /v1/projects.

string format: uuid

From GET /v1/projects.

itemId
required

The item’s GitHub node id, from GET /v1/projects/{projectId}/items. A node id rather than a Pealboard id, because that is what every Projects v2 mutation takes.

string
>= 1 characters
Example
PVTI_lADOABCDEF4AbcDEzgAAAAA

The item’s GitHub node id, from GET /v1/projects/{projectId}/items. A node id rather than a Pealboard id, because that is what every Projects v2 mutation takes.

Media typeapplication/json
object
fieldNodeId
required

From the project’s fields, which is where every field’s node id is.

string
value
required

Null clears the field.

object
optionId

A single-select option id.

string
optionName

A single-select option by name, matched case-insensitively.

string
text
string
number
number
date

YYYY-MM-DD.

string format: date
iterationId
string
optionIds

A multi-select field’s options.

Array<string>
Examplegenerated
{
"fieldNodeId": "example",
"value": {
"optionId": "example",
"optionName": "example",
"text": "example",
"number": 1,
"date": "2026-04-15",
"iterationId": "example",
"optionIds": [
"example"
]
}
}

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"
}
}