메인 콘텐츠로 건너뛰기
Tiro에 연결하는 방법은 두 가지예요. 백엔드에서 프로그래밍 방식으로 접근하는 REST API, 그리고 Claude나 ChatGPT 같은 AI 클라이언트를 위한 MCP Server예요.

API 키 발급

Tiro Platform API Keys 페이지로 이동해 키를 생성하세요.
1

로그인

2

워크스페이스 선택

사이드바의 워크스페이스 전환기에서 키가 접근할 워크스페이스를 고르세요. 키는 그 워크스페이스에 한정돼요.
3

키 생성

Create New API Key를 클릭하세요. 점(.)을 포함한 전체 키를 복사하세요 — abc123.xR7mK9pL2qW4....
4

저장

환경 변수로 저장하세요. 생성 대화 상자를 닫으면 다시 볼 수 없어요.
API 키는 환경 변수에 저장하세요. 절대 하드코딩하거나 커밋하지 마세요.
워크스페이스 도입 이전의 개인 API 키를 쓰고 있나요? 그 키는 지원이 중단됐고 2026년 6월 30일부로 작동을 멈춰요. 워크스페이스 키로 마이그레이션하세요.

첫 요청 보내기

노트를 가져와 볼게요.
curl -H "Authorization: Bearer $TIRO_API_KEY" \
     -H "Content-Type: application/json" \
     https://api.tiro.ooo/v1/external/notes
const response = await fetch("https://api.tiro.ooo/v1/external/notes", {
  headers: {
    "Authorization": `Bearer ${process.env.TIRO_API_KEY}`,
    "Content-Type": "application/json",
  },
});

const data = await response.json();
console.log(`Found ${data.content.length} notes`);
import os
import requests

headers = {
    'Authorization': f'Bearer {os.getenv("TIRO_API_KEY")}',
    'Content-Type': 'application/json'
}

response = requests.get('https://api.tiro.ooo/v1/external/notes', headers=headers)
data = response.json()
print(f"Found {len(data['content'])} notes")
package main

import (
    "encoding/json"
    "fmt"
    "net/http"
    "os"
)

func main() {
    client := &http.Client{}
    req, _ := http.NewRequest("GET", "https://api.tiro.ooo/v1/external/notes", nil)
    
    apiKey := os.Getenv("TIRO_API_KEY")
    req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", apiKey))
    req.Header.Set("Content-Type", "application/json")
    
    resp, _ := client.Do(req)
    defer resp.Body.Close()
    
    var data map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&data)
    fmt.Printf("Found %v notes\n", len(data["content"].([]interface{})))
}
@RestController
class NotesController {
    
    @Value("\${tiro.api.key}")
    private lateinit var apiKey: String
    
    private val restTemplate = RestTemplate()
    
    @GetMapping("/my-notes")
    fun getMyNotes(): ResponseEntity<Map<String, Any>> {
        val headers = HttpHeaders()
        headers.set("Authorization", "Bearer $apiKey")
        headers.contentType = MediaType.APPLICATION_JSON
        
        val entity = HttpEntity<String>(headers)
        
        val response = restTemplate.exchange(
            "https://api.tiro.ooo/v1/external/notes",
            HttpMethod.GET,
            entity,
            object : ParameterizedTypeReference<Map<String, Any>>() {}
        )
        
        val data = response.body!!
        println("Found ${(data["content"] as List<*>).size} notes")
        
        return ResponseEntity.ok(data)
    }
}
Tiro는 노트 목록을 페이지네이션된 형태로 반환해요. 각 객체에는 제목, 생성 날짜, 처리 상태, 그리고 전사·요약·문서를 가져올 때 사용하는 guid가 담겨 있어요. 이제 목록을 얻었으니 노트 데이터 모델을 읽고 각 guid로 무엇을 할 수 있는지 알아보세요 — 전사, 요약, 문서, 폴더까지요.