Pieteikties Sākt bezmaksas izmēģinājuma periodu

Paņemiet savus rakstus.
Publicējiet tos savā veidā.

Katru rakstu, ko Jums uzrakstām, var nolasīt pa HTTP: virsrakstu, metadatus, Markdown, HTML, galveno attēlu un BUJ. Kad darbojas Jūsu būve, paņemiet tos savā Next.js, Astro vai pielāgotajā vietnē, publicējiet un paziņojiet mums adresi, kur katrs no tiem nonāca.

Viens bearer token. JSON iekšā, JSON ārā. Nav jāinstalē SDK un nav ko konfigurēt, izņemot atslēgu.

Webhook nosūta. API ļauj Jums saņemt.

Tie pārraida to pašu rakstu tajā pašā formā, tāpēc parsētājs, kas rakstīts vienam, nolasīs otru bez izmaiņām. Atšķirība ir tajā, kurš sāk saziņu.

Webhook, ja Jūsu vietne var pieņemt ziņu jebkurā laikā

Mēs izsaucam Jūsu galapunktu brīdī, kad raksts ir gatavs, un vēlreiz, kad tas mainās. Nekas nav periodiski jāpārbauda, nekas nav jāplāno. WordPress, Shopify, Ghost, Zapier trigeris vai maršruts, ko Jūs uzrakstījāt pats.

API, ja Jūsu vietne tiek veidota un izvietota kā vienots veselums

Statiskā vietne nevar pieņemt ierakstu pussešos no rīta, vispirms kaut kam ir jāpārbūvējas. Tāpēc Jūsu būve pajautā, kas gaida, paņem to un pēc tam paziņo mums adresi. Jūs izvēlaties, kad.

Abus, ja vēlaties

Tie ir atsevišķi savienojumi, un neviens neizslēdz otru. Webhook, kas padod saturu jaunumu vēstulei, un API, kas padod saturu vietnei, ir parasts risinājums.

Viena atslēga, nosūtīta kā bearer token.

Izveidojiet atslēgu vadības panelī sadaļā Settings, pēc tam Connections. Tā tiek parādīta vienu reizi, kad tā tiek izveidota, jo tiek glabāta tikai tās jaucējvērtība: ja to pazaudējat, atsauciet to un izveidojiet citu. Atslēga nolasa visas vietnes kontā, un to atsauc tajā pašā ekrānā.

Katrs pieprasījums

Authorization: Bearer sns_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept: application/json

Pārbaudiet, vai tas darbojas

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
}

Ātruma limits

120 pieprasījumi minūtē, skaitīti pēc atslēgas, nevis pēc adreses, no kuras tie nāk, jo būvēšanas izpildītāji koplieto adreses. Virs tā saņemsiet 429 ar standarta Retry-After un X-RateLimit galvenēm. Rakstu paņemšana būvei ir daži pieprasījumi, tāpēc tas nav limits, ko Jūs nejauši sasniegsiet.

Neturiet atslēgu savā repozitorijā

Tā nolasa visu, ko esam uzrakstījuši Jūsu kontam, arī rakstus, kas vēl nav publicēti. Glabājiet to savā būves vidē, nevis pirmkodā. Atsauciet to šeit tajā pašā brīdī, kad tā nonāk tur, kur tai nevajadzētu būt, un viss, kas to izmanto, uzreiz saņems 401.

Tās ir piecas, un četras ir tikai lasīšanai.

Viss atrodas zem /api/v1/. Versija ir ceļā jau no pirmās dienas, tāpēc kādu dienu var pastāvēt v2, nesalaužot to, ko rakstāt šodien.

GET /api/v1/me

Konts, kuram atslēga pieder, un pašas atslēgas nosaukums un prefikss. Tas galvenokārt ir noderīgi vienam: lai pateiktu Jums, ka atslēga šajā vidē ir tā atslēga, par kuru Jūs domājat.

Piemērs

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

Katra vietne kontā. id ir tas, pēc kā filtrē rakstu saraksts, un domēns ir tur, lai būves skripts varētu salāgot pēc kaut kā, ko tas jau zina, nevis nest līdzi id.

Piemērs

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

Rakstu lapa, visjaunākās izmaiņas vispirms, bez satura. Sakārtots pēc tā, kad katrs raksts pēdējo reizi mainīts, nevis kad tas tika uzrakstīts, un tieši tāpēc updated_since ir noderīgs: jau publicētu rakstu var vēlāk rediģēt, kad tajā tiek ievietota saite vai atkal izņemta.

