Change a project note
curl --request PATCH \
--url https://platform.jobbit.uk/v1/projects/{project_id}/notes/{note_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"content": "Warm, plain, no jargon. Say 'treatment', not 'intervention'. Use 'we'."
}
EOFimport requests
url = "https://platform.jobbit.uk/v1/projects/{project_id}/notes/{note_id}"
payload = { "content": "Warm, plain, no jargon. Say 'treatment', not 'intervention'. Use 'we'." }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
content: 'Warm, plain, no jargon. Say \'treatment\', not \'intervention\'. Use \'we\'.'
})
};
fetch('https://platform.jobbit.uk/v1/projects/{project_id}/notes/{note_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://platform.jobbit.uk/v1/projects/{project_id}/notes/{note_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'content' => 'Warm, plain, no jargon. Say \'treatment\', not \'intervention\'. Use \'we\'.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://platform.jobbit.uk/v1/projects/{project_id}/notes/{note_id}"
payload := strings.NewReader("{\n \"content\": \"Warm, plain, no jargon. Say 'treatment', not 'intervention'. Use 'we'.\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://platform.jobbit.uk/v1/projects/{project_id}/notes/{note_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"content\": \"Warm, plain, no jargon. Say 'treatment', not 'intervention'. Use 'we'.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.jobbit.uk/v1/projects/{project_id}/notes/{note_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"content\": \"Warm, plain, no jargon. Say 'treatment', not 'intervention'. Use 'we'.\"\n}"
response = http.request(request)
puts response.read_body{
"id": "a3c7e920-5d14-4f86-b1a0-9e2d64f07c58",
"project_id": "e57b2a93-0d6c-4f18-9a41-83c1d7e0b2f4",
"task_id": null,
"title": "Tone of voice",
"content": "Warm, plain, no jargon. Say 'treatment', not 'intervention'. Use 'we'.",
"created_by": "7b0e2c4a-1d3f-4c8e-9a52-6f1d0e8b3a77",
"author": null,
"updated_by": null,
"editor": null,
"created_at": "2026-10-13T10:05:00",
"updated_at": null
}{
"error": {
"code": "invalid_key",
"message": "the API key is missing or invalid",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "insufficient_scope",
"message": "this key does not have the deploy:write permission",
"details": {
"required": "deploy:write"
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "not_found",
"message": "no such project or item",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "invalid_request",
"message": "the request is not valid",
"details": [
{
"location": [
"body",
"name"
],
"message": "String should match pattern '^[a-z0-9][a-z0-9-]*$'",
"type": "string_pattern_mismatch"
}
],
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "rate_limited",
"message": "too many read requests, retry in 4 s",
"details": {
"group": "read",
"limit": 120,
"window_seconds": 60
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}Change a project note
Changes a note’s title or text.
Requires the projects:write permission.
PATCH
/
v1
/
projects
/
{project_id}
/
notes
/
{note_id}
Change a project note
curl --request PATCH \
--url https://platform.jobbit.uk/v1/projects/{project_id}/notes/{note_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"content": "Warm, plain, no jargon. Say 'treatment', not 'intervention'. Use 'we'."
}
EOFimport requests
url = "https://platform.jobbit.uk/v1/projects/{project_id}/notes/{note_id}"
payload = { "content": "Warm, plain, no jargon. Say 'treatment', not 'intervention'. Use 'we'." }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
content: 'Warm, plain, no jargon. Say \'treatment\', not \'intervention\'. Use \'we\'.'
})
};
fetch('https://platform.jobbit.uk/v1/projects/{project_id}/notes/{note_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://platform.jobbit.uk/v1/projects/{project_id}/notes/{note_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'content' => 'Warm, plain, no jargon. Say \'treatment\', not \'intervention\'. Use \'we\'.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://platform.jobbit.uk/v1/projects/{project_id}/notes/{note_id}"
payload := strings.NewReader("{\n \"content\": \"Warm, plain, no jargon. Say 'treatment', not 'intervention'. Use 'we'.\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://platform.jobbit.uk/v1/projects/{project_id}/notes/{note_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"content\": \"Warm, plain, no jargon. Say 'treatment', not 'intervention'. Use 'we'.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.jobbit.uk/v1/projects/{project_id}/notes/{note_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"content\": \"Warm, plain, no jargon. Say 'treatment', not 'intervention'. Use 'we'.\"\n}"
response = http.request(request)
puts response.read_body{
"id": "a3c7e920-5d14-4f86-b1a0-9e2d64f07c58",
"project_id": "e57b2a93-0d6c-4f18-9a41-83c1d7e0b2f4",
"task_id": null,
"title": "Tone of voice",
"content": "Warm, plain, no jargon. Say 'treatment', not 'intervention'. Use 'we'.",
"created_by": "7b0e2c4a-1d3f-4c8e-9a52-6f1d0e8b3a77",
"author": null,
"updated_by": null,
"editor": null,
"created_at": "2026-10-13T10:05:00",
"updated_at": null
}{
"error": {
"code": "invalid_key",
"message": "the API key is missing or invalid",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "insufficient_scope",
"message": "this key does not have the deploy:write permission",
"details": {
"required": "deploy:write"
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "not_found",
"message": "no such project or item",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "invalid_request",
"message": "the request is not valid",
"details": [
{
"location": [
"body",
"name"
],
"message": "String should match pattern '^[a-z0-9][a-z0-9-]*$'",
"type": "string_pattern_mismatch"
}
],
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "rate_limited",
"message": "too many read requests, retry in 4 s",
"details": {
"group": "read",
"limit": 120,
"window_seconds": 60
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}Authorizations
An API key from Settings → API keys, sent as Authorization: Bearer jb_live_…
Body
application/json
Response
The note.
The note id.
The project.
The title.
The text.
The task it came from.
Who wrote it.
Show child attributes
Show child attributes
Who changed it last.
Show child attributes
Show child attributes
When it was written.
When it last changed.
⌘I