Notre Reporting API est utilisé pour extraire des données de votre compte ContentKing. Un exemple typique d’utilisation, c’est de connecter plusieurs solutions logicielles ensembles afin de rationaliser vos tâches de reporting et d’intégrer ContentKing à votre portail client.

Conditions d’utilisation de notre Reporting API

En utilisant notre Reporting API, vous acceptez les Conditions d’Utilisation.

Récupérer votre token de Reporting API

Pour utiliser notre Reporting API, il vous faut obtenir un token pour votre compte ContentKing. Vous le trouverez dans la section Compte en cliquant sur l’onglet Paramètres de Compte.

En-tête de requête de l’API

Lorsque vous lancez une requête, vous devez ajouter l’en-tête suivant :

Authorization: token <place-your-API-token-here>
Content-Type: application/json

Note: vous devez ajouter “token” suivi d’un espace et de votre token API.

Reporting API URL

ContentKing Reporting API is available on this URL.

https://api.contentkingapp.com/

Récupérer une liste de sites associés à votre compte

Effectuer la requête suivante pour obtenir une liste des sites de votre compte :

GET /v1/websites

La réponse ressemblera à ça :

200 OK
[
	{
		"id": "1-234",
		"app_url": "https://app.contentkingapp.com/websites/1-234/dashboard",
		"domain": "https://www.contentkingapp.com",
		"name": null,
		"page_capacity": 1000
	},
	{
		"id": "1-2345",
		"app_url": "https://app.contentkingapp.com/websites/1-2345/dashboard",
		"domain": "https://www.contentkingapp.de",
		"name": "ContentKing - DE",
		"page_capacity": 1000
	}
]

Obtenir une liste des alertes pour un site

Effectuer la requête suivante pour obtenir une liste des alertes pour un site spécifique sur votre compte :

GET /v1/websites/<website_id>/alerts

La réponse ressemblera à ceci :

200 OK
[
	{
		"id": "1",
		"app_url": "https://app.contentkingapp.com/websites/1-234/events?event=1",
		"date_last_updated": "2018-05-10T12:59:21+02:00",
		"date_opened": "2018-05-10T12:59:21+02:00",
		"name": "robots_txt_changed",
		"scope": "platform",
		"type": "warning"
	},
	{
		"id": "2",
		"app_url": "https://app.contentkingapp.com/websites/1-234/events?event=2",
		"date_last_updated": "2018-07-21T03:21:46+02:00",
		"date_opened": "2018-07-16T14:33:43+02:00",
		"name": "issue_opened.meta_information/title_missing",
		"scope": "pages",
		"type": "alert"
	}
]

Obtenir une liste des problèmes pour un site

Lancez la requête suivante pour obtenir une liste des problèmes sur un site particulier associé à votre compte :

GET /v1/websites/<website_id>/issues

La réponse ressemblera à ceci :

200 OK
[
	{
		"name": "content_headings/h1_duplicate",
		"points_gained": 24,
		"points_to_gain": 0,
		"scope": "pages"
	},
	{
		"name": "xml_sitemap/missing",
		"points_gained": 10,
		"points_to_gain": 0,
		"scope": "platform"
	}
]

Obtenir une liste des segments pour un site

Lancez la requête suivante pour obtenir une liste des segments pour un site particulier associé à votre compte :

GET /v1/websites/<website_id>/segments

La réponse ressemblera à ça :

200 OK
[
	{
		"id": "1",
		"color": "72c035",
		"label": "Indexable",
		"shortcode": "I"
	},
	{
		"id": "2",
		"color": "9ea6af",
		"label": "Non-indexable",
		"shortcode": null
	}
]

Obtenir des statistiques pour un site ou les segments d’un site

Lancez la requête suivante pour obtenir des statistiques sur un site particulier associé à votre compte :

GET /v1/websites/<website_id>/statistics/website

Ou tapez cette requête pour obtenir des statistiques sur un segment spécifique pour le site :

