Auto Blogger
EN
Log in
Menu

Manage websites and the same settings you edit in the dashboard (Websites → your site → Settings). All routes require authentication; writes require websites:manage or integrations:manage.

Website identifiers in URLs are uuid values (not numeric database IDs).

List websites

GET /api/websites
Authorization: Bearer TOKEN

Query parameters

Parameter Description
site_url Optional. Normalized URL match (trailing slashes ignored). When provided, the response includes a matched object if a site on your account matches that URL—useful for WordPress and multi-site tooling.

Example response

{
  "data": [
    {
      "uuid": "550e8400-e29b-41d4-a716-446655440000",
      "url": "https://www.example.com",
      "label": "www.example.com",
      "sitemap_index_path": "/sitemap_index.xml",
      "post_permalink_structure": "/%postname%/",
      "enable_scheduled_generation": true,
      "recurrence": { "...": "recurrence rule payload" },
      "tone": "professional",
      "reading_level": "intermediate",
      "region_language": "UK English",
      "avoided_phrases": ["synergy", "leverage"],
      "legal_disclaimer": "This article is general information only.",
      "auto_publish": true,
      "generate_cover_images": true,
      "generate_audio": false,
      "audio_voice": "alloy",
      "feed_json_url": "https://auto-blogger.ai/feed/550e8400-e29b-41d4-a716-446655440000/json",
      "feed_rss_url": "https://auto-blogger.ai/feed/550e8400-e29b-41d4-a716-446655440000/rss.xml"
    }
  ],
  "matched": null,
  "site_url": null
}

When site_url matches:

{
  "data": [ "..." ],
  "matched": { "uuid": "550e8400-e29b-41d4-a716-446655440000", "...": "..." },
  "site_url": "https://www.example.com"
}

Create a website

POST /api/websites
Authorization: Bearer TOKEN
Content-Type: application/json

{
  "url": "https://new-site.example.com"
}
Field Rules
url Required. Valid HTTP/HTTPS URL; normalized (trailing slash handling) before storage.

Billing: creation follows the same rules as the dashboard—the account must be allowed to add another website (active subscription or billing exempt).

Responses

  • 201 Created — new site; body includes "created": true and full data settings object.
  • 200 OK — site already exists for that URL on the account; "created": false and existing data.

New sites inherit generate_cover_images from the account default. A background sitemap fetch starts automatically (same as dashboard create).

Get one website

GET /api/websites/{uuid}
Authorization: Bearer TOKEN

Returns { "data": { ... } } with the full settings object (same fields as list).

Update settings

PATCH /api/websites/{uuid}
Authorization: Bearer TOKEN
Content-Type: application/json

Send only fields you want to change. Omitted fields are left unchanged.

Site details

Field Type Notes
url string Must not redirect to a different registrable domain (same rule as dashboard). Changing URL retriggers sitemap discovery.
sitemap_index_path string or null e.g. /sitemap_index.xml
post_permalink_structure string or null WordPress-style structure; null inherits account default. Validated with the same rules as the dashboard.

Brand voice

Field Type Allowed values
tone string or null professional, conversational, authoritative, friendly, technical
reading_level string or null simple, intermediate, advanced
region_language string or null e.g. UK English, US English (see dashboard select options)
avoided_phrases array of strings or null Phrases the AI should not use
legal_disclaimer string or null Max 1000 characters

Empty strings for voice fields are stored as null (inherit account defaults in generation).

Scheduled generation

Field Type Notes
enable_scheduled_generation boolean When false, recurrence is cleared.
recurrence object or null Schedule rule (same JSON shape as saved from the dashboard). Required when you set enable_scheduled_generation to true in the same request.

Content generation

Field Type Notes
generate_cover_images boolean When set to false, auto_publish is forced to false.
generate_audio boolean Enables audio narration for new posts
audio_voice string alloy, echo, fable, onyx, nova, shimmer
auto_publish boolean Only meaningful when cover images are generated

Social cross-posting

When social cross-posting is available for your account, responses also include:

Field Type Notes
cross_post_enabled boolean
cross_post_platforms array of strings or null facebook, instagram, x, linkedin
social_image_template string Template enum value from dashboard

These fields appear in responses only when the feature is enabled; omit them from PATCH requests if your account does not use cross-posting.

Example — enable weekly generation and brand tone

curl -sS -X PATCH \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "tone": "friendly",
    "reading_level": "intermediate",
    "enable_scheduled_generation": true,
    "recurrence": {
      "frequency": "WEEKLY",
      "interval": 1,
      "start_date": "2026-01-01 09:00:00",
      "by_day": ["MO", "WE", "FR"],
      "timezone": "Europe/London",
      "end_type": "never"
    },
    "auto_publish": true,
    "generate_cover_images": true
  }' \
  https://auto-blogger.ai/api/websites/550e8400-e29b-41d4-a716-446655440000

Use the recurrence object format produced by the dashboard when copying a working schedule.

Example — permalink override

{
  "post_permalink_structure": "/%year%/%monthnum%/%postname%/"
}

Delete a website

DELETE /api/websites/{uuid}
Authorization: Bearer TOKEN

Returns 204 No Content on success. Deletes cascade related content (topics, posts, integrations, etc.). Subscription quantity sync runs for billable accounts (same as dashboard delete).

Requires Owner or Admin on the account.

Settings payload reference

Read responses always include:

Field Description
uuid Public identifier for URLs and webhooks
url Canonical site URL
label Hostname or URL for display
feed_json_url / feed_rss_url Public feeds (feeds guide)
enable_scheduled_generation Derived: true when recurrence is not null

Related