<aside> ❗ Astuce de Notion : Utilisez cette page comme exemple de la façon dont vous pouvez structurer votre guide de référence API et l’héberger sur Notion. La base de données Points de terminaison (endpoints) comprend également un modèle de point de terminaison pour une documentation supplémentaire.
</aside>
Ce guide de référence est votre point d’entrée pour comprendre l’API Notion.
<aside> ❗ Vous avez besoin d'un jeton d'intégration pour interagir avec l’API Notion. Vous pouvez trouver un jeton d’intégration après avoir créé une intégration sur la page des paramètres d’intégration. S’il s'agit de votre premier aperçu de l’API Notion, nous vous recommandons de commencer par le Guide de démarrage pour savoir comment créer une intégration.
</aside>
L’URL de base pour envoyer toutes les requêtes API est https://api.notion.com
. Le HTTPS est requis pour toutes les requêtes API.
L’API Notion suit les conventions RESTful lorsque cela est possible, la plupart des opérations étant effectuées via des requêtes GET
, POST
, PATCH
et DELETE
sur les ressources de page et de base de données. Les corps de requête et de réponse sont encodés au format JSON.
CONVENTIONS JSON
"objet"
. Cette propriété peut être utilisée pour déterminer le type de la ressource (par exemple base de données"
, "utilisateur"
, etc.)."id"
UUIDv4. Vous pouvez omettre les tirets de l’ID lorsque vous faites des demandes à l’API, par exemple lors de la copie de l’ID à partir d'une URL de Notion.snake_case
(pas camelCase
ou kebab-case
).2020-08-12T02:12:33.231Z
) tandis que les dates incluront uniquement la date (2020-08-12
).url
), utilisez une valeur null
au lieu de ""
.Des exemples de requêtes et de réponses sont affichés pour chaque point de terminaison. Les requêtes sont affichées à l’aide du SDK JavaScript Notion et de cURL. Vous pouvez copier-coller ces exemples, et les modifier pour les adapter à votre intégration.
Les SDKs Notion sont des projets open source que vous pouvez installer pour commencer rapidement votre projet. Vous pouvez également choisir un autre langage ou bibliothèque qui vous permet de faire des requêtes HTTP.
Les points de terminaison qui renvoient des listes d’objets prennent en charge les demandes de pagination basées sur le curseur (cursor-based pagination). Par défaut, Notion renvoie dix éléments par appel API. Si le nombre d’éléments dans une réponse d'un point de terminaison de support dépasse la valeur par défaut, une intégration peut utiliser la pagination pour demander un ensemble spécifique de résultats et/ou pour limiter le nombre d'éléments renvoyés.
POINTS DE TERMINAISON PRIS EN CHARGE
Méthode HTTP | Point de terminaison |
---|---|
GET | Lister tous les utilisateurs |
GET | Récupérer des blocs enfants |
GET | Récupérer un commentaire |
GET | Récupérer un élément provenant d’une propriété de la page |
POST | Interroger une base de données |
POST | Faire une recherche |
RÉPONSES
Champ | Type | Description |
---|---|---|
has_more |
booléen |
Indique si la réponse inclut la fin de la liste. Faux s’il n'y a plus de résultats. Sinon, vrai . |
next_cursor |
chaîne |
Chaîne qui peut être utilisée pour récupérer la page de résultats suivante en transmettant la valeur en tant que paramètre start_cursor au même point de terminaison. Disponible uniquement lorsque has_more est vrai. |
object |
"list" |
Chaîne de caractère constante "list" . |
results |
ensemble d'objets |
La liste, ou liste partielle, des résultats spécifiques au point de terminaison. Reportez-vous à la documentation individuelle d’un point de terminaison compatible pour plus de détails. |
Pour garantir une expérience de développement cohérente pour tous les utilisateurs de l’API, l’API Notion est limitée en débit et des limites de taille de base s’appliquent aux paramètres de requêtes.
Les requêtes qui ont été limitées en débit renverront un code d'erreur "rate_limited"
(statut de réponse HTTP 429). La limite de débit pour les requêtes entrantes par intégration est en moyenne de trois demandes par seconde. Certaines rafales au-delà du débit moyen sont autorisées.
<aside> ❗ Les limites de débit peuvent changer
Nous prévoyons à l’avenir d’ajuster les limites tarifaires pour équilibrer la demande et la fiabilité. Nous pouvons également introduire des limites tarifaires distinctes pour les espaces de travail dans différents plans tarifaires.
</aside>
Notion limite la taille de certains paramètres et le niveau de hiérarchie des pages enfant renvoyées dans les requêtes. Une requête qui dépasse l'une de ces limites renverra "validation_error
" code d'erreur (état de réponse HTTP 400) et contiendra des détails plus spécifiques dans la propriété "message
".
Type de valeurs de la propriété | Propriété interne | Limite de taille |
---|---|---|
Objet de texte riche | text.content |
2000 caractères |
Objet de texte riche | text.link.url |
2000 caractères |
Objet de texte riche | equation.expression |
1000 caractères |
N’importe quelle liste d’objets de texte riche | 100 éléments |
Les codes de réponse HTTP sont utilisés pour indiquer les classes générales de réussite et d’erreur.
Citation de statut HTTP | Description |
---|---|
200 | Requête traitée avec succès. |
Les réponses d’erreur contiennent plus de détails sur l’erreur dans le corps de la réponse, dans les propriétés "code"
et "message"
.
Citation de statut HTTP | code |
message |
---|---|---|
400 | invalid_json | Le corps de la requête n’a pas pu être décodé en JSON |
invalid_request_url | Cette URL de requête n’est pas valide. | |
invalid_request | Cette requête n’est pas prise en charge. | |
401 | unauthorized | Le jeton du porteur n’est pas valide. |
Nos versions d’API sont nommées d’après la date de publication de la version. Par exemple, notre dernière version est 2022-06-28.
Vous définissez la version en incluant un en-tête Notion-Version
. La définition de l’en-tête Notion-Version
est obligatoire.
curl <https://api.notion.com/v1/users/01da9b00-e400-4959-91ce-af55307647e5> \\
-H "Authorization: Bearer secret_t1CdN9S8yicG5eWLUOfhcWaOscVnFXns"
-H "Notion-Version: 2022-06-28"
Les objets « utilisateur » apparaissent dans presque tous les objets renvoyés par l’API, y compris :
created_by
et last_edited_by
.created_by
et last_edited_by
et dans les éléments de la propriété people
.created_by
et last_edited_by
.people
.Les objets « utilisateur » contiennent toujours les clés object
et id
, comme décrit ci-dessous. Les autres propriétés peuvent apparaître si l’utilisateur est renvoyé dans un contexte de texte riche ou de propriété de page, et si le bot possède les autorisations requises pour accéder à ces propriétés. Pour en savoir plus sur les autorisations, consultez les guides Capacités et Autorisation.
Ces champs sont partagés par tous les utilisateurs, y compris les personnes et les robots. Les champs marqués d'un * sont toujours présents.
Propriété | Peut-être modifié | Type | Description | Valeur d’exemple |
---|---|---|---|---|
object * |
Affichage seulement | "user" |
Toujours “user” | "user" |
id * |
Affichage seulement | chaîne (UUID) |
L’identifiant unique pour cet utilisateur. | "e79a0b74-3aba-4149-9f74-0bb5791a6ee6" |
type |
Affichage seulement | chaîne (optionnel, énum) |
Le type de l’utilisateur. Les valeurs possibles sont “person” et “bot” . |
"person" |
name |
Affichage seulement | chaîne (optionnel) |
Le nom de l’utilisateur, tel qu’affiché sur Notion. | "Avocado Lovelace" |
avatar_url |
Affichage seulement | chaîne (optionnel) |
L’image de l’avatar choisi. | "<https://secure.notion-static.com/e6a352a8-8381-44d0-a1dc-9ed80e62b53d.jpg>" |
Les objets fichiers contiennent des données sur un fichier qui est téléchargé dans Notion, ou des données sur un fichier externe lié à Notion.
{
"type": "file",
"file": {
"url": "<https://s3.us-west-2.amazonaws.com/secure.notion-static.com/7b8b0713-dbd4-4962-b38b-955b6c49a573/My_test_image.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20221024%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20221024T205211Z&X-Amz-Expires=3600&X-Amz-Signature=208aa971577ff05e75e68354e8a9488697288ff3fb3879c2d599433a7625bf90&X-Amz-SignedHeaders=host&x-id=GetObject>",
"expiry_time": "2022-10-24T22:49:22.765Z"
}
}
Les types de blocs page, embed (intégration), image, video, file (fichier), pdf et bookmark (signet) contiennent tous des objets fichiers. Les valeurs des objets « page » de type icône et couverture contiennent également des objets de type fichier.
Chaque objet fichier contient les champs suivants :
| --- | --- | --- | --- |