GET /v1/websites/<website_id>/statistics/segment:<segment_id>

La réponse ressemblera à ceci:

200 OK
{
	"health": 969,
	"number_of_issues": 15,
	"number_of_urls":
	{
		"missing": 2,
		"page": 9,
		"redirect": 4,
		"server_error": 0,
		"unreachable": 0
	}
}

Erreurs particulières lors des requêtes de statistiques

404 Not found
{
	"error": "No statistics found for given scope"
}

Cette réponse signifie que les statistiques pour la catégorie recherchée (site ou segment) ne sont pas encore disponibles. Elles peuvent ou non être disponibles plus tard.

Obtenir des données sur une page particulière au sein d’un site

Lancez la requête suivante pour obtenir des données pour une page spécifique au sein d’un site :

GET /v1/websites/<website_id>/pages?url=<url>

Réponse pour une page

La réponse, si la page existe (si une URL retourne un statu HTTP 200) ressemblera à ceci :

200 OK
{
	"url": "https://www.contentkingapp.com/",
	"is_https": true,
	"ga_average_time": 10,
	"ga_bounce_rate": 5,
	"ga_date_range":
	{
		"since": "2018-05-09",
		"until": "2018-08-07"
	},
	"ga_page_value": 0,
	"ga_page_views": 1,
	"ga_unique_page_views": 2,
	"gsc_clicks": 0,
	"gsc_ctr": 0,
	"gsc_date_range":
	{
		"since": "2018-05-09",
		"until": "2018-08-07"
	},
	"gsc_impressions": 4,
	"gsc_position": 5,
	"health": 935,
	"is_disallowed_in_robots_txt": false,
	"is_indexable": true,
	"is_indexable_due_to_meta_robots": "yes",
	"is_indexable_due_to_x_robots_tag": "yes",
	"relevance": 8.72,
	"status_code": 200,
	"time_document_download": 183,
	"type": "page",
	"content": [
		{
			"type": "canonical",
			"content": null
		},
		{
			"type": "title",
			"content": "Blog"
		},
		{
			"type": "meta_description",
			"content": "some meta description"
		},
		{
			"type": "h1",
			"content": "ContentKing"
		},
		{
			"type": "h2",
			"content": "Pricing"
		},
		{
			"type": "meta_robots",
			"content": null
		},
		{
			"type": "open_graph_description",
			"content": null
		},
		{
			"type": "open_graph_image",
			"content": null
		},
		{
			"type": "open_graph_title",
			"content": null
		},
		{
			"type": "open_graph_type", "content": null
		},
		{
			"type": "open_graph_url",
			"content": null
		},
		{
			"type": "twitter_card",
			"content": null
		},
		{
			"type": "twitter_site",
			"content": null
		},
		{
			"type": "google_analytics",
			"content": "UA-XXXXXX-X"
		}
	],
	"schema_org": [],
	"segments":	[
		"1",
		"3"
	],
	"app_url": "https://app.contentkingapp.com/websites/1-234/pages/3",
	"open_issues": [
		{
			"name": "open_graph/missing"
		},
		{
			"name": "twitter_cards/missing"
		},
		{
			"name": "meta_information/meta_description_incorrect_length"
		},
		{
			"name": "meta_information/title_incorrect_length"
		}
	]
}

Réponse pour une redirection

La réponse pour une redirection (l’URL renvoie un statu HTTP 3xx) ressemblera à ceci :

200 OK
{
	"url": "https://www.contentkingapp.com/this-redirects",
	"is_https": true,
	"gsc_clicks": 9,
	"gsc_ctr": 5,
	"gsc_date_range":
	{
		"since": "2018-05-09",
		"until": "2018-08-07"
	},
	"gsc_impressions": 1,
	"gsc_position": 4,
	"is_disallowed_in_robots_txt": false,
	"is_indexable": false,
	"is_indexable_due_to_meta_robots": "not_applicable",
	"is_indexable_due_to_x_robots_tag": "not_applicable",
	"redirect":
	{
		"location": "https://www.contentkingapp.com/",
		"url": "https://www.contentkingapp.com/",
	},
	"status_code": 302,
	"time_document_download": 149,
	"type": "redirect",
	"segments":	[
		"1"
	],
	"app_url": "https://app.contentkingapp.com/websites/1-234/pages/4",
}

