brighter websites logoBrighter Websites Logo White

API and End points

Reference for SCOS REST endpoints and webhook URLs — documentation shell pending full API listing.

Integrations

Table Of Contents

Who is this for

Agency devs / future maintainers
Overview

Summary

This page will document SCOS REST API routes and related endpoints for custom integrations. There is no published endpoint catalogue yet — check Social Amplification technical docs for webhook payload examples until this reference is completed.

API reference placeholder — see Social Amplification Technical Documentation for webhook JSON examples in the meantime.

API and End points that codebase registers

Auth note: The token is the Brighter X API Token (brighter_api_token option), passed as header X-Brighter-Token (not brighter-x-token. )

Token is managed in Site Essentials → API Settings.


1. brighter-core/v1 — External / GPT / MCP

Base: /wp-json/brighter-core/v1/
Auth: X-Brighter-Token required on every route (Brighter_API_Auth::verify_token)
No per-endpoint on/off toggle — routes register automatically if the post type exists.

Content list endpoints (same shape for all)

RouteWhen availablePurpose
GET /postsAlways (if post exists)Paginated blog posts
GET /pagesAlwaysPaginated pages
GET /faqsIf faq CPT registeredPaginated FAQ posts
GET /our-workIf folio CPT exists (BW sites)Portfolio items
GET /kbIf kb CPT exists (BW)Knowledge base articles
GET /newsIf news CPT exists (BW)News articles
GET /projectIf projects CPT exists (GS)Project posts

Query params: pageper_page (max 10), status (publish / draft / any)

Response per item (Phase 1 — minimal, not full post body):

  • idtitleexcerpturlstatus
  • Plus pagination: totaltotal_pagescurrent_pageper_pagehas_more

Does not currently return full content, dates, featured image, categories, or SCOS fields on these list routes. A richer format_content_item() exists in code but is unused.


GET /scos

Purpose: CAR / strategy data for a single post or page (mirrors window.brighterSCOS).

Query: url (path or full URL) or post_id

Sample fields (~5):

  • car.clustercar.topiccar.intentcar.purposecar.maturity
  • Special extras: pillarservice_pathwaycontent_plangoogle_index_statussearch_intent_goalcar.metrics (word count, reading time, link counts), tracking.ga4_id

Uses legacy bw_* meta keys internally (not the newer scos_* keys everywhere).


Social amplification + image routes (same namespace, same token)

RouteMethodPurpose
/social-amplification/inventoryGETAll publishable content for social workflows
/social-amplification/talking-pointsGETPost framing / talking point library
/social-amplification/content-typesGETContent type taxonomy list
/social-amplification/generate-promptGETStructured JSON for Make.com / AI caption pipeline
/social-amplification/create-shortlinkPOSTCreate YOURLS shortlink with UTM
/image-optimization/get-dataGETPost + image metadata for AI image optimisation

Sample data per route:

  • inventory — idtitleurlpost_typecontent_typedate
  • talking-points — namecontextexamplecta_exampleword_count_min/max
  • generate-prompt — source_materialsource_tldrframing_optionscontext (title/type/purpose/intent), count_h2
  • create-shortlink — returns shorturlkeyworddestination_url (+ platform/format in request)
  • image-optimization/get-data — content (plain text), tldrfeatured_imageattached_images (url, alt, dimensions, caption)

2. bw-social/v1 — Internal amplification pipeline

Auth: secret param must match bw_social_webhook_secret — not X-Brighter-Token.

RouteMethodPurpose
/amplifyPOSTRun amplification pipeline for one post
/backfillPOSTBatch amplify projects posts by IDs or date range

Params: post_id + secret (amplify); secret + post_ids or date_from/date_to + limit (backfill)

Returns: pipeline result — scheduled posts, errors per post, etc.

Used by Publish_Hook loopback and admin backfill UI.


3. site-essentials/v1 — Editor-only (Gutenberg / meta box)

Auth: current_user_can('edit_posts') — WP session, not X-Brighter-Token.
Explicitly not for external API consumers.

RouteMethodPurpose
/faqsGETAll published FAQs for FAQ Selector block
/faqsPOSTCreate draft stub FAQ from Content Architecture intent-goal picker
/faqs/searchGETKeyword search (?q=?context=intent_goal includes drafts)

FAQ item fields: idquestion/titleanswerschema_answertopicstatusedit_urlincomplete


4. Not REST, but public URL endpoints (SEO module)

URLPurpose
/sitemap.xmlSCOS sitemap index
/sitemap-{posttype}.xmlPer post-type sitemaps
/llms.txtVirtual LLM instructions file (if enabled)
/robots.txtCustom robots (if enabled)

These are rewrite/virtual-file routes, not register_rest_route.


5. Reserved namespaces (whitelisted, no routes in code)

Tweaks module whitelists these for unauthenticated access when REST is locked down:

  • /wp-json/brighter/
  • /wp-json/brighter-x/

No register_rest_route calls exist for either namespace yet — placeholders only.


6. Endpoint restrictions — WordPress Tweaks module

Site Essentials → WordPress Tweaks (not a separate “perf module”, but includes performance + security groups).

Security tweaks that affect API access

ToggleEffect
Restrict REST API to Logged-In Users (disable_rest_api)Returns 401 for all unauthenticated REST requests except whitelisted prefixes: /wp-json/wc//wp-json/brighter//wp-json/brighter-core//wp-json/brighter-x/
Restrict REST API Users Endpoint (restrict_rest_users)Removes /wp/v2/users for unauthenticated requests
Disable Inbound Embeds (disable_embeds_inbound)Removes WordPress oEmbed REST route (wp_oembed_register_route)
Remove REST API Discovery Links (remove_rest_api_links)Strips <link rel="https://api.w.org/"> from <head> — cosmetic, doesn’t block endpoints
Disable XML-RPCBlocks /xmlrpc.php POST requests

Important gap

When Restrict REST API is on:

  • brighter-core/v1/* stays reachable (whitelisted) — still needs X-Brighter-Token at route level
  • bw-social/v1/* and site-essentials/v1/* are not whitelisted → unauthenticated loopback/internal calls to amplify/backfill would get 401 before the secret check runs

What you cannot configure per endpoint

  • No admin toggle to enable/disable individual brighter-core/v1 routes
  • Optional routes (/our-work/kb/news/project) appear only when the CPT is registered on that site
  • Token generate/delete is the only API access gate (brighter_api_token)

7. Stale docs to be aware of

site-essentials/Views/settings-api.php lists under brighter-core/v1:

  • GET /faqs/search — actually lives at site-essentials/v1/faqs/search (editor auth)
  • GET /faqs/export — not implemented anywhere in the codebase

Quick reference — auth by namespace

NamespaceAuth
brighter-core/v1X-Brighter-Token
bw-social/v1secret body param
site-essentials/v1Logged-in editor (edit_posts)
wp/v2/*WP default (cookie/app password) — subject to Tweaks restrictions
brighter/brighter-x/Reserved — nothing registered yet

If you want this turned into a maintained spec doc or want the Tweaks whitelist updated to include bw-social/v1, switch to Agent mode and I can do that.

Want to Contribute to SCOS?

SCOS is a Strategic Content Operating System - learn more or contact us on support@brighterwebsites.com.au.

Work with me

Hit submit and I’ll reach out by email or phone to help you get started. Your details stay private,  see the Privacy Policy.