curl --request POST \
--url https://api.athenahq.ai/api/v1/seo/issues \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"website_id": "<string>",
"check": "<string>",
"search": "<string>",
"assignee": "me",
"page": 123,
"page_urls": [
"<string>"
],
"page_size": 123
}
'import requests
url = "https://api.athenahq.ai/api/v1/seo/issues"
payload = {
"website_id": "<string>",
"check": "<string>",
"search": "<string>",
"assignee": "me",
"page": 123,
"page_urls": ["<string>"],
"page_size": 123
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
website_id: '<string>',
check: '<string>',
search: '<string>',
assignee: 'me',
page: 123,
page_urls: ['<string>'],
page_size: 123
})
};
fetch('https://api.athenahq.ai/api/v1/seo/issues', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.athenahq.ai/api/v1/seo/issues",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'website_id' => '<string>',
'check' => '<string>',
'search' => '<string>',
'assignee' => 'me',
'page' => 123,
'page_urls' => [
'<string>'
],
'page_size' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.athenahq.ai/api/v1/seo/issues"
payload := strings.NewReader("{\n \"website_id\": \"<string>\",\n \"check\": \"<string>\",\n \"search\": \"<string>\",\n \"assignee\": \"me\",\n \"page\": 123,\n \"page_urls\": [\n \"<string>\"\n ],\n \"page_size\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.athenahq.ai/api/v1/seo/issues")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"website_id\": \"<string>\",\n \"check\": \"<string>\",\n \"search\": \"<string>\",\n \"assignee\": \"me\",\n \"page\": 123,\n \"page_urls\": [\n \"<string>\"\n ],\n \"page_size\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.athenahq.ai/api/v1/seo/issues")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"website_id\": \"<string>\",\n \"check\": \"<string>\",\n \"search\": \"<string>\",\n \"assignee\": \"me\",\n \"page\": 123,\n \"page_urls\": [\n \"<string>\"\n ],\n \"page_size\": 123\n}"
response = http.request(request)
puts response.read_body{
"groups": [
{
"check": "<string>",
"title": "<string>",
"why_it_matters": "<string>",
"owner": "writer",
"effort": "minutes",
"bucket": "technical_cleanup",
"severity": "critical",
"priority": "high",
"site_wide": true,
"counts": {
"open": 123,
"in_progress": 123,
"fixed": 123,
"verified": 123,
"dismissed": 123
},
"sections": [
{
"section": "<string>",
"open": 123,
"audited": 123
}
],
"pages": [
{
"finding_id": "<string>",
"page_id": "<string>",
"property_id": "<string>",
"url": "<string>",
"status": "open",
"page_title": "<string>",
"detail": "<string>",
"recommendation": "<string>",
"shared_value": "<string>",
"evidence": [
"<string>"
],
"evidence_links": [
{
"label": "<string>",
"url": "<string>"
}
],
"robots_txt_rule": {
"url": "<string>",
"line": 123,
"excerpt": [
{
"line": 123,
"text": "<string>"
}
]
},
"first_seen_at": "<string>",
"last_seen_at": "<string>",
"resolved_at": "<string>",
"last_checked_at": "<string>",
"assignee": {
"id": "<string>",
"name": "<string>"
},
"task_revision": 123,
"draft": {
"run_id": "<string>",
"status": "<string>"
}
}
],
"has_more_pages": true
}
],
"total": 123,
"counts": {
"open": 123,
"in_progress": 123,
"fixed": 123,
"verified": 123,
"dismissed": 123
},
"page_size": 123,
"has_evidence": true
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Listar problemas de Estado del sitio
Lista los problemas de Estado del sitio de un sitio web: un grupo por tipo de problema (check) con su título, por qué importa, gravedad (critical, warning, opportunity), prioridad (high, medium, low), responsable (writer, developer o either; null si se desconoce), esfuerzo (minutes, hours, days), si afecta a todo el sitio, recuentos de páginas afectadas por estado (open, in_progress, fixed, verified, dismissed), hasta tres secciones en las que se concentra y páginas afectadas de muestra con el detalle, la recomendación, la evidencia, la persona asignada y task_revision de cada página. Filtra por estado, check, un término de búsqueda, las URL almacenadas de páginas concretas (page_urls) o assignee “me” (solo conexiones con sesión iniciada). Los grupos se paginan: page empieza en 0, page_size es 25 por defecto (máximo 200) y total cuenta los grupos que coinciden; counts suma las páginas por estado de todo el sitio, ignorando el filtro de estado. Un grupo incluye como máximo 50 páginas de muestra (10 cuando lo llama una herramienta, lo que también limita page_size a 25); has_more_pages indica que el resto se lee con la lectura de páginas del problema (get_site_health_issue_pages o POST /v1/seo/issues/pages), cuya página 0 repite las páginas de muestra. has_evidence en false significa que el sitio nunca se ha rastreado ni auditado. Requiere Estado del sitio en el plan del sitio web; de lo contrario, la llamada falla con 403.
curl --request POST \
--url https://api.athenahq.ai/api/v1/seo/issues \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"website_id": "<string>",
"check": "<string>",
"search": "<string>",
"assignee": "me",
"page": 123,
"page_urls": [
"<string>"
],
"page_size": 123
}
'import requests
url = "https://api.athenahq.ai/api/v1/seo/issues"
payload = {
"website_id": "<string>",
"check": "<string>",
"search": "<string>",
"assignee": "me",
"page": 123,
"page_urls": ["<string>"],
"page_size": 123
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
website_id: '<string>',
check: '<string>',
search: '<string>',
assignee: 'me',
page: 123,
page_urls: ['<string>'],
page_size: 123
})
};
fetch('https://api.athenahq.ai/api/v1/seo/issues', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.athenahq.ai/api/v1/seo/issues",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'website_id' => '<string>',
'check' => '<string>',
'search' => '<string>',
'assignee' => 'me',
'page' => 123,
'page_urls' => [
'<string>'
],
'page_size' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.athenahq.ai/api/v1/seo/issues"
payload := strings.NewReader("{\n \"website_id\": \"<string>\",\n \"check\": \"<string>\",\n \"search\": \"<string>\",\n \"assignee\": \"me\",\n \"page\": 123,\n \"page_urls\": [\n \"<string>\"\n ],\n \"page_size\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.athenahq.ai/api/v1/seo/issues")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"website_id\": \"<string>\",\n \"check\": \"<string>\",\n \"search\": \"<string>\",\n \"assignee\": \"me\",\n \"page\": 123,\n \"page_urls\": [\n \"<string>\"\n ],\n \"page_size\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.athenahq.ai/api/v1/seo/issues")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"website_id\": \"<string>\",\n \"check\": \"<string>\",\n \"search\": \"<string>\",\n \"assignee\": \"me\",\n \"page\": 123,\n \"page_urls\": [\n \"<string>\"\n ],\n \"page_size\": 123\n}"
response = http.request(request)
puts response.read_body{
"groups": [
{
"check": "<string>",
"title": "<string>",
"why_it_matters": "<string>",
"owner": "writer",
"effort": "minutes",
"bucket": "technical_cleanup",
"severity": "critical",
"priority": "high",
"site_wide": true,
"counts": {
"open": 123,
"in_progress": 123,
"fixed": 123,
"verified": 123,
"dismissed": 123
},
"sections": [
{
"section": "<string>",
"open": 123,
"audited": 123
}
],
"pages": [
{
"finding_id": "<string>",
"page_id": "<string>",
"property_id": "<string>",
"url": "<string>",
"status": "open",
"page_title": "<string>",
"detail": "<string>",
"recommendation": "<string>",
"shared_value": "<string>",
"evidence": [
"<string>"
],
"evidence_links": [
{
"label": "<string>",
"url": "<string>"
}
],
"robots_txt_rule": {
"url": "<string>",
"line": 123,
"excerpt": [
{
"line": 123,
"text": "<string>"
}
]
},
"first_seen_at": "<string>",
"last_seen_at": "<string>",
"resolved_at": "<string>",
"last_checked_at": "<string>",
"assignee": {
"id": "<string>",
"name": "<string>"
},
"task_revision": 123,
"draft": {
"run_id": "<string>",
"status": "<string>"
}
}
],
"has_more_pages": true
}
],
"total": 123,
"counts": {
"open": 123,
"in_progress": 123,
"fixed": 123,
"verified": 123,
"dismissed": 123
},
"page_size": 123,
"has_evidence": true
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Cuerpo
¿Esta página le ayudó?