Logi sisse Alustage tasuta prooviperioodi

Tooge oma artiklid.
Avaldage need omal viisil.

Iga artiklit, mille Teile kirjutame, saab lugeda üle HTTP: pealkiri, metaandmed, Markdown, HTML, päisepilt ja KKK. Tooge need oma Next.js, Astro või kohandatud saiti, kui Teie build käivitub, avaldage need ja teatage meile aadress, kuhu igaüks neist jõudis.

Üks bearer token. JSON sisse, JSON välja. Pole vaja paigaldada SDK-d ega seadistada midagi peale võtme.

Webhook saadab. API võimaldab Teil tuua.

Need kannavad sama artiklit samal kujul, nii et ühe jaoks kirjutatud parser loeb teist muutmata kujul. Erinevus on selles, kes vestlust alustab.

Webhook, kui Teie sait saab igal ajal postituse vastu võtta

Kutsume Teie lõpp-punkti kohe, kui artikkel on valmis, ja uuesti siis, kui see muutub. Midagi ei pea küsitlema, midagi ei pea ajastama. WordPress, Shopify, Ghost, Zapieri päästik või marsruut, mille kirjutasite ise.

API, kui Teie sait ehitatakse ja juurutatakse tervikuna

Staatiline sait ei saa hommikul kell pool seitse postitust vastu võtta, enne peab midagi uuesti build'ima. Seega küsib Teie build, mis ootab, võtab selle ja teatab meile pärast aadressi. Teie valite aja.

Mõlemad, kui soovite

Need on eraldi ühendused ja kumbki ei välista teist. Webhook, mis toidab uudiskirja, ja API, mis toidab veebisaiti, on tavaline lahendus.

Üks võti, saadetud bearer token'ina.

Looge võti juhtpaneelis jaotises Settings, seejärel Connections. Seda näidatakse üks kord, loomise ajal, sest salvestatakse ainult selle räsi: kui kaotate selle, tühistage see ja tehke uus. Võti loeb kõiki konto saite ja selle saab tühistada samalt ekraanilt.

Iga päring

Authorization: Bearer sns_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept: application/json

Kontrollige, et see töötab

curl https://seonis.ai/api/v1/me \
  -H "Authorization: Bearer $SEONIS_API_KEY"
{
  "organisation": { "id": 12, "name": "Peppervale", "country": "GB" },
  "key": {
    "name": "Production build",
    "prefix": "sns_live_ab",
    "created_at": "2026-09-06T09:12:44+00:00",
    "last_used_at": "2026-09-06T09:31:02+00:00"
  },
  "sites": 2
}

Päringulimiit

120 päringut minutis, arvestatuna võtme, mitte lähteaadressi järgi, sest build runner'id jagavad aadresse. Selle piiri ületamisel saate 429 koos standardsete Retry-After ja X-RateLimit päistega. Artiklite toomine build'i jaoks on vaid mõni päring, seega ei ole see piir, milleni peaksite kogemata jõudma.

Hoidke võti oma hoidlast väljas

See loeb kõike, mida oleme Teie konto jaoks kirjutanud, sealhulgas veel avaldamata artikleid. Pange see oma build-keskkonda, mitte lähtekoodi. Tühistage see siin kohe, kui see satub kohta, kus see ei tohiks olla, ja kõik, mis seda kasutab, saab kohe 401.

Neid on viis ja neli neist ainult loevad.

Kõik asub /api/v1/ all. Versioon on teekonnas esimesest päevast alates, nii et v2 saab ühel päeval olemas olla ilma, et see lõhuks seda, mida Te täna kirjutate.

GET /api/v1/me

Konto, millele võti kuulub, ning võtme enda nimi ja prefiks. Eelkõige on see kasulik ühe asja jaoks: ütleb Teile, et selle keskkonna võti on see võti, milleks Te seda peate.

Näide

curl https://seonis.ai/api/v1/me \
  -H "Authorization: Bearer $SEONIS_API_KEY"
GET /api/v1/sites

Kõik konto saidid. id on see, mille järgi artikliloend filtreerib, ja domeen on olemas selleks, et build-skript saaks sobitada millegagi, mida ta juba teab, selle asemel et id-d kaasas kanda.

Näide

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

Lehekülg artikleid, uusim muudatus eespool, ilma sisuta. Järjestatud selle järgi, millal iga artiklit viimati muudeti, mitte millal see kirjutati, mis teeb updated_since kasulikuks: juba avaldatud artiklit saab hiljem muuta, kui sinna lisatakse link või see eemaldatakse.

Päringuparameetrid

