메인 콘텐츠로 건너뛰기
PATCH
/
v1
/
external
/
notes
/
{noteGuid}
Update Note
curl --request PATCH \
  --url https://api.tiro.ooo/v1/external/notes/{noteGuid} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "title": "Q3 Planning Sync"
}
'
import requests

url = "https://api.tiro.ooo/v1/external/notes/{noteGuid}"

payload = { "title": "Q3 Planning Sync" }
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({title: 'Q3 Planning Sync'})
};

fetch('https://api.tiro.ooo/v1/external/notes/{noteGuid}', 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://api.tiro.ooo/v1/external/notes/{noteGuid}",
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([
'title' => 'Q3 Planning Sync'
]),
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://api.tiro.ooo/v1/external/notes/{noteGuid}"

payload := strings.NewReader("{\n \"title\": \"Q3 Planning Sync\"\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://api.tiro.ooo/v1/external/notes/{noteGuid}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Q3 Planning Sync\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.tiro.ooo/v1/external/notes/{noteGuid}")

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 \"title\": \"Q3 Planning Sync\"\n}"

response = http.request(request)
puts response.read_body
{
  "guid": "note-abc123-def456",
  "title": "Q3 Planning Sync",
  "createdAt": "2024-01-15T10:30:00Z",
  "updatedAt": "2024-01-15T12:05:00Z",
  "sourceType": "live-voice",
  "webUrl": "https://tiro.ooo/n/abc123def456"
}
{
"error": {
"code": 404018,
"errorType": "not_found",
"message": "No team found for user #217",
"detail": null
}
}
{
"error": {
"code": 404018,
"errorType": "not_found",
"message": "No team found for user #217",
"detail": null
}
}
{
"error": {
"code": 404018,
"errorType": "not_found",
"message": "No team found for user #217",
"detail": null
}
}
{
"error": {
"code": 404018,
"errorType": "not_found",
"message": "No team found for user #217",
"detail": null
}
}

인증

Authorization
string
header
필수

API key in format {id}.{secret}

경로 매개변수

noteGuid
string
필수

Note GUID

쿼리 매개변수

updateMask
string
필수

Comma-separated list of fields to update. Only title is supported today.

본문

application/json

Partial update for a note. Include only the fields named in updateMask.

title
string

New note title. Must not be blank and is limited to 100 characters.

Required string length: 1 - 100
예시:

"Q3 Planning Sync"

응답

Note updated

The top-level container for a single recording session. A Note holds its transcribed content as Paragraphs, and can be summarized into NoteSummary or rendered into a NoteDocument. See Data Model for the full structure.

guid
string
필수

Unique identifier for the note

예시:

"note-guid-123"

title
string
필수

Note title

예시:

"Meeting notes"

createdAt
string<date-time>
필수

ISO-8601 creation timestamp

예시:

"2025-07-20T10:00:00Z"

updatedAt
string<date-time>
필수

ISO-8601 last update timestamp

예시:

"2025-07-20T11:10:00Z"

sourceType
enum<string>
필수

Source type of the note:

  • live-voice: Real-time voice recording
  • recording: Uploaded audio file
  • text: Text-only note
  • video: Video recording
  • webpage: Web page content
  • offline-mode: Offline recording
  • onboarding: Onboarding sample note
사용 가능한 옵션:
onboarding,
text,
live-voice,
recording,
offline-mode,
webpage,
video
예시:

"live-voice"

recordingDurationSeconds
integer
필수

Actual recording length in seconds. Returns 0 for non-recording source types.

예시:

3600

webUrl
string<uri>
필수

Web URL to access the note

예시:

"https://tiro.ooo/n/123"

collaborators
object[]
필수

Array of collaborators with their roles

participants
object[]
필수

Array of meeting participants tagged in the note

workspaceGuid
string | null

GUID of the workspace this note belongs to. null for notes not associated with a workspace.

예시:

"ws_a1b2c3d4"

recordingStartAt
string<date-time> | null

Actual recording start timestamp. Null for non-recording source types.

예시:

"2025-07-20T10:00:10Z"

recordingEndAt
string<date-time> | null

Actual recording end timestamp. Null for non-recording source types.

예시:

"2025-07-20T11:00:10Z"

transcribeLocale
string | null

Language locale used for transcription. Null for non-recording source types.

예시:

"en_US"

translateLocale
string | null

Language locale used for translation. Null when no translation was requested.

예시:

"ko_KR"

matchedSnippets
string[] | null

Highlight snippets for the keyword that matched this note. Present only on responses to the deep-search endpoints (POST /v1/external/workspaces/{workspaceGuid}/notes/search or the deprecated POST /v1/external/notes/search); absent (null) on plain list responses.

documents
object[] | null

Note's primary documents (one-pager / custom). Present only on responses to the deep-search endpoints (POST /v1/external/workspaces/{workspaceGuid}/notes/search or the deprecated POST /v1/external/notes/search); absent (null) on plain list responses. Each item's truncated flag indicates whether the deep-search budget was exceeded.