Réponse en cas de page manquante

La réponse pour une page manquante (l’URL renvoie un statu HTTP 4xx) ressemblera à ceci :

200 OK
{
	"url": "https://www.contentkingapp.com/this-does-not-exist",
	"is_https": true,
	"is_disallowed_in_robots_txt": false,
	"is_indexable": false,
	"is_indexable_due_to_meta_robots": "not_applicable",
	"is_indexable_due_to_x_robots_tag": "not_applicable",
	"status_code": 404,
	"time_document_download": 218,
	"type": "missing",
	"segments": [
		"2"
	],
	"app_url":"https://app.contentkingapp.com/websites/1-234/pages/5",
}

Erreurs spécifiques aux requêtes de données de page

404 Not found
{
	"error": "Requested URL was not found"
}

Cette réponse signifie que l’URL indiquée dans la requête n’est pas surveillée par ContentKing.

404 Not found
{
	"error": "Requested URL cannot be provided via Reporting API"
}

Cette réponse signifie que les données pour l’URL demandée dans la requête ne sont pas disponibles avec Reporting API.

Récupérer une liste de pages pour un site

Pour récupérer la liste de pages d’un site spécifique, envoyez la requête suivante :

GET /v1/websites/<website_id>/pages/list?page=1&per_page=100&sort=url&direction=desc
GET /v1/websites/<website_id>/pages/list?page=1&per_page=100&sort=url&direction=desc&filter%5Bsegment%5D=18

Pagination

Les paramètres de requête per_page et page sont utilisés pour itérer de larges ensembles de résultats.

  • per_page peut aller de 1 à 500
  • page peut aller de 1 à ceil(total / per_page). Si page est supérieur à la valeur max, le champ urls sera un tableau vide.

Réponse pour une page

Chaque réponse API contient deux clés principales :

  • total le nombre d’urls dans l’ensemble de résultat pour une requête donnée
  • urls les urls paginés qui sont basés sur les paramètres de requête per_page et page
200 OK
{
	"total": 1,
	"urls": [
		{
			"app_url": "https://app.contentkingapp.com/websites/1-2/pages/3",
			"analytics_services": [
				"google_analytics"
			],
			"canonical_type": "internal_self",
			"ga_average_time": 5.788,
			"ga_bounce_rate": 48,
			"ga_page_value": 0,
			"ga_page_views": 248,
			"ga_unique_page_views": 214,
			"gsc_clicks": 3,
			"gsc_ctr": 0.183,
			"gsc_impressions": 1635,
			"gsc_position": 41.021,
			"health": 950,
			"h1": "H1 page header",
			"hreflang_language": "en",
			"is_disallowed_in_robots_txt": false,
			"is_indexable": true,
			"is_indexable_due_to_meta_robots": true,
			"is_indexable_due_to_x_robots_tag": null,
			"is_linked": true,
			"link_amp": null,
			"link_next": null,
			"link_prev": null,
			"meta_description": "ContentKing keeps track of your website 24/7 so that you can catch unexpected changes and issues before search engines and visitors do. Try it today!",
			"mobile_variant": null,
			"number_of_hreflangs": 6,
			"number_of_incoming_internal_canonicals": 1,
			"number_of_incoming_internal_links": 314,
			"number_of_incoming_internal_redirects": 0,
			"number_of_outgoing_external_links": 10,
			"number_of_outgoing_internal_links": 65,
			"open_graph_description": "Get more visitors and increase conversions with ContentKing. Monitor your website and catch problems before search engines and visitors do. Try now!",
			"open_graph_image": "https://www.contentkingapp.com/wp-content/uploads/2017/12/%5B600x314%5D%20Facebook%20Open%20Graph%20-%[email protected]",
			"open_graph_title": "Content Optimization and Monitoring service ContentKing",
			"open_graph_type": "website",
			"open_graph_url": "https://www.contentkingapp.com/",
			"relevance": 5.97,
			"schema_org_number_of_types": 1,
			"schema_org_types":	[
				"Website"
			],
			"segments":	[
				"18"
			],
			"status_code": 200,
			"tag_managers": [
				"google_tag_manager"
			],
			"time_document_download": 947,
			"title": "Real-time SEO Auditing and Content Change Tracking - ContentKing",
			"twitter_card": "summary_large_image",
			"twitter_description": "Get more visitors and increase conversions with ContentKing. Catch problems before search engines and visitors do. Try it today!",
			"twitter_image": "https://www.contentkingapp.com/wp-content/uploads/2017/12/%5B600x314%5D%20Facebook%20Open%20Graph%20-%[email protected]",
			"twitter_site": "@contentking",
			"twitter_title": "Content Optimization service ContentKing",
			"type": "page",
			"url": "https://www.contentkingapp.com/",
			"url_depth": 0,
			"visual_analytics_services": [
				"mouseflow"
			]
		}
	]
}

