## EN BREF

L’API Notion officielle permet d’automatiser et d’intégrer Notion dans vos propres applications. Créez des entrées de bases de données, lisez des pages, mettez à jour des propriétés et réagissez aux changements. Ce guide couvre les bases pour les développeurs qui débutent avec l’API Notion.

## Prérequis et accès à l’API

**1. Créer une intégration Notion :**
– Allez sur notion.so/my-integrations
– Créez une nouvelle intégration (interne ou publique)
– Récupérez votre API Key (Internal Integration Token)

**2. Connecter l’intégration à vos pages :**
Dans chaque page ou base de données que vous voulez accéder via l’API :
– Cliquez les `…` → Connexions → Ajoutez votre intégration

Sans cette étape, l’API retourne une erreur 404 même avec un token valide.

[IMAGE: notion-api-developpeurs-integration-workflow-code.jpg | Notion API — guide développeurs intégration et automatisation]

## Authentification

« `python
import requests

NOTION_TOKEN = « secret_xxxx »
headers = {
« Authorization »: f »Bearer {NOTION_TOKEN} »,
« Content-Type »: « application/json »,
« Notion-Version »: « 2022-06-28 »
}
« `

## Lire une base de données

« `python
database_id = « votre_database_id_ici »

response = requests.post(
f »https://api.notion.com/v1/databases/{database_id}/query »,
headers=headers,
json={
« filter »: {
« property »: « Statut »,
« status »: {« equals »: « En cours »}
},
« sorts »: [
{« property »: « Date », « direction »: « ascending »}
]
}
)

results = response.json()[« results »]
« `

## Créer une entrée dans une base de données

« `python
def create_task(title, project_id, assignee_id):
return requests.post(
« https://api.notion.com/v1/pages »,
headers=headers,
json={
« parent »: {« database_id »: database_id},
« properties »: {
« Titre »: {
« title »: [{« text »: {« content »: title}}]
},
« Statut »: {
« status »: {« name »: « À faire »}
},
« Projet »: {
« relation »: [{« id »: project_id}]
},
« Assigné »: {
« people »: [{« id »: assignee_id}]
}
}
}
)
« `

## Mettre à jour une propriété

« `python
def update_status(page_id, new_status):
return requests.patch(
f »https://api.notion.com/v1/pages/{page_id} »,
headers=headers,
json={
« properties »: {
« Statut »: {« status »: {« name »: new_status}}
}
}
)
« `

## Lire le contenu d’une page

« `python
def get_page_content(page_id):
# Récupérer les blocs
blocks = requests.get(
f »https://api.notion.com/v1/blocks/{page_id}/children »,
headers=headers
).json()[« results »]

# Extraire le texte des blocs
text_content = []
for block in blocks:
if block[« type »] == « paragraph »:
texts = block[« paragraph »][« rich_text »]
for t in texts:
text_content.append(t[« text »][« content »])
return  » « .join(text_content)
« `

## Limitations de l’API

– Rate limiting : 3 requêtes par seconde par intégration
– Pas de webhooks natifs en production (beta)
– Pas de recherche full-text performante via API
– Certains types de blocs ne sont pas modifiables (fichiers embarqués, certains médias)

## Bibliothèques SDK officielles

– **JavaScript/TypeScript :** `npm install @notionhq/client`
– **Python :** `pip install notion-client`

> Lire aussi : [Notion automatisation Zapier](/notion-automatisation-zapier-make-integration/) | [Notion pour développeurs](/notion-pour-developpeurs-guide-technique/)

TR

admin_af

Expert logiciels emailing

J'ai lancé 3 startups et géré des listes email de 10 000 à 250 000 abonnés. Je teste chaque outil pendant au moins 3 mois avant de donner mon avis. Pas de partenariat caché.

48 articles · 12 outils testés · 3 ans d'expérience