Build AI agents that run real business processes
Evolus gives your agents workflows, document extraction, knowledge libraries and AI Tools, reachable through a REST API, an MCP server and an OpenAI-compatible chat endpoint. During the hackathon, event workspaces are free and run on your own model.
Event workspaces: created from the event link we publish on evolus.ai/en/hackathon at the kickoff on October 12 · free until November 15, 2026, 23:59 Italian time · no card required · teams of up to 6
- Agent chatOpenAI-compatiblehttps://api.evolus.ai/v1Authorization: Bearer <application API key>
- REST APIWorkflows · extractors · AI Tools · librarieshttps://api.evolus.ai/api/v1X-ApiKey + X-Application-Id, or X-User-ApiKey
- MCP serverTools for AI clientshttps://api.evolus.ai/mcpX-ApiKey + X-Application-Id, or X-User-ApiKey
- platform credits per event workspace
- 50,000
- API requests per event workspace
- 60 / min
- people in a team workspace
- Up to 6
- Fireworks AI or vLLM on AMD
- Your model
Get started in 5 minutes
From the event link to your first API call.
- 1
Wait for the event link
At the kickoff on October 12 we publish the event link on the hackathon page. Create your workspace only from that link: a workspace created earlier is not an event workspace.
Hackathon page - 2
Create your event workspace
Open the event link, sign in with GitHub, Google, Apple or Microsoft and create your team's free workspace.
- 3
Connect your model
Add your OpenAI-compatible endpoint, test the connection and pick it in your agent.
How to connect it - 4
Create an API key
Create an API key in your workspace and note your application ID: together they authenticate your calls.
- 5
Call your agent
List your agents with
GET /v1/models, then send a message.
curl https://api.evolus.ai/v1/chat/completions \
-H "Authorization: Bearer $EVOLUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "<applicationId>:<agentId>",
"messages": [{ "role": "user", "content": "Hello! What can you do for me?" }]
}'Bring your own model
In event workspaces, agents run on your team's model. Any OpenAI-compatible endpoint works; for the hackathon, both routes below accept AMD cloud credits. Pick a model that supports function calling: agents use tools.
Fireworks AI
Managed OpenAI-compatible API: nothing to deploy.
- Base URL
- https://api.fireworks.ai/inference/v1
- Model
- accounts/fireworks/models/<model>
- API key
- Your Fireworks API key
vLLM on AMD Developer Cloud
Your own GPU droplet serving an open model with vLLM.
- Base URL
- http://<droplet-ip>:8000/v1
- Model
- Qwen/Qwen2.5-7B-Instruct (the model you serve)
- API key
- The value you pass to
--api-key
Then, in Evolus
- 1Add your model in your workspace: base URL, model name and API key.
- 2Test the connection.
- 3Pick it in your agent.
- Tool calling on vLLM
--tool-call-parser hermesfits Qwen models. Other model families need a different parser: check the vLLM documentation for your model. - Protect your endpointWithout
--api-key, the vLLM endpoint is open to anyone who knows its address. - AMD cloud creditsRequest them from the AMD AI Developer Program. Approval takes 2-3 business days, so apply early.
- No Evolus creditsCalls to your own model don't use platform credits: your provider bills them.
# Check your key and model before adding them to Evolus
curl https://api.fireworks.ai/inference/v1/chat/completions \
-H "Authorization: Bearer $FIREWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "accounts/fireworks/models/<model>",
"messages": [{ "role": "user", "content": "Say hello" }]
}'Workflows: a whole process behind one API call
A workflow chains the steps of a real process (agents, document reading, extractors, AI Tools, conditions, loops and webhooks) and runs them on its own. Start it from your code, from an email inbox or on a schedule; the result is in the run, or on your webhook.
- 1Call
POST /api/v1/workflows/{workflowId}/executewith text and files, asmultipart/form-data. - 2Queued
Evolus answers
202 Acceptedwith theexecutionId, also in theX-Workflow-Execution-Idheader. - 3Result
Read
GET …/executions/{executionId}untilstatusisCompletedorFailed, or receive the result on your webhook.
Form fields
- input
- Text input of the run.
- file parts
- One or more files. With several files, the workflow runs once per file or once for all of them, as set in the workflow.
- parameters
- Flat JSON object with the parameters the workflow declares, e.g.
{"target_language":"German"}. Checked before the run starts. - callbackUrl
- Sends this run's result to your URL instead of the webhook set in the workflow (the workflow needs a Webhook step). Optional:
callbackMethod(POST,PUTorPATCH),callbackApiKey,callbackApiKeyName.
- Turn the workflow on before calling it: a workflow that is off answers
409 Conflict. - Webhook deliveries carry the
X-Workflow-Execution-IdandX-Workflow-Audit-Idheaders, so you can match them to the run. - Never send secrets as parameters: they are stored with the run.
# Start a run: text input plus one file (202 Accepted, the run is queued)
curl -X POST "https://api.evolus.ai/api/v1/workflows/$WORKFLOW_ID/execute" \
-H "X-ApiKey: $EVOLUS_API_KEY" \
-H "X-Application-Id: $EVOLUS_APP_ID" \
-F "input=New purchase order from ACME, please process it" \
-F "file=@order.pdf"
# Read the run: status is Pending, Running, Completed or Failed
curl "https://api.evolus.ai/api/v1/workflows/$WORKFLOW_ID/executions/$EXECUTION_ID" \
-H "X-ApiKey: $EVOLUS_API_KEY" \
-H "X-Application-Id: $EVOLUS_APP_ID"HTTP/1.1 202 Accepted
Content-Type: application/json; charset=utf-8
X-Workflow-Execution-Id: <executionId>
{
"jobId": "<jobId>",
"executionId": "<executionId>",
"enqueuedAt": "<UTC date and time>",
"traceId": "<traceId>"
}From any document to the exact data you need
An extractor reads PDFs, scans and images (with OCR) and returns data in the shape you define: JSON, CSV or plain text. Define the schema in your workspace, then call it from your code.
- Use
csvortextinstead ofjsonin the path for extractors with CSV or plain-text output. - Several documents in one call:
…/ask-files, with one file part per document. - Extra form fields are passed to the extractor as context.
- If the extractor has a webhook, the call is queued and the data goes to the webhook: add
?useWebhook=falseto get it in the response. - The
X-AskFile-Execution-IdandX-AskFile-Audit-Idresponse headers identify the run. Document reading uses platform credits.
# Synchronous: the response body is the extracted data, shaped by your schema
curl -X POST "https://api.evolus.ai/api/v1/agents/$AGENT_ID/json/$EXTRACTOR_ID/ask-file" \
-H "X-ApiKey: $EVOLUS_API_KEY" \
-H "X-Application-Id: $EVOLUS_APP_ID" \
-F "file=@invoice.pdf"11 ready-made AI Tools, one endpoint each
Everyday AI utilities for documents, text and recordings. No prompt to write: pick a tool, send text or a file, get the result. Files are processed in memory and never stored.
doc-structureDocument to structured data
Turns a document into JSON, CSV or XML ready for your code, or into just its skeleton.
format: json | csv | xml · content: data | structure
tablesTable extraction
Pulls tables out of documents or text and converts them without losing rows.
to: csv | json | markdown | html
translatefile outTranslation
Translates text, documents and recordings. PDF and Word files come back translated, with their layout.
target (required) · style: natural | literal | formal
anonymizefile outRedaction of personal data
Replaces personal data with placeholders. In PDFs the data is really removed from the file.
summarizeSummaries
Short, medium or long summaries of text, documents and recordings.
length: short | medium | long · style: prose | bullets
minutesMeeting minutes
Minutes from a recording or from notes: topics, decisions and action items.
emailEmail writing and replies
Writes an email from your notes, or the reply to the email you pass in secondaryText.
mode: write | reply · tone: formal | friendly | commercial | assertive
rewriteRewriting
Fixes mistakes, or rewrites text to be clearer, more formal or friendlier.
style: fix | clear | formal | friendly
simplifyPlain-language explanation
Explains legal, technical or bureaucratic text in simple words.
sentimentSentiment
A report on reviews, feedback or survey answers: overall mood, strengths, issues and suggestions.
compareCompare two texts
What really changes between two versions: send them in text and secondaryText (or file and secondaryFile).
Endpoints
- POST/api/v1/ai-tools/{tool}/run
JSON body
{ text, secondaryText, options }. Returns{ tool, output, creditsConsumed, truncated }. - POST/api/v1/ai-tools/{tool}/run-media
A document or an audio/video file in the multipart field
file. Same JSON back; for recordings, the transcript is insourceText. - POST/api/v1/ai-tools/{tool}/run-file
translateandanonymizeonly: a PDF, Word (.docx), TXT, MD or CSV file in, the same format out. The credits used are in theX-Credits-Consumedheader. - GET/api/v1/ai-tools
The catalog: inputs and allowed options of every tool.
- Options of
run-mediaandrun-filetravel in theoptionsquery parameter, as JSON. - Limits: documents up to 20 MB, audio and video up to 100 MB, 120,000 characters of text.
- PDF translation keeps the look of the page for Latin, Cyrillic and Greek scripts; PDFs over 60 pages are refused.
- AI Tools run on Evolus models and use platform credits.
# Text in, text out
curl -X POST https://api.evolus.ai/api/v1/ai-tools/translate/run \
-H "X-ApiKey: $EVOLUS_API_KEY" \
-H "X-Application-Id: $EVOLUS_APP_ID" \
-H "Content-Type: application/json" \
-d '{ "text": "Il pagamento è dovuto entro 30 giorni.", "options": { "target": "English" } }'
# Audio or video in, text out: meeting minutes from a recording
curl -X POST https://api.evolus.ai/api/v1/ai-tools/minutes/run-media \
-H "X-ApiKey: $EVOLUS_API_KEY" \
-H "X-Application-Id: $EVOLUS_APP_ID" \
-F "file=@meeting.mp3"
# File in, file out: real redaction of personal data in a PDF
curl -X POST https://api.evolus.ai/api/v1/ai-tools/anonymize/run-file \
-H "X-ApiKey: $EVOLUS_API_KEY" \
-H "X-Application-Id: $EVOLUS_APP_ID" \
-F "file=@contract.pdf" \
-o contract-redacted.pdfGive your agents your knowledge
Upload documents or import web pages into a library: Evolus indexes them, and the agents you attach the library to search it when they answer.
- Indexing runs in the background: the document comes back with
201 Createdand becomes searchable once indexed. - Set
languageto the language of the document (the default isit, Italian). - Supported formats and size limit:
GET /api/v1/memories/document-formats. import-urlreads only that page, with no crawling; pages built by JavaScript may have no text to index.- Indexing uses platform credits.
# Upload a document: it is indexed in the background (language=en for English text)
curl -X POST "https://api.evolus.ai/api/v1/memories/$LIBRARY_ID/documents?language=en" \
-H "X-ApiKey: $EVOLUS_API_KEY" \
-H "X-Application-Id: $EVOLUS_APP_ID" \
-F "file=@handbook.pdf"
# Import a web page (only that page, no crawling)
curl -X POST "https://api.evolus.ai/api/v1/memories/$LIBRARY_ID/documents/import-url" \
-H "X-ApiKey: $EVOLUS_API_KEY" \
-H "X-Application-Id: $EVOLUS_APP_ID" \
-H "Content-Type: application/json" \
-d '{ "title": "Return policy", "url": "https://example.com/returns" }'
# List the documents of the library and their indexing status
curl "https://api.evolus.ai/api/v1/memories/$LIBRARY_ID/documents" \
-H "X-ApiKey: $EVOLUS_API_KEY" \
-H "X-Application-Id: $EVOLUS_APP_ID"Agent chat, OpenAI-compatible
Point any OpenAI SDK at https://api.evolus.ai/v1 and talk to your Evolus agents. The agent brings its own model, instructions, tools and libraries.
Only agent chat is OpenAI-compatible. Workflows, extractors, AI Tools and libraries use the Evolus REST API at https://api.evolus.ai/api/v1.
- Authentication and model
Authorization: Bearer <application API key>. The model is<applicationId>:<agentId>:GET /v1/modelslists them. - Streaming
stream: truereturns Server-Sent Events that end withdata: [DONE]. - ConversationsEvery response has an
X-Conversation-Idheader. Send it back to continue: Evolus loads the history and processes only your last user message. Without it, the messages you send are used as context for a new conversation. - Messages and settingsMessage content is text (a string). Model settings come from the agent: request parameters such as
temperatureare not applied.
# The agents you can chat with: each "id" is a model, "<applicationId>:<agentId>"
curl https://api.evolus.ai/v1/models \
-H "Authorization: Bearer $EVOLUS_API_KEY"
# Stream the answer (Server-Sent Events, ends with "data: [DONE]").
# -D - prints the response headers too: keep X-Conversation-Id
curl -N -D - https://api.evolus.ai/v1/chat/completions \
-H "Authorization: Bearer $EVOLUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "<applicationId>:<agentId>",
"stream": true,
"messages": [{ "role": "user", "content": "Draft a reply to the latest customer email" }]
}'
# Next turn: send the id back and Evolus loads the history
curl https://api.evolus.ai/v1/chat/completions \
-H "Authorization: Bearer $EVOLUS_API_KEY" \
-H "Content-Type: application/json" \
-H "X-Conversation-Id: <conversation id>" \
-d '{
"model": "<applicationId>:<agentId>",
"messages": [{ "role": "user", "content": "Make it shorter" }]
}'Evolus as tools for any MCP client
The Evolus MCP server at https://api.evolus.ai/mcp lets AI assistants and coding agents work with your workspace through tools: agents, workflows, extractors, libraries and more.
- Use an application key (
X-ApiKey+X-Application-Id) or your user key (X-User-ApiKey, withX-Application-Idto choose the workspace). - The key needs MCP access: keys with granular permissions work on both REST and MCP.
- The name and format of the configuration file depend on your MCP client: this is the common shape for remote HTTP servers with headers.
{
"mcpServers": {
"evolus": {
"type": "http",
"url": "https://api.evolus.ai/mcp",
"headers": {
"X-ApiKey": "<application API key>",
"X-Application-Id": "<applicationId>"
}
}
}
}An AI coding agent, already connected to Evolus
Evolus Studio is the Evolus desktop app for macOS (Apple Silicon), Windows and Linux. An AI agent works inside your project with the Evolus tools already connected. In event workspaces it runs on your team's model, the one you connect under “Your models” in the workspace.
Limits and credits of event workspaces
What each event workspace gets during the hackathon.
requests per minute
60
per event workspace.
platform credits
50,000
per event workspace, valid until November 15, 2026, 23:59 Italian time.
what uses them
Credits
Document reading, AI Tools and library indexing.
your own model
Free
Calls to your model don't use platform credits.
When the credits run out, the calls that need them answer 402 Payment Required.
Event workspaces are covered by the Hackathon conditions.
API reference
The complete interactive API reference, with every endpoint, schema and error code, is inside every workspace.
Ready to build?
Read the quickstart now. At the kickoff on October 12 we publish the event link on the hackathon page: create your free workspace from there.