API 목록으로
🛠️ 개발·협업무료

Notion API

Notion · Notion API

인증 방식

🔑 API Key

요금

무료 (Notion 플랜에 포함)

Base URL

api.notion.com/v1

태그

Notion, CMS

서비스 소개

Notion API를 사용하면 Notion 데이터베이스를 헤드리스 CMS로 활용할 수 있습니다. 페이지 생성·수정, 데이터베이스 쿼리, 블록 읽기 등을 지원합니다. 개발 팀이 Notion에서 콘텐츠를 관리하고 웹사이트에 자동 반영하거나, Notion을 간이 백엔드로 사용하는 데 적합합니다.

🚀 시작하기

  1. 1

    인테그레이션 생성

    notion.so/my-integrations → New integration → 내부 인테그레이션 → Internal Integration Token 복사

  2. 2

    DB에 인테그레이션 연결

    Notion 데이터베이스 → ··· → Connections → 인테그레이션 추가

  3. 3

    Database ID 확인

    DB 페이지 URL에서 ID 추출: notion.so/[workspace]/[DATABASE_ID]?v=...

  4. 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] } },
  },
})