인증 방식
🔑 API Key
요금
무료 (Notion 플랜에 포함)
Base URL
api.notion.com/v1
태그
Notion, CMS
서비스 소개
Notion API를 사용하면 Notion 데이터베이스를 헤드리스 CMS로 활용할 수 있습니다. 페이지 생성·수정, 데이터베이스 쿼리, 블록 읽기 등을 지원합니다. 개발 팀이 Notion에서 콘텐츠를 관리하고 웹사이트에 자동 반영하거나, Notion을 간이 백엔드로 사용하는 데 적합합니다.
🚀 시작하기
- 1
인테그레이션 생성
notion.so/my-integrations → New integration → 내부 인테그레이션 → Internal Integration Token 복사
- 2
DB에 인테그레이션 연결
Notion 데이터베이스 → ··· → Connections → 인테그레이션 추가
- 3
Database ID 확인
DB 페이지 URL에서 ID 추출: notion.so/[workspace]/[DATABASE_ID]?v=...
- 4
SDK 설치
npm install @notionhq/client
📋 응답 예시
{
"results": [{
"id": "page-id",
"properties": {
"Name": { "title": [{ "text": { "content": "게시글 제목" } }] },
"Status": { "select": { "name": "Published" } },
"Date": { "date": { "start": "2024-01-15" } }
}
}]
}💡 코드 예제
JavaScriptNode.js (DB 쿼리)
import { Client } from '@notionhq/client'
const notion = new Client({ auth: process.env.NOTION_TOKEN })
// DB 쿼리 (Published 상태 게시글)
const response = await notion.databases.query({
database_id: process.env.NOTION_DATABASE_ID!,
filter: {
property: 'Status',
select: { equals: 'Published' },
},
sorts: [{ property: 'Date', direction: 'descending' }],
})
const posts = response.results.map(page => {
const props = (page as any).properties
return {
id: page.id,
title: props.Name.title[0]?.text.content ?? '',
date: props.Date.date?.start ?? '',
slug: props.Slug?.rich_text[0]?.text.content ?? '',
}
})
// 새 페이지 생성
await notion.pages.create({
parent: { database_id: process.env.NOTION_DATABASE_ID! },
properties: {
Name: { title: [{ text: { content: '새 게시글' } }] },
Status: { select: { name: 'Draft' } },
Date: { date: { start: new Date().toISOString().split('T')[0] } },
},
})