Skip to content

Connector REST API Overview for Developers

The SEOvault AI WordPress plugin provides a REST API for the web app and external integrations to manage SEO data, content, and settings. This API uses the seovaultai/v1 namespace and requires site key authentication.

All endpoints use the WordPress REST API base URL with the SEOvault namespace:

https://yoursite.com/wp-json/seovaultai/v1/

The API uses site key authentication. Include the site key in the X-Site-Key header:

X-Site-Key: your-site-key-here

The plugin supports three key types with different permission levels:

  • Legacy key — Original site key (full access)
  • Read key — Read-only access to data
  • Write key — Full read and write access

Keys are resolved using timing-safe comparison for security. The plugin checks keys in order: legacy → read → write.

Terminal window
curl -X GET https://yoursite.com/wp-json/seovaultai/v1/posts \
-H "X-Site-Key: your-site-key-here"

The API implements CORS with an allowlist for cross-origin requests from the web app.

Allowed origins are configured in the plugin. Responses include:

  • Access-Control-Allow-Origin — Allowed origin (if allowlisted)
  • Access-Control-Allow-MethodsGET, POST, OPTIONS
  • Access-Control-Allow-HeadersAuthorization, Content-Type, X-Site-Key
  • Access-Control-Max-Age3600

OPTIONS requests to the namespace are handled automatically for CORS preflight.

Verify the site connection and key validity.

Authentication: Requires site verify capability

Response: Site verification status

List posts with pagination.

Authentication: Site key required

Query parameters:

  • per_page — Number of results per page (default: 20)
  • page — Page number (default: 1)

Response: Array of post objects with SEO metadata

Create a new post.

Authentication: Site key required

Body: Post data including title, content, and SEO fields

Response: Created post object

Get a single post by ID.

Authentication: Site key required

Response: Post object with SEO metadata

Update a post by ID.

Authentication: Site key required

Body: Post data to update

Response: Updated post object

Restore a post to a previous revision.

Authentication: Site key required

Response: Restored post object

List pages with pagination.

Authentication: Site key required

Query parameters:

  • per_page — Number of results per page (default: 20)
  • page — Page number (default: 1)

Response: Array of page objects

Get a single page by ID.

Authentication: Site key required

Response: Page object with SEO metadata

Update a page by ID.

Authentication: Site key required

Body: Page data to update

Response: Updated page object

Restore a page to a previous revision.

Authentication: Site key required

Response: Restored page object

List categories.

Authentication: Site key required

Response: Array of category objects

List media library items with pagination.

Authentication: Site key required

Query parameters:

  • per_page — Number of results per page (default: 20)
  • page — Page number (default: 1)

Response: Array of media objects

Upload a media file.

Authentication: Site key required

Body: File data

Response: Uploaded media object

Configure IndexNow settings.

Authentication: Site key required

Body: IndexNow configuration

Response: Configuration status

Get IndexNow status.

Authentication: Site key required

Response: IndexNow status object

Submit URLs to IndexNow.

Authentication: Site key required

Body: URLs to submit

Response: Submission status

Proxy sitemap requests through the API.

Authentication: Site key required

Query parameters:

  • path — Sitemap path (required, validated)

Response: Sitemap XML content

Get SEO capabilities and feature availability.

Authentication: Site key required

Response: Capabilities object

Inject image alt text into a post.

Authentication: Site key required

Body: Image alt data

Response: Updated post object

Inject AEO snippet into a post.

Authentication: Site key required

Body: AEO snippet data

Response: Updated post object

Get internal links manifest.

Authentication: Site key required

Response: Internal links manifest

Sync internal links with optional filtering.

Authentication: Site key required

Query parameters:

  • cursor — Pagination cursor
  • since — Filter by date
  • limit — Number of results
  • types — Post type filter
  • includeBodyPhrases — Include body phrases

Response: Internal links sync data

Get AI visibility status.

Authentication: Site key required

Response: AI visibility status object

Get llms.txt publishing status.

Authentication: Site key required

Response: llms.txt status

Preview llms.txt content.

Authentication: Site key required

Body: llms.txt configuration

Response: Preview content

Publish llms.txt.

Authentication: Site key required

Body: llms.txt configuration

Response: Publish status

Get robots.txt modification status.

Authentication: Site key required

Response: Robots.txt status

Preview robots.txt modifications.

Authentication: Site key required

Body: Robots.txt rules

Response: Preview content

Apply robots.txt modifications.

Authentication: Site key required

Body: Robots.txt rules

Response: Apply status

Restore original robots.txt.

Authentication: Site key required

Response: Restore status

Get schema status.

Authentication: Site key required

Response: Schema status object

Preview schema markup.

Authentication: Site key required

Body: Schema configuration

Response: Preview schema JSON-LD

Inject schema markup into a post.

Authentication: Site key required

Body: Schema data

Response: Injection status

Get crawler logging status.

Authentication: Site key required

Response: Crawler logs status

Enable crawler logging.

Authentication: Site key required

Response: Enable status

Disable crawler logging.

Authentication: Site key required

Response: Disable status

Get crawler log entries.

Authentication: Site key required

Response: Array of crawler log entries

Get import summary from other SEO plugins.

Authentication: Site key required

Response: Import summary with available data counts

Import SEO data from other plugins.

Authentication: Site key required

Body: Import configuration

Response: Import status and results

Errors return standard WordPress REST API error format:

{
"code": "error_code",
"message": "Error message",
"data": { "status": 401 }
}

Common error codes:

  • 401 — Authentication failed (invalid or missing site key)
  • 403 — Forbidden (insufficient permissions)
  • 404 — Resource not found
  • 400 — Bad request (invalid parameters)

The plugin implements rate limiting on API endpoints to prevent abuse. Rate limits are enforced per site key and tracked using WordPress transients.

Write operations (POST, PUT, PATCH, DELETE) are logged to the audit log for security and compliance. The log includes:

  • Timestamp
  • Endpoint
  • HTTP method
  • Request parameters
  • Site key type