Vaicājuma parametri

Nosaukums Ko tas dara
site_id Viena vietne no /sites. id, kas nav Jūsu kontā, atbild ar 404.
status Viens no draft, qa, needs_repair, review, ready, published, failed. Jebkas cits dod 422, nevis tukšu lapu. "ready" ir tas, ko būve vēlas: uzrakstīts, pārbaudīts un vēl nekur nav publicēts.
updated_since ISO 8601, piemēram, 2026-09-06T00:00:00Z. Atcerieties sava pēdējā izpildes laika zīmogu un nododiet to atpakaļ nākamajā reizē.
per_page Līdz 100. Noklusējuma vērtība ir 25.
page No 1. meta.has_more norāda, vai jāpieprasa nākamā.

Piemērs

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}

Viens raksts ar visu, ko saraksts izlaiž: content_markdown, content_html, BUJ kā schema.org JSON-LD, gatavs ievietošanai lapā, un visas apmaiņas saites, kas ir rakstā.

Lauku nosaukumi ir tie, kurus mūsu webhook sūta apzināti. Ja Jums jau ir webhook saņēmējs, tas pats parsētājs nolasīs arī šo.

Piemērs

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

Jūs publicējat rakstu; šeit Jūs mums norādāt adresi. Tas ir vienīgais galapunkts, kas kaut ko maina.

Tas dara tieši to pašu, ko piegāde, ko veicām paši: raksts tiek atzīmēts kā publicēts, tas tiek ieskaitīts Jūsu mēneša limitā, plāna vienība tiek aizvērta, visas tajā esošās apmaiņas saites saņem adresi, ko pārbaudītājs ir gaidījis, un Jūsu Facebook lapa tiek informēta, ja esat to pievienojis. Bez šī izsaukuma raksts paliek gatavs uz visiem laikiem, un nekas no tā nenotiek.

Piemērs

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

Atbildes

200 Reģistrēts. Raksts atgriežas ar savu jauno statusu, published_at un published_url.
422 Trūkst URL vai tā nav pilna http:// vai https:// adrese.
409 Raksts nav gatavs publicēšanai vai jau ir reģistrēts kā publicēts. Raksts tiek atgriezts kopā ar atteikumu, lai Jūs varētu redzēt, kurš tas ir.

Pievienojiet "REST API" kā savu publicēšanas dzini.

Sadaļā Iestatījumi, pēc tam Publicēšana, ir dzinis ar nosaukumu "REST API: Jūs saņemat un publicējat". Tas neko neprasa, jo mums nav ko sūtīt. Tas maina to, kas notiek katru rītu: pabeigts raksts paliek gatavs bez adreses, un publicēšanas ekrānā ir norādīts, ka tas gaida, kad Jūs to saņemsiet, nevis tiek rādīta neveiksmīga piegāde.

Jūs varat izmantot API, to nepieslēdzot: galapunkti darbojas jebkuram kontam ar atslēgu. Pieslēgšana ļauj pārējai produkta daļai saprast, ka tai vairs nav jāgaida sava adrese, un tā neļauj Jūsu paša publicētam rakstam tikt uzskaitītam kā kļūmei.

Katra kļūda ir JSON ar ziņojumu.

Viena forma visur, neatkarīgi no tā, vai atteikums nāca no atslēgas pārbaudes vai no validatora, tāpēc nekam nav jāparsē divas.

{ "message": "That API key is not valid, or it has been revoked." }
Statuss Ko tas nozīmē
401 Nav atslēgas, atslēga nav mūsu vai atslēga ir atsaukta.
404 Šajā kontā nav šāda raksta vai vietnes. Cita konta raksts atbild ar 404, nevis 403: API, kas saka "tas nav Jūsu", ir apstiprinājis, ka šī lieta pastāv.
409 Pieprasījums bija derīgs, bet raksts nav tam atbilstošā stāvoklī.
422 Trūkst parametra vai tas ir nepareizs. Atbildē ir errors objekts ar lauka nosaukumu un ziņojumu.
429 Pārsniegts ātruma limits. Retry-After norāda, cik ilgi jāgaida.

Ko būvēšanas solis patiesībā dara.

#!/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

Izveidojiet atslēgu un izmēģiniet to.

Izmēģinājuma periods ir pietiekams, lai izmantotu API: tā laikā uzrakstītie raksti ir īsti raksti, un tie tiek atgriezti caur šiem galapunktiem tāpat kā jebkuri citi.

Sākt bezmaksas izmēģinājuma periodu