Sommaire de la documentation
Compte
Le jeton, son équipe, son offre et sa consommation.
Décrire le jeton courant
GET
/v1/me
Rend le jeton, le membre qui le porte, l’équipe pour laquelle il agit, l’offre que le serveur résout à cet instant et les verbes de l’API qu’elle ouvre. C’est le premier appel de toute intégration.
- Scopes requis
- facultatif
- Coût en débit
- 1 unité(s)
Réponses
-
200The current token and its context. -
401Missing, invalid or expired token, or a member who left the team. -
403The plan does not include the API (`api.not_in_plan`) or this verb (`api.write_not_in_plan`), or the token lacks a scope (`token.missing_scope`). -
429The plan rate limit is exhausted for one window.
cURL
curl "https://api.nessflow.com/v1/me" \
-H "Authorization: Bearer $NESSFLOW_TOKEN"
PHP
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.nessflow.com/v1/']);
$response = $client->request('GET', 'me', [
'headers' => [
'Authorization' => 'Bearer '.getenv('NESSFLOW_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);
JavaScript
const response = await fetch('https://api.nessflow.com/v1/me', {
headers: {
Authorization: `Bearer ${process.env.NESSFLOW_TOKEN}`,
},
});
const data = await response.json();
Python
import os
import requests
response = requests.get(
"https://api.nessflow.com/v1/me",
headers={
"Authorization": f"Bearer {os.environ['NESSFLOW_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json()
Exemple de réponse
{
"data": {
"token": {
"id": "0190f5a2-7c4e-7b1a-9d3e-2f6b8c1a4e57",
"name": "Exemple",
"scopes": [
"string"
],
"expires_at": "2026-10-01T09:30:00Z",
"last_used_at": "2026-10-01T09:30:00Z",
"created_at": "2026-10-01T09:30:00Z"
},
"user": {
"name": "Exemple",
"email": "dev@exemple.fr"
},
"team": {
"slug": "string",
"name": "Exemple"
},
"plan": {
"key": "string",
"label": "string"
},
"api_access": [
"read"
]
}
}
Lire les débits et les quotas de l’offre
GET
/v1/usage
Rend la consommation de chaque fenêtre de débit, en unités de coût, et les quotas de l’équipe (projets, crawls du mois, mots-clés suivis…), les mêmes jauges que l’écran Consommation. Une limit à null signifie illimité ; 0 signifie non inclus dans l’offre. Ne lisez jamais null comme zéro.
- Scopes requis
- facultatif
- Coût en débit
- 1 unité(s)
Réponses
-
200Rate limits and quotas. -
401Missing, invalid or expired token, or a member who left the team. -
403The plan does not include the API (`api.not_in_plan`) or this verb (`api.write_not_in_plan`), or the token lacks a scope (`token.missing_scope`). -
429The plan rate limit is exhausted for one window.
cURL
curl "https://api.nessflow.com/v1/usage" \
-H "Authorization: Bearer $NESSFLOW_TOKEN"
PHP
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.nessflow.com/v1/']);
$response = $client->request('GET', 'usage', [
'headers' => [
'Authorization' => 'Bearer '.getenv('NESSFLOW_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);
JavaScript
const response = await fetch('https://api.nessflow.com/v1/usage', {
headers: {
Authorization: `Bearer ${process.env.NESSFLOW_TOKEN}`,
},
});
const data = await response.json();
Python
import os
import requests
response = requests.get(
"https://api.nessflow.com/v1/usage",
headers={
"Authorization": f"Bearer {os.environ['NESSFLOW_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json()
Exemple de réponse
{
"data": {
"rate_limits": [
{
"window": "minute",
"window_seconds": 42,
"unit": "cost",
"limit": 100,
"used": 42,
"remaining": 100,
"resets_in_seconds": 42
}
],
"quotas": [
{
"entitlement": "string",
"used": 42,
"limit": 100,
"remaining": 100
}
]
}
}
Lister les opérations en cours
GET
/v1/operations
Ce qui tourne en ce moment pour l’équipe : crawls, recherches de mots-clés, scans de sécurité, pré-vols de projet et synchronisations de backlinks, du plus récent au plus ancien. Une opération dont plus rien ne s’occupe n’est jamais annoncée en cours. La liste est plafonnée ; meta.total dit combien il y en a. Les analyses de journaux, recommandations et analyses sémantiques n’y figurent pas : lisez leurs propres ressources.
- Scopes requis
- projects:read
- Coût en débit
- 1 unité(s)
Réponses
-
200OK. -
401Missing, invalid or expired token, or a member who left the team. -
403The plan does not include the API (`api.not_in_plan`) or this verb (`api.write_not_in_plan`), or the token lacks a scope (`token.missing_scope`). -
429The plan rate limit is exhausted for one window.
cURL
curl "https://api.nessflow.com/v1/operations" \
-H "Authorization: Bearer $NESSFLOW_TOKEN"
PHP
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.nessflow.com/v1/']);
$response = $client->request('GET', 'operations', [
'headers' => [
'Authorization' => 'Bearer '.getenv('NESSFLOW_TOKEN'),
],
]);
$data = json_decode((string) $response->getBody(), true);
JavaScript
const response = await fetch('https://api.nessflow.com/v1/operations', {
headers: {
Authorization: `Bearer ${process.env.NESSFLOW_TOKEN}`,
},
});
const data = await response.json();
Python
import os
import requests
response = requests.get(
"https://api.nessflow.com/v1/operations",
headers={
"Authorization": f"Bearer {os.environ['NESSFLOW_TOKEN']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json()
Exemple de réponse
{
"data": [
{
"kind": "crawl",
"project_id": "0190f5a2-7c4e-7b1a-9d3e-2f6b8c1a4e57",
"started_at": "2026-10-01T09:30:00Z",
"crawl": {
"id": "0190f5a2-7c4e-7b1a-9d3e-2f6b8c1a4e57",
"stage": "string",
"progress": 42,
"pages_crawled": 42,
"page_budget": 42
}
}
],
"meta": {
"total": 42,
"shown": 42
}
}