Base URL
Authentication
Send an OAuth access token or project-bound API key as a Bearer token:https://api.genseo.co/mcp.
Project matching
Most endpoints includeprojectId. 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.
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.
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 conservativelimit 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 return202 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.
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.