REST API

Authenticate with Evatype and use the v1 API for projects, ideas, workflows, runs, and content entries.

Base URL

All customer API routes use this base URL:

https://evatype.com/api/v1

Requests and responses use JSON.

Authentication

Send a bearer token with every request:

Authorization: Bearer YOUR_TOKEN

Open API tokens in your Evatype account to create or manage an API token. Interactive clients can use OAuth 2.1 access tokens instead. Both token types use the same permission checks.

A token with read access can call GET endpoints. Write access is required for ideas, generation, workflow updates, schedules, and content entry writes. Missing or invalid authentication returns 401; insufficient permission returns 403.

Find a project ID

Start with:

curl https://evatype.com/api/v1/projects \
  -H "Authorization: Bearer $EVATYPE_API_TOKEN"

Project identifiers use the proj_... format. Use that identifier in project-scoped paths.

Endpoints

Method Path Purpose
GET /projects List projects.
GET /projects/:project_id/ideas List ideas. Use status=pending, archived, or all.
POST /projects/:project_id/ideas Add an idea.
GET /projects/:project_id/workflows List workflows.
GET /projects/:project_id/workflows/:id Get one workflow and its ordered steps.
PATCH /projects/:project_id/workflows/:id Update supported workflow settings.
GET /projects/:project_id/usage Read the current usage period and remaining pages.
GET /projects/:project_id/runs List recent generation runs.
GET /projects/:project_id/runs/:id Get a run and its items.
POST /projects/:project_id/runs Generate content from idea indices.
GET /projects/:project_id/run-items/:id Get one generated item.
PATCH /projects/:project_id/run-items/:id Set or remove its publication schedule.
GET /projects/:project_id/content-types List content types and field schemas.
GET /projects/:project_id/entries List published entries across content types.
GET /projects/:project_id/content-types/:slug/entries List published entries for one content type.
GET /projects/:project_id/content-types/:slug/entries/:entry_slug Get one entry.
POST /projects/:project_id/content-types/:slug/entries Create an entry.
PATCH /projects/:project_id/content-types/:slug/entries/:entry_slug Update an entry.

List endpoints that return entries accept page and per_page parameters.

Add an idea and start generation

Add an idea with a title or keyword, optional instructions, and a workflow ID:

curl https://evatype.com/api/v1/projects/proj_EXAMPLE/ideas \
  -X POST \
  -H "Authorization: Bearer $EVATYPE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title":"A guide to content operations","workflow_id":123,"description":"Write for a marketing operations lead."}'

List ideas and read the index value for the idea you want to process. Start a run with one or more indices:

curl https://evatype.com/api/v1/projects/proj_EXAMPLE/runs \
  -X POST \
  -H "Authorization: Bearer $EVATYPE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"idea_indices":[0]}'

The account's remaining page allowance can reduce the number of ideas accepted into a run.

Schedule a generated item

Set a future timestamp in ISO 8601 format. The value must include Z or an explicit UTC offset.

curl https://evatype.com/api/v1/projects/proj_EXAMPLE/run-items/456 \
  -X PATCH \
  -H "Authorization: Bearer $EVATYPE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"scheduled_publish_at":"2026-08-20T09:00:00+05:30"}'

Remove the schedule by sending null:

{"scheduled_publish_at": null}

The item must contain generated data and have an eligible destination. Invalid, past, or ineligible schedules return 422. A queue error returns 503 and does not save the requested time.

Create or update a content entry

Entry bodies use field_data, whose keys must follow the content type schema. status can be draft or published.

{
  "slug": "content-operations-guide",
  "status": "draft",
  "field_data": {
    "title": "A guide to content operations",
    "body_markdown": "## Introduction\n\nContent..."
  }
}

An entry update merges the submitted field_data into the existing data.

For AI-client access to the same product data, see the MCP guide.