Récupérer une liste de pages pour une alerte de site

Envoyez la requête suite pour obtenir une liste des pages pour une alerte de site spécifique

GET /v1/websites/<website_id>/alerts/<alert_id>/pages?page=1&per_page=100

Pagination

Les paramètres de requête per_page et page sont utilisés pour itérer de larges ensembles de résultats.

  • per_page peut aller de 1 à 500
  • page peut aller de 1 à ceil(total / per_page). Si page est supérieur à la valeur max, le champ urls sera un tableau vide.

Réponse pour une page

Chaque réponse API contient deux clés principales :

  • total le nombre d’urls dans l’ensemble de résultat pour une requête donnée
  • urls les urls paginés qui sont basés sur les paramètres de requête per_page et page
200 OK
{
	"total": 1,
	"urls": [
		{
			"app_url": "https://app.contentkingapp.com/websites/1-2/pages/3",
			"relevance": 5.97,
			"segments":	[
				"18"
			],
			"url": "https://www.contentkingapp.com/"
		}
	]
}

Récupérer une liste de page pour un problème de site web

Envoyez la requête suivante pour obtenir la liste des pages pour un problème de site web spécifique :

GET /v1/websites/<website_id>/issues/<issue>/pages?page=1&per_page=100

Pagination

Les paramètres de requête per_page et page sont utilisés pour itérer de larges ensembles de résultats.

  • per_page peut aller de 1 à 500
  • page peut aller de 1 à ceil(total / per_page). Si page est supérieur à la valeur max, le champ urls sera un tableau vide.

Réponse pour une page

Chaque réponse API contient deux clés principales :

  • total le nombre d’urls dans l’ensemble de résultat pour une requête donnée
  • urls les urls paginés qui sont basés sur les paramètres de requête per_page et page
200 OK
{
	"total": 1,
	"urls": [
		{
			"app_url": "https://app.contentkingapp.com/websites/1-2/pages/3",
			"relevance": 5.97,
			"segments": [
				"18"
			],
			"url": "https://www.contentkingapp.com/"
		}
	]
}

Liste de problèmes

