GET
/api/v1/me
Contul căruia îi aparține cheia și numele și prefixul cheii. Util mai ales pentru un singur lucru: să vă spună că cheia din acest mediu este cheia care credeți că este.
Exemplu
curl https://seonis.ai/api/v1/me \
-H "Authorization: Bearer $SEONIS_API_KEY"
GET
/api/v1/sites
Fiecare site din cont. id este ceea ce folosește lista de articole pentru filtrare, iar domeniul este acolo pentru ca un script de build să poată potrivi după ceva ce știe deja, în loc să poarte un id.
Exemplu
curl https://seonis.ai/api/v1/sites \
-H "Authorization: Bearer $SEONIS_API_KEY"
{
"sites": [
{
"id": 5,
"name": "Peppervale",
"domain": "peppervale.co.uk",
"url": "https://peppervale.co.uk",
"language": "en",
"country": "GB",
"market": "en-GB",
"status": "active",
"articles_published": 34,
"created_at": "2026-06-02T11:04:19+00:00"
}
]
}
GET
/api/v1/articles
O pagină de articole, cu cea mai nouă modificare prima, fără conținut. Ordonate după momentul ultimei modificări a fiecărui articol, nu după momentul în care a fost scris, ceea ce face ca updated_since să fie util: un articol deja publicat poate fi editat mai târziu, când un link este adăugat în el sau scos din nou.
Parametri de interogare
| Nume |
Ce face |
| site_id |
Un site, din /sites. Un id care nu este în contul dumneavoastră răspunde cu 404. |
| status |
Una dintre draft, qa, needs_repair, review, ready, published, failed. Orice altceva este 422, nu o pagină goală. "ready" este ce vrea un build: scris, verificat și încă nicăieri. |
| updated_since |
ISO 8601, cum ar fi 2026-09-06T00:00:00Z. Rețineți timestamp-ul ultimei rulări și trimiteți-l înapoi la următoarea. |
| per_page |
Până la 100. Valoarea implicită este 25. |
| page |
De la 1. meta.has_more spune dacă să cereți încă una. |
Exemplu
curl -G https://seonis.ai/api/v1/articles \
-H "Authorization: Bearer $SEONIS_API_KEY" \
-d site_id=5 \
-d status=ready \
-d updated_since=2026-09-01T00:00:00Z \
-d per_page=50
{
"articles": [
{
"id": 918,
"site_id": 5,
"language": "en",
"status": "ready",
"title": "How to choose a pepper grinder",
"slug": "how-to-choose-a-pepper-grinder",
"meta_title": "How to choose a pepper grinder | Peppervale",
"meta_description": "Burr or blade, ceramic or steel: what matters in a grinder.",
"meta_keywords": ["pepper grinder", "burr grinder"],
"tags": ["Kitchen"],
"excerpt": "A burr grinder gives an even grind; a blade one does not.",
"key_takeaways": ["A burr grinder gives an even grind; a blade one does not."],
"faq": [{ "question": "Ceramic or steel?", "answer": "Steel for pepper, ceramic for salt." }],
"hero_image": { "url": "https://seonis.ai/storage/images/5/918.jpg", "alt": "A pepper grinder" },
"infographic_url": null,
"word_count": 1812,
"published_url": null,
"published_at": null,
"updated_at": "2026-09-06T06:31:12+00:00",
"created_at": "2026-09-05T02:14:55+00:00",
"quality": { "seo_score": 88, "language_score": 96, "language_findings": [] }
}
],
"meta": { "page": 1, "per_page": 50, "total": 1, "last_page": 1, "has_more": false }
}
GET
/api/v1/articles/{id}
Un articol, cu tot ce omite lista: content_markdown, content_html, întrebările frecvente ca schema.org JSON-LD gata de pus în pagină și orice linkuri de schimb pe care le conține articolul.
Numele câmpurilor sunt cele trimise de webhook-ul nostru, intenționat. Dacă aveți deja un receptor pentru webhook, același parser citește și asta.
Exemplu
curl https://seonis.ai/api/v1/articles/918 \
-H "Authorization: Bearer $SEONIS_API_KEY"
{
"article": {
"id": 918,
"site_id": 5,
"language": "en",
"status": "ready",
"title": "How to choose a pepper grinder",
"slug": "how-to-choose-a-pepper-grinder",
"meta_description": "Burr or blade, ceramic or steel: what matters in a grinder.",
"content_markdown": "Grinders differ.\n\n## Burr or blade\n\nA **burr** grinder ...",
"content_html": "<p>Grinders differ.</p>\n<h2>Burr or blade</h2> ...",
"faq_schema": { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [] },
"hero_image": { "url": "https://seonis.ai/storage/images/5/918.jpg", "alt": "A pepper grinder" },
"word_count": 1812,
"published_url": null,
"updated_at": "2026-09-06T06:31:12+00:00",
"quality": { "seo_score": 88, "language_score": 96, "language_findings": [] },
"exchange_links": []
}
}
POST
/api/v1/articles/{id}/published
Publicați articolul; aici ne spuneți adresa. Este singurul endpoint care schimbă ceva.
Face exact ce face o livrare făcută chiar de noi: articolul este marcat ca publicat, este numărat în alocarea dumneavoastră lunară, elementul din plan se închide, orice linkuri de schimb din el primesc adresa pe care o aștepta verificatorul, iar Pagina dumneavoastră de Facebook este notificată dacă ați conectat una. Fără acest apel, articolul rămâne pregătit pentru totdeauna și nimic din toate acestea nu se întâmplă.
Exemplu
curl -X POST https://seonis.ai/api/v1/articles/918/published \
-H "Authorization: Bearer $SEONIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://peppervale.co.uk/blog/how-to-choose-a-pepper-grinder"}'
Răspunsuri
| 200 |
Înregistrat. Articolul revine cu noul său status, published_at și published_url. |
| 422 |
Lipsește URL-ul sau nu este o adresă completă http:// sau https://. |
| 409 |
Articolul nu este gata de publicare sau este deja înregistrat ca publicat. Articolul revine împreună cu refuzul, ca să puteți vedea care dintre situații se aplică. |