Skip to main content
The Public API exposes explicit, allowlisted Genseo operations. API keys stay project-bound; OAuth grants can list accessible projects and then operate on one explicit project per request.

Base URL

Authentication

Send an OAuth access token or project-bound API key as a Bearer token:
There is no cookie fallback. Ordinary browser-session JWTs are rejected. OAuth access tokens must target https://api.genseo.co/mcp.

Project matching

Most endpoints include projectId. It must match the API key’s project or a project available through the OAuth user’s current workspace memberships. Unauthorized project selection returns 403 project_forbidden and must not be retried with guessed IDs.

Endpoints

Identity

GET /me

Returns API-key metadata and its bound project, or OAuth authorization metadata plus accessible projects. OAuth responses require explicit project selection.
Example response:
Agents should call this endpoint before doing anything else.

Project

GET /project

Returns the project attached to the API key. OAuth clients use GET /projects and then GET /projects/{projectId}.

GET /projects/{projectId}

Returns the same project when projectId exactly matches the key’s project.

Keywords

GET /projects/{projectId}/keywords

Lists keywords for the project.

POST /projects/{projectId}/keywords

Adds a custom keyword.

POST /projects/{projectId}/keywords/generate

Starts keyword generation for the project. Generation may return 202 Accepted when work continues asynchronously.

POST /projects/{projectId}/keyword-metrics

Refreshes metrics for one or more keywords.

Posts

GET /projects/{projectId}/posts

Lists posts for the project.

POST /projects/{projectId}/posts

Creates a draft post.

GET /projects/{projectId}/posts/{postId}

Reads one post. The post must belong to the same project as the key.

PATCH /projects/{projectId}/posts/{postId}

Updates allowlisted fields on a post.
Agents should preserve existing content when patching. Read the post first, then send only intentional changes.

POST /projects/{projectId}/posts/{postId}/generate

Starts or queues content generation for a post.

POST /projects/{projectId}/posts/{postId}/publish

Publishes through the project’s configured integration. Agents should ask before publishing unless autonomous publishing is explicitly enabled by the user.

Integrations

GET /projects/{projectId}/integrations

Lists connected providers and readiness status.

POST /projects/{projectId}/integrations/{provider}/connect-url

Creates a provider connect URL when supported. The user may still need to complete OAuth or provider authorization in the browser.

GET /projects/{projectId}/integrations/{provider}/fields

Lists available provider fields for mapping.

POST /projects/{projectId}/integrations/{provider}/mapping

Saves field mapping.

Webhooks

GET /projects/{projectId}/webhooks

Lists webhooks.

POST /projects/{projectId}/webhooks

Creates a webhook endpoint.

DELETE /projects/{projectId}/webhooks/{webhookId}

Deletes a webhook. The webhook must belong to the key’s project.

Pagination

List endpoints support a conservative limit parameter where available. Clients should prefer small pages and retry 429 responses with backoff.

Response safety

Responses are allowlisted. The Public API does not return provider secrets, full API key hashes, internal database fields, billing internals, or workspace-wide data.

Audit and Issue lifecycle

Audit starts return 202 Accepted. Poll /audits/current; do not repeatedly start new Audits. Read an Issue’s recommendation and page evidence, fix the site through an authorized CMS or repository, mark only the fixed {issue_id,page_id} occurrences as done, and run one Recheck. A later Audit can reopen a recurrence.

AI visibility

Visibility endpoints are project-scoped. Read overview and prompt data before starting paid tracking runs.

GET /projects/{projectId}/visibility/overview

Returns KPIs, daily trend, competitors, cited sources, prompt summary, and setup progress for the requested period.

GET /projects/{projectId}/visibility/prompts

Lists active or archived prompts and latest mention, citation, and sentiment metrics where available.

POST /projects/{projectId}/visibility/prompts/{promptId}/track

Enqueues an external tracking run. Treat as potentially billable; confirm with the user before calling from an agent.

Brand data and Autopilot

Set {resource} to products, competitors, faqs, or ctas. Brand create requests accept at most 100 items and always bind them to the path’s project; IDs and project ownership cannot be supplied through the payload.
Autopilot updates accept only enabled, publish_interval_days, and publish_weekdays. OAuth writes require Agent Autonomy to have been enabled in the Genseo dashboard.

Rate limits

HTTP 429 uses code rate_limit_exceeded and includes Retry-After, RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset. Wait for Retry-After and then back off exponentially. Monthly plan quotas remain separate.