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/brand-context |
Read positioning, ICP, target topics and competitors. |
PATCH |
/projects/:project_id/brand-context |
Edit positioning, ICP or target topics, add or edit competitors (by id, or by domain when no id is sent; an id lets you change the domain), and delete the domains listed in remove_competitors. |
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 a workflow's name, status, archived state, prompt, output schema, or field mapping. |
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/ai-visibility/evaluation-runs |
List AI visibility evaluation runs. Optional report_id filter. |
GET |
/projects/:project_id/ai-visibility/evaluation-runs/:id |
Get parsed prompt-by-engine results. |
GET |
/projects/:project_id/ai-visibility/evaluation-runs/:id/raw |
Get parsed results plus retained provider request/response data. Callback credentials are redacted. |
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.
AI visibility endpoints are read-only and return stored onboarding results; calling them does not launch provider work. Each run includes the ISO country_code and its model-specific engine_availability snapshot so unsupported engines are distinguishable from failed checks. The list accepts per_page from 1 to 100 and defaults to 25.
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.
Update a workflow
Send only the settings you want to change. The token needs write permission.
| Field | Effect |
|---|---|
name |
Renames the workflow. |
status |
draft or active. |
archived |
true archives the workflow. false restores it. |
prompt_template |
Replaces the full writing prompt on the process step. |
output_schema |
Replaces the full list of output fields on the process step. Send an array of field objects. Each object needs a slug. |
field_mapping |
Replaces the full destination mapping on the write step. Send an object whose keys are output field slugs and whose values are destination field slugs. An empty string leaves that output field unwritten. |
Read the current workflow first, edit the arrays and objects you get back, and send the complete result. A partial output_schema or field_mapping removes the fields you leave out.
curl https://evatype.com/api/v1/projects/proj_EXAMPLE/workflows/123 \
-X PATCH \
-H "Authorization: Bearer $EVATYPE_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"field_mapping":{"page-title":"page-title","intro-paragraph":"intro-paragraph","use-cases":""}}'
A malformed output_schema or field_mapping, or a workflow without the matching step, returns 422 and changes nothing.
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.