Nimi Mida see teeb
site_id Üks sait, asukohast /sites. id, mida Teie kontol ei ole, annab vastuseks 404.
status Üks järgmistest: draft, qa, needs_repair, review, ready, published, failed. Kõik muu annab tühja lehe asemel 422. "ready" on see, mida build tahab: kirjutatud, kontrollitud ja veel mitte kusagil avaldatud.
updated_since ISO 8601, näiteks 2026-09-06T00:00:00Z. Jätke meelde oma viimase käivituse ajatempel ja saatke see järgmisel korral tagasi.
per_page Kuni 100. Vaikimisi on 25.
page Alates 1-st. meta.has_more ütleb, kas küsida järgmist.

Näide

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}

Üks artikkel koos kõigega, mille loend välja jätab: content_markdown, content_html, KKK schema.org JSON-LD-na, valmis lehele lisamiseks, ja kõik vahetuslingid, mida artikkel sisaldab.

Väljade nimed on meelega samad, mida meie webhook saadab. Kui Teil on juba webhooki vastuvõtja, loeb sama parser ka seda.

Näide

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

Te avaldate artikli; siin annate meile aadressi teada. See on ainus lõpp-punkt, mis midagi muudab.

See teeb täpselt sama, mida meie enda tehtud edastus: artikkel märgitakse avaldatuks, see arvestatakse Teie kuumahu sisse, plaani kirje suletakse, kõik selles olevad vahetuslingid saavad aadressi, mida kontrollija on oodanud, ja Teie Facebook Page'i teavitatakse, kui olete selle ühendanud. Ilma selle päringuta jääb artikkel igaveseks valmisolekusse ja midagi sellest ei juhtu.

Näide

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"}'

Vastused

200 Salvestatud. Artikkel tuleb tagasi oma uue staatuse, published_at ja published_url väärtustega.
422 URL puudub või ei ole täielik http:// või https:// aadress.
409 Artikkel ei ole avaldamiseks valmis või on juba avaldatuna kirjas. Artikkel tagastatakse koos keeldumisega, et saaksite näha, kumb neist kehtib.

Ühendage "REST API" oma avaldamismootorina.

Jaotises Settings, seejärel Publishing, on mootor nimega "REST API: Te toote ja avaldate". See ei küsi midagi, sest meil ei ole midagi saata. See muudab seda, mis juhtub igal hommikul: valmis artikkel jääb aadressita ootele ja avaldamise ekraan ütleb, et see ootab, et Te selle tooksite, selle asemel et näidata nurjunud edastust.

Saate API-t kasutada seda ühendamata: lõpp-punktid töötavad iga konto jaoks, millel on võti. Ühendamine annab ülejäänud tootele teada, et see ei peaks enam oma aadressi ootama, ja see hoiab ära selle, et Teie enda avaldatud artikkel loetaks nurjumiseks.

Iga tõrge on JSON koos teatega.

Läbivalt üks vorm, olenemata sellest, kas keeldumine tuli võtme kontrollist või validaatorilt, nii et midagi ei pea kahte vormi parsima.

{ "message": "That API key is not valid, or it has been revoked." }
Olek Mida see tähendab
401 Võti puudub, võti ei ole meie oma või võti on tühistatud.
404 Sellel kontol ei ole sellist artiklit ega saiti. Teise konto artikkel annab vastuseks 404, mitte 403: API, mis ütleb "see ei ole Teie oma", kinnitab, et see asi on olemas.
409 Päring oli korras, kuid artikkel ei ole selleks sobivas olekus.
422 Parameeter puudub või on vale. Vastus sisaldab errors-objekti, kus on välja nimi ja teade.
429 Üle päringulimiidi. Retry-After ütleb, kui kaua oodata.

Mida ehitusetapp tegelikult teeb.

#!/usr/bin/env bash
set -euo pipefail

# 1. What is finished and not yet on the site?
ready=$(curl -sG https://seonis.ai/api/v1/articles \
  -H "Authorization: Bearer $SEONIS_API_KEY" \
  -d site_id=5 -d status=ready -d per_page=100)

for id in $(echo "$ready" | jq -r '.articles[].id'); do
  # 2. Take the article, body and all.
  curl -s https://seonis.ai/api/v1/articles/$id \
    -H "Authorization: Bearer $SEONIS_API_KEY" \
    | jq -r '.article.content_markdown' > "content/posts/$id.md"

  # 3. Your build puts it live, and you know where it landed.
  slug=$(echo "$ready" | jq -r ".articles[] | select(.id==$id) | .slug")

  curl -s -X POST https://seonis.ai/api/v1/articles/$id/published \
    -H "Authorization: Bearer $SEONIS_API_KEY" \
    -H "Content-Type: application/json" \
    -d "{\"url\": \"https://peppervale.co.uk/blog/$slug\"}"
done

Looge võti ja proovige järele.

Prooviperioodist piisab API kasutamiseks: selle ajal kirjutatud artiklid on päris artiklid ja need tulevad nende lõpp-punktide kaudu tagasi nagu kõik teisedki.

Alustage tasuta prooviperioodi