API reference
Every route of the Everdeck API with its scope, parameters and answer, and every object it returns.
This page lists everything the Everdeck API does. To start, read Using the Everdeck API: it explains making a token on the API tokens page, scopes, paging, retries and errors.
Every address below follows https://app.everdeck.io/api/v1. Send your token in the Authorization header as
Bearer edpat_.... The same reference as an OpenAPI document, for code generators and API tools, is at
https://app.everdeck.io/api/v1/openapi.json.
This is version 1 of the API. Everdeck keeps it working for the uses this page describes, and gives at
least 6 months' notice before a change that breaks one of them, unless the change is needed sooner for
security or by law (section 2.5 of our Terms of Service). A token can make
600 requests a minute, and all the tokens in an account 1,200
between them; over that, the answer is 429 with a Retry-After header. Everdeck's
MCP server is part of the API: it takes the same tokens, and its requests count toward the
same limits.
Your token and account
The token, its person and its account
GET /me, any token.
Answers 200: Me.
The companies this token reaches
GET /companies, any token.
The companies the token names (or all of its person's), that its person opens with a console role, by name.
| Parameter | In | Type | Description |
|---|---|---|---|
limit |
query | integer | How many to return: 50 unless asked, at most 100. |
cursor |
query | string or null | The next_cursor of the previous page, to read the next one. |
Answers 200: CompanyPage.
Tasks
List tasks
GET /companies/{company_id}/tasks, scope tasks:read.
The company's tasks, most recently changed first. To keep a copy in step, list with updated_since set to when the previous pass began.
| Parameter | In | Type | Description |
|---|---|---|---|
company_id |
path | uuid | |
status |
query | string or null | Comma-separated statuses, or open or closed. |
assignee |
query | string or null | me, none, member:<user id> or agent:<agent id>. |
label |
query | string or null | |
updated_since |
query | date-time or null | Only tasks changed at or after this time. |
limit |
query | integer | How many to return: 50 unless asked, at most 100. |
cursor |
query | string or null | The next_cursor of the previous page, to read the next one. |
Answers 200: TaskPage.
Create a task
POST /companies/{company_id}/tasks, scope tasks:write.
A new task, assigned to a person or an agent of the company (or no one). An open task with the same title and assignee is answered instead (200, created: false), and file_ids are then added to it. file_ids are your own uploads (POST /companies/{company_id}/files) not attached yet, at most 10.
| Parameter | In | Type | Description |
|---|---|---|---|
company_id |
path | uuid |
Body: TaskCreateIn, as JSON.
Answers 200: TaskCreated; 201: TaskCreated.
Takes an Idempotency-Key header.
Get a task
GET /companies/{company_id}/tasks/{task_id}, scope tasks:read.
| Parameter | In | Type | Description |
|---|---|---|---|
task_id |
path | uuid | |
company_id |
path | uuid |
Answers 200: Task.
Update a task
PATCH /companies/{company_id}/tasks/{task_id}, scope tasks:write.
Change a task's title, description, labels or due date. Only the fields sent change.
| Parameter | In | Type | Description |
|---|---|---|---|
task_id |
path | uuid | |
company_id |
path | uuid |
Body: TaskUpdateIn, as JSON.
Answers 200: Task.
Comment on a task
POST /companies/{company_id}/tasks/{task_id}/comments, scope tasks:write.
Add a comment to the task's thread. Mention someone as @[Name](member:<user id>). Attach your own uploads with file_ids; a comment with files may leave out body, and then says which files it brings.
| Parameter | In | Type | Description |
|---|---|---|---|
task_id |
path | uuid | |
company_id |
path | uuid |
Body: CommentIn, as JSON.
Answers 201: Comment.
Takes an Idempotency-Key header.
Cancel a task
POST /companies/{company_id}/tasks/{task_id}/cancel, scope tasks:write.
Close an open task without finishing it, with every open subtask below it.
| Parameter | In | Type | Description |
|---|---|---|---|
task_id |
path | uuid | |
company_id |
path | uuid |
Body: CancelIn, as JSON.
Answers 200: Task.
Takes an Idempotency-Key header.
Agents
List agents
GET /companies/{company_id}/agents, scope agents:read.
The company's agents by name, decommissioned ones included.
| Parameter | In | Type | Description |
|---|---|---|---|
company_id |
path | uuid | |
limit |
query | integer | How many to return: 50 unless asked, at most 100. |
cursor |
query | string or null | The next_cursor of the previous page, to read the next one. |
Answers 200: AgentPage.
Get an agent
GET /companies/{company_id}/agents/{agent_id}, scope agents:read.
| Parameter | In | Type | Description |
|---|---|---|---|
agent_id |
path | uuid | |
company_id |
path | uuid |
Answers 200: Agent.
Pause an agent
POST /companies/{company_id}/agents/{agent_id}/pause, scope agents:write.
Stop an agent until a person resumes it. Pausing a paused agent changes nothing.
| Parameter | In | Type | Description |
|---|---|---|---|
agent_id |
path | uuid | |
company_id |
path | uuid |
Body (optional): AgentNoteIn or null, as JSON.
Answers 200: Agent.
Takes an Idempotency-Key header.
Resume an agent
POST /companies/{company_id}/agents/{agent_id}/resume, scope agents:write.
Put a paused agent back to work, whoever paused it. It takes a slot of the plan's active agents.
| Parameter | In | Type | Description |
|---|---|---|---|
agent_id |
path | uuid | |
company_id |
path | uuid |
Body (optional): AgentNoteIn or null, as JSON.
Answers 200: Agent.
Takes an Idempotency-Key header.
Folios
List folios
GET /companies/{company_id}/folios, scope folios:read.
The folios the token's person can see, most recently changed first.
| Parameter | In | Type | Description |
|---|---|---|---|
company_id |
path | uuid | |
kind |
query | one of: chart, dashboard, report, plan, timeline, roadmap, notice, announcement, presentation, demo, prototype, app, other or null | |
task |
query | uuid or null | |
agent |
query | uuid or null | Folios this agent made. |
q |
query | string or null | |
limit |
query | integer | How many to return: 50 unless asked, at most 100. |
cursor |
query | string or null | The next_cursor of the previous page, to read the next one. |
Answers 200: FolioPage.
Create a folio
POST /companies/{company_id}/folios, scope folios:write.
A new folio from a page of HTML, private or seen by the whole company.
| Parameter | In | Type | Description |
|---|---|---|---|
company_id |
path | uuid |
Body: FolioCreateIn, as JSON.
Answers 201: FolioDetail.
Takes an Idempotency-Key header.
Get a folio
GET /companies/{company_id}/folios/{folio_id}, scope folios:read.
A folio with its kept versions and who it is shared with.
| Parameter | In | Type | Description |
|---|---|---|---|
folio_id |
path | uuid | |
company_id |
path | uuid |
Answers 200: FolioDetail.
Get a folio's page
GET /companies/{company_id}/folios/{folio_id}/content, scope folios:read.
The HTML of the folio's current version (or version), as a download.
| Parameter | In | Type | Description |
|---|---|---|---|
folio_id |
path | uuid | |
company_id |
path | uuid | |
version |
query | integer or null | A kept version; the current one when left out. |
Answers 200: the page's HTML.
Add a version to a folio
POST /companies/{company_id}/folios/{folio_id}/versions, scope folios:write.
A new current version from a page of HTML. It reads the same live data the current version reads.
| Parameter | In | Type | Description |
|---|---|---|---|
folio_id |
path | uuid | |
company_id |
path | uuid |
Body: FolioVersionIn, as JSON.
Answers 201: FolioDetail.
Takes an Idempotency-Key header.
Share a folio
PUT /companies/{company_id}/folios/{folio_id}/sharing, scope folios:write.
Private or the whole company, and people and agents of the company by name, to view or to edit. Making it public stays in the app.
| Parameter | In | Type | Description |
|---|---|---|---|
folio_id |
path | uuid | |
company_id |
path | uuid |
Body: FolioSharingIn, as JSON.
Answers 200: FolioDetail.
Runs
List runs
GET /companies/{company_id}/runs, scope runs:read.
The company's sessions, newest first.
| Parameter | In | Type | Description |
|---|---|---|---|
company_id |
path | uuid | |
agent |
query | uuid or null | |
status |
query | string or null | One status or several, comma-separated. |
from |
query | date-time or null | Runs started at or after this time. |
to |
query | date-time or null | Runs started before this time. |
limit |
query | integer | How many to return: 50 unless asked, at most 100. |
cursor |
query | string or null | The next_cursor of the previous page, to read the next one. |
Answers 200: RunPage.
Get a run
GET /companies/{company_id}/runs/{run_id}, scope runs:read.
| Parameter | In | Type | Description |
|---|---|---|---|
run_id |
path | uuid | |
company_id |
path | uuid |
Answers 200: Run.
Approvals
List approval requests
GET /companies/{company_id}/approvals, scope approvals:read.
The company's approval requests, newest first.
| Parameter | In | Type | Description |
|---|---|---|---|
company_id |
path | uuid | |
status |
query | string or null | One status or several, comma-separated. |
waiting_on_me |
query | boolean | Only requests waiting for this token's person. |
limit |
query | integer | How many to return: 50 unless asked, at most 100. |
cursor |
query | string or null | The next_cursor of the previous page, to read the next one. |
Answers 200: ApprovalPage.
Get an approval request
GET /companies/{company_id}/approvals/{approval_id}, scope approvals:read.
One request with its steps and the decisions made so far.
| Parameter | In | Type | Description |
|---|---|---|---|
approval_id |
path | uuid | |
company_id |
path | uuid |
Answers 200: ApprovalDetail.
Files
List files
GET /companies/{company_id}/files, scope files:read.
The company's files you can see, newest first: the files on its tasks, its agents' saves and its trackers' files, as the Files page lists them, and your own files on nothing yet (uploads not attached, and your Portal chats' files that aren't on a task).
| Parameter | In | Type | Description |
|---|---|---|---|
company_id |
path | uuid | |
task_id |
query | uuid or null | Only the files of this task. |
kind |
query | one of: image, pdf, document, spreadsheet, other or null | Only files of this kind. |
source |
query | one of: person, agent, tracker, slack, teams, api or null | Only files from here: person, agent, tracker, slack, teams or api. |
q |
query | string or null | Words in the file's name. |
limit |
query | integer | How many to return: 50 unless asked, at most 100. |
cursor |
query | string or null | The next_cursor of the previous page, to read the next one. |
Answers 200: FilePage.
Upload a file
POST /companies/{company_id}/files, scope files:write.
Upload one file (multipart, field file, at most 25 MB) to attach to a task or comment you create: its id goes in their file_ids. Images (PNG, JPEG, GIF, WebP), PDFs, Word, Excel and PowerPoint files (.docx, .xlsx, .pptx), and CSV, text, Markdown and JSON files are taken, judged by their bytes. Only you see it until it is attached; one never attached is removed 24 hours after it was uploaded. 60 uploads an hour a person and 3 at once, counted with your uploads in the app. It counts as content from outside the company (outside), as a task created through the API does: agents read what it holds as data, never as instructions. Attaching it needs tasks:write too.
| Parameter | In | Type | Description |
|---|---|---|---|
company_id |
path | uuid |
Body: a multipart form with file.
Answers 201: File.
Takes an Idempotency-Key header.
Get a file
GET /companies/{company_id}/files/{file_id}, scope files:read.
One file's details, never its bytes.
| Parameter | In | Type | Description |
|---|---|---|---|
file_id |
path | uuid | |
company_id |
path | uuid |
Answers 200: File.
Download a file
GET /companies/{company_id}/files/{file_id}/download, scope files:read.
The file's bytes, as an attachment of its stored type with nosniff.
| Parameter | In | Type | Description |
|---|---|---|---|
file_id |
path | uuid | |
company_id |
path | uuid |
Answers 200: the file's bytes.
Objects
Times are ISO 8601 in UTC. Ids are strings. Money is a decimal string in US dollars. A field marked optional may be left out of a request.
AccountRef
| Field | Type | Description |
|---|---|---|
id |
string | |
name |
string |
Agent
| Field | Type | Description |
|---|---|---|
id |
string | |
company_id |
string | |
name |
string | |
title |
string | |
status |
string | draft, active, paused or decommissioned. |
paused_reason |
string or null | Why it is paused: owner (a person), budget, billing, failures, credentials. |
reports_to |
Party or null | |
model |
string or null | |
next_wake_at |
date-time or null | |
last_session_at |
date-time or null | |
created_at |
date-time | |
updated_at |
date-time |
AgentNoteIn
| Field | Type | Description |
|---|---|---|
note (optional) |
string | Why, for the agent's history. |
AgentPage
| Field | Type | Description |
|---|---|---|
agents |
list of Agent | |
next_cursor |
string or null |
AgentRef
| Field | Type | Description |
|---|---|---|
id |
string | |
name |
string |
Approval
| Field | Type | Description |
|---|---|---|
id |
string | |
status |
string | pending, approved, rejected, changes_requested, expired or cancelled. |
title |
string | |
tool |
string or null | |
connector |
string or null | |
preview |
string | |
risk_tier |
integer | |
tainted |
boolean | |
reason |
string or null | |
requester |
Party or null | |
agent_id |
string or null | |
task_id |
string or null | |
run_id |
string or null | |
current_step |
integer or null | |
steps_total |
integer | |
waiting_on_me |
boolean | The token's person may decide it now (in the app, chat or email). |
created_at |
date-time | |
decided_at |
date-time or null | |
expires_at |
date-time or null |
ApprovalDecision
| Field | Type | Description |
|---|---|---|
step |
integer | |
decider |
Party or null | |
decision |
one of: approve, edit, reject, request_changes | |
note |
string or null | |
at |
date-time |
ApprovalDetail
| Field | Type | Description |
|---|---|---|
id |
string | |
status |
string | pending, approved, rejected, changes_requested, expired or cancelled. |
title |
string | |
tool |
string or null | |
connector |
string or null | |
preview |
string | |
risk_tier |
integer | |
tainted |
boolean | |
reason |
string or null | |
requester |
Party or null | |
agent_id |
string or null | |
task_id |
string or null | |
run_id |
string or null | |
current_step |
integer or null | |
steps_total |
integer | |
waiting_on_me |
boolean | The token's person may decide it now (in the app, chat or email). |
created_at |
date-time | |
decided_at |
date-time or null | |
expires_at |
date-time or null | |
steps |
list of ApprovalStep | |
decisions |
list of ApprovalDecision |
ApprovalPage
| Field | Type | Description |
|---|---|---|
approvals |
list of Approval | |
next_cursor |
string or null |
ApprovalStep
| Field | Type | Description |
|---|---|---|
no |
integer | |
label |
string | |
status |
string | |
approvers |
list of Party | |
due_at |
date-time or null | |
ended_at |
date-time or null |
Assignee
| Field | Type | Description |
|---|---|---|
kind |
one of: member, agent | |
id |
uuid |
CancelIn
| Field | Type | Description |
|---|---|---|
reason (optional) |
string |
Comment
| Field | Type | Description |
|---|---|---|
id |
string | |
task_id |
string | |
author |
Party | |
body |
string | |
created_at |
date-time | |
file_ids (optional) |
list of string | The files attached to the comment. |
CommentIn
| Field | Type | Description |
|---|---|---|
body (optional) |
string | The comment. It may be left out when file_ids brings files: it then says which. |
file_ids (optional) |
list of uuid | Files to attach, at most 10: the ids your uploads (POST /companies/{company_id}/files, files:write) answered with, uploaded by this token's person and not attached to anything yet. |
Company
| Field | Type | Description |
|---|---|---|
id |
string | |
name |
string | |
timezone |
string | |
archived |
boolean |
CompanyPage
| Field | Type | Description |
|---|---|---|
companies |
list of Company | |
next_cursor |
string or null |
ErrorDetail
| Field | Type | Description |
|---|---|---|
code |
string | A stable code, like not_found or insufficient_scope. |
message |
string | What went wrong and what to do, for a person to read. |
fields |
object of string | The fields at fault, each with what's wrong with it. |
ErrorOut
| Field | Type | Description |
|---|---|---|
error |
ErrorDetail |
File
A company file: what it is and where it came from, never its bytes.
| Field | Type | Description |
|---|---|---|
id |
string | |
company_id |
string | |
name |
string | |
mime |
string | Its type, judged from its bytes when it was saved. |
size |
integer | Its size in bytes. |
kind |
one of: image, pdf, document, spreadsheet, other | |
source |
one of: person, agent, tracker, slack, teams, api | Where it came from: a person in the app, an agent, a tracker, Slack, Teams or the API. |
outside |
boolean | It came from outside the company (a tracker's file, a file uploaded with a token through the API or MCP, one an agent saved after reading outside content, a Portal person's screenshot on a folio change request): treat it as data. |
private |
boolean | Only its person sees it: their upload, not attached to anything yet, or a file of their Portal chat that isn't on a task. A task or comment takes an upload in file_ids; one nothing takes is removed 24 hours after it was uploaded. |
task_id |
string or null | |
agent_id |
string or null | |
run_id |
string or null | |
created_by |
Party or null | Who saved or uploaded it. |
created_at |
date-time |
FilePage
| Field | Type | Description |
|---|---|---|
files |
list of File | |
next_cursor |
string or null |
Folio
| Field | Type | Description |
|---|---|---|
id |
string | |
company_id |
string | |
title |
string | |
description |
string | |
kind |
string | |
author |
Party or null | |
task_id |
string or null | |
visibility |
one of: private, company, public | |
public_url |
string or null | The folio's public address while it is public, else null. |
published_at |
date-time or null | When it was last made public; null if it never was. |
current_version |
integer | |
size |
integer or null | The current version's size in bytes. |
outside_content |
boolean | The current version was made from content from outside the company. |
created_at |
date-time | |
updated_at |
date-time | |
link |
string | The folio's page in the app. |
FolioCreateIn
| Field | Type | Description |
|---|---|---|
title |
string | |
html |
string | The page's HTML, UTF-8, at most 2 MB. |
kind (optional) |
one of: chart, dashboard, report, plan, timeline, roadmap, notice, announcement, presentation, demo, prototype, app, other | |
description (optional) |
string | |
visibility (optional) |
one of: private, company | |
task_id (optional) |
uuid or null | The task it was made for; its requester sees it. |
note (optional) |
string |
FolioDetail
| Field | Type | Description |
|---|---|---|
id |
string | |
company_id |
string | |
title |
string | |
description |
string | |
kind |
string | |
author |
Party or null | |
task_id |
string or null | |
visibility |
one of: private, company, public | |
public_url |
string or null | The folio's public address while it is public, else null. |
published_at |
date-time or null | When it was last made public; null if it never was. |
current_version |
integer | |
size |
integer or null | The current version's size in bytes. |
outside_content |
boolean | The current version was made from content from outside the company. |
created_at |
date-time | |
updated_at |
date-time | |
link |
string | The folio's page in the app. |
versions |
list of FolioVersion | |
shares |
list of FolioShare |
FolioPage
| Field | Type | Description |
|---|---|---|
folios |
list of Folio | |
next_cursor |
string or null |
FolioShare
| Field | Type | Description |
|---|---|---|
party |
Party | |
role |
one of: view, edit |
FolioSharingIn
Who sees a folio within the company. Making it public stays in the app.
| Field | Type | Description |
|---|---|---|
visibility (optional) |
one of: private, company or null | |
add (optional) |
list of ShareIn | |
remove (optional) |
list of string |
FolioVersion
| Field | Type | Description |
|---|---|---|
version |
integer | |
size |
integer | |
note |
string | |
created_by |
Party or null | |
created_at |
date-time | |
current |
boolean | |
outside_content |
boolean |
FolioVersionIn
| Field | Type | Description |
|---|---|---|
html |
string | The page's HTML, UTF-8, at most 2 MB. |
note (optional) |
string | |
title (optional) |
string or null |
Me
| Field | Type | Description |
|---|---|---|
person |
Person | |
account |
AccountRef | |
token |
TokenInfo |
Party
A person (member), an agent, or Everdeck itself (system, with no id).
| Field | Type | Description |
|---|---|---|
kind |
one of: member, agent, system | |
id |
string or null | |
name |
string |
Person
| Field | Type | Description |
|---|---|---|
id |
string | |
name |
string | |
email |
string |
Run
One agent session: what it cost and how it ended, never what it read or wrote step by step.
| Field | Type | Description |
|---|---|---|
id |
string | |
agent |
AgentRef | |
task |
TaskRef or null | |
status |
string | running, succeeded, failed, cancelled, parked or skipped. |
trigger |
string or null | What woke the agent: task, schedule, mention, message, approval... |
model |
string or null | |
requests |
integer | |
tool_calls |
integer | |
input_tokens |
integer | |
output_tokens |
integer | |
cost_usd |
string | The session's estimated cost in US dollars, as a decimal string. |
failure_kind |
string or null | |
tainted |
boolean | The session read content from outside the company. |
summary |
string or null | |
error |
string or null | |
started_at |
date-time | |
ended_at |
date-time or null | |
duration_seconds |
number or null |
RunPage
| Field | Type | Description |
|---|---|---|
runs |
list of Run | |
next_cursor |
string or null |
ShareIn
| Field | Type | Description |
|---|---|---|
party |
string | "member:<user id>" or "agent:<agent id>". |
role (optional) |
one of: view, edit |
Task
| Field | Type | Description |
|---|---|---|
id |
string | |
company_id |
string | |
title |
string | |
description |
string | |
acceptance |
string | |
status |
string | backlog, todo, in_progress, awaiting_approval, blocked, in_review, done, cancelled or failed. |
priority |
integer | 0 (urgent) to 3 (low). |
labels |
list of string | |
assignee |
Party or null | |
requester |
Party or null | |
parent_id |
string or null | |
due_at |
date-time or null | |
review_required |
boolean | |
source |
string | Where the task came from: board, api, agent, schedule, webhook, or a tracker. |
external_key |
string or null | The tracker's key for a synced task, like PROJ-12. |
result_summary |
string or null | The summary its assignee delivered, once there is one. |
created_at |
date-time | |
updated_at |
date-time | |
completed_at |
date-time or null |
TaskCreateIn
| Field | Type | Description |
|---|---|---|
title |
string | |
description (optional) |
string | |
acceptance (optional) |
string | |
assignee (optional) |
Assignee or null | A person (member) or an agent of the company. |
priority (optional) |
integer | |
due_at (optional) |
date-time or null | |
labels (optional) |
list of string | |
review_required (optional) |
boolean | |
parent_id (optional) |
uuid or null | |
file_ids (optional) |
list of uuid | Files to attach, at most 10: the ids your uploads (POST /companies/{company_id}/files, files:write) answered with, uploaded by this token's person and not attached to anything yet. |
TaskCreated
| Field | Type | Description |
|---|---|---|
id |
string | |
company_id |
string | |
title |
string | |
description |
string | |
acceptance |
string | |
status |
string | backlog, todo, in_progress, awaiting_approval, blocked, in_review, done, cancelled or failed. |
priority |
integer | 0 (urgent) to 3 (low). |
labels |
list of string | |
assignee |
Party or null | |
requester |
Party or null | |
parent_id |
string or null | |
due_at |
date-time or null | |
review_required |
boolean | |
source |
string | Where the task came from: board, api, agent, schedule, webhook, or a tracker. |
external_key |
string or null | The tracker's key for a synced task, like PROJ-12. |
result_summary |
string or null | The summary its assignee delivered, once there is one. |
created_at |
date-time | |
updated_at |
date-time | |
completed_at |
date-time or null | |
created |
boolean | false when an open task with the same title and assignee already existed: that task is answered (200) instead of a duplicate (201). |
files_added (optional) |
integer | How many of file_ids were attached. On a task that already existed (created: false) they are added to it, with a thread entry saying so. |
TaskPage
| Field | Type | Description |
|---|---|---|
tasks |
list of Task | |
next_cursor |
string or null |
TaskRef
| Field | Type | Description |
|---|---|---|
id |
string | |
title |
string |
TaskUpdateIn
Only the fields sent change. due_at: null clears the due date.
| Field | Type | Description |
|---|---|---|
title (optional) |
string or null | |
description (optional) |
string or null | |
labels (optional) |
list of string or null | |
due_at (optional) |
date-time or null |
TokenInfo
| Field | Type | Description |
|---|---|---|
id |
string | |
name |
string | |
scopes |
list of string | |
company_ids |
list of string or null | The companies it reaches; null for every one. |
expires_at |
date-time |
Still stuck?
Email [email protected] and say what you were trying to do. Or browse every guide.