Problèmes Description
Analyse de données  
analytics/analytics_missing Pas d’analyse de données installée
analytics/visual_analytics_missing Pas de visualisation analytique de données installée
En-tête de contenu  
content_headings/h1_duplicate L’en-tête H1 n’est pas unique
content_headings/h1_incorrect_length L’en-tête H1 est d’une longueur incorrecte
content_headings/h1_missing L’en-tête H1 est manquante
content_headings/h1_too_many Il y a plusieurs en-têtes H1
Lien Canonique  
canonical_link/incorrectly_canonicalized Lien canonique menant à une autre page présent sur une une page non-indexable
canonical_link/missing Le lien canonique est manquant
canonical_link/points_to_unindexable Le lien canonique mène à une page non-indexable
canonical_link/too_many Plus d’un lien canonique
Images  
images/alt_attribute L’attribut alt. des images est manquant
images/title_attribute L’attribut title des images est manquant
Liens  
links/broken La page contient des liens morts
links/redirected La page contient des liens menant à des redirections
links/to_canonicalized la page contient des liens menant à des URLs canonisés
Meta Information  
meta_information/meta_description_duplicate La Meta description n’est pas unique
meta_information/meta_description_incorrect_length La Meta description à une longueur incorrecte
meta_information/meta_description_missing La Meta description est manquante
meta_information/meta_description_too_many Il y a plusieurs Meta description sur la plage
meta_information/title_duplicate Le titre de page n’est pas unique
meta_information/title_incorrect_length Le titre de la page à une longueur incorrecte
meta_information/title_missing Le titre est manquant
meta_information/title_too_many Il y a plusieurs titres sur les pages
Open Graph  
open_graph/description_incorrect_length La description Open Graph a une longueur incorrecte
open_graph/missing Tous les éléments Open Graph requis ne sont pas présents
open_graph/title_incorrect_length Le titre Open Graph a une longueur incorrecte
Twitter Cards  
twitter_cards/description_incorrect_length La description Twitter Cards a une longueur incorrecte
twitter_cards/missing Tous les éléments Twitter Cards requis ne sont pas présents
twitter_cards/title_incorrect_length Le titre Twitter Cardsa une longueur incorrecte
Plan de site XML  
xml_sitemap/incorrectly_missing La page n’est pas inclue dans le plan de site XML
xml_sitemap/incorrectly_present Pages présentes de façon erronée dans le plan de site XML

Erreurs courantes avec l’API

Autorisation manquante

401 Unauthorized
{
	"code": "auth_missing_token",
	"message": "Authentication token must be passed in Authorization HTTP header.",
	"errors": []
}

Cette réponse signifie que la requête a été reçue mais qu’il lui manque un token d’autorisation et qu’elle ne peut donc pas s’exécuter. Assurez-vous de bien paramétrer le header Authorization.

Échec de l’autorisation

401 Unauthorized
{
	"code": "auth_failed",
	"message": "Authentication token is expired or invalid.",
	"errors": []
}

Si vous obtenez cette réponse, cela signifie que le token API fourni est invalide ou expiré et que la requête ne peut donc pas être exécuter.

Termes d’utilisation du Reporting API non acceptés

403 Forbidden
{
	"code": "terms_of_use_not_accepted",
	"message": "Reporting API Terms of Use have not been accepted yet. Please accept Terms of Use in Account Settings.",
	"errors": []
}

Si vous obtenez cette réponse, cela signifie que vous n’avez pas encore accepté Les Termes d’Utilisations du Reporting API. Vous devez les accepter dans les Paramètres de Compte avant d’utiliser le Reporting API.

Website not found ( Site web inaccessible )

404 Not found
{
	"error": "Requested website ID was not found"
}

Si vous recevez cette réponse, c’est que l’ID du site fournie ne peut pas être trouvée sur votre compte.

Autorisation mal formulée

422 Unprocessable Entity
{
	"code": "auth_malformed",
	"message": "Authorization HTTP header must conform to format described in docs.",
	"errors": []
}

Cette réponse signifie que la requête a été correctement reçue mais que l’autorisation n’a pas été correctement formulée. Assurez-vous de paramétrer correctement le header Authorization.

Commencer votre essai gratuit de 14 jours

Vous pouvez commencer en 20 secondes

Insérez un nom de domaine valide, s'il vous plaît (www.exemple.fr).
  • La carte de crédit n'est pas requise
  • Aucune installation requise
  • Sans engagement