Workspace owners and admins create keys in Settings → API. Add a label so you can tell keys apart later. The full key is shown once, so copy it into a secrets manager before you close the dialog. Revoke a key from the same page; requests that use it fail with 401 right away.
A key belongs to one workspace and acts as the person who created it, with owner access to that workspace. Anyone holding it can read and change everything in the workspace, so treat it like a password. Keys cannot create or revoke other keys.
curl -X GET "https://api.joinoasis.com/api/v1/organizations/$ORG_ID/agents" \
-H "X-API-Key: $OASIS_API_KEY"
Response 200 · array of object
Name
Type
Description
agent_id
string
kind
string
name
string
agent_role
string
description
string
Short description shown with the agent.
state
idle | active
picture_url
string
color
array of string
composio_toolkits
array of string
Apps the agent can use, by toolkit slug (for example `gmail`).
composio_require_approval
boolean
created_by
string
created_at
string
updated_at
string
caller_permission
string
POST/organizations/{org_id}/agentsCreate an agent
Create an agent with a name, role and standing instructions.
Parameters
Name
In
Type
Required
Description
org_id
path
string
Yes
Body
Name
Type
Required
Description
connection_grants
array of object
Connected app accounts the agent can use.
connection_grants[].connection_id
string
Yes
connection_grants[].scope
string
'read' | 'write'
connection_grants[].auto_approve
boolean
name
string
Yes
Display name for the agent
agent_role
string
description
string
Short description shown with the agent.
system_prompt
string
response_style
default | warm | direct | professional | super_casual
picture_url
string
color
array of string
composio_toolkits
array of string
Apps the agent can use, by toolkit slug (for example `gmail`).
composio_require_approval
boolean
If true, draft actions and ask for approval before executing
composio_toolkit_approval_overrides
object
Per-app override of `composio_require_approval`, keyed by toolkit slug.
enable_memory_recall
boolean
Let the agent use its memory.
Example
bash
curl -X POST "https://api.joinoasis.com/api/v1/organizations/$ORG_ID/agents" \
-H "X-API-Key: $OASIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Scout","agent_role":"Research analyst","system_prompt":"Research what you are asked about and cite sources."}'
Response 201 · object
Name
Type
Description
agent_id
string
user_id
string
org_id
string
name
string
agent_role
string
description
string
Short description shown with the agent.
state
idle | active
picture_url
string
color
array of string
composio_toolkits
array of string
Apps the agent can use, by toolkit slug (for example `gmail`).
composio_require_approval
boolean
composio_toolkit_account_source
object
Per-app account choice, keyed by toolkit slug: `shared` uses the accounts granted to the agent, `self` has each person use their own. Missing keys mean `shared`.
created_at
string
updated_at
string
created_by
string
kind
string
caller_permission
string
budget_amount_usd
number
budget_period
string
GET/agents/{agent_id}Get an agent
Read an agent's instructions and settings.
Parameters
Name
In
Type
Required
Description
agent_id
path
string
Yes
Example
bash
curl -X GET "https://api.joinoasis.com/api/v1/agents/$AGENT_ID" \
-H "X-API-Key: $OASIS_API_KEY"
Response 200 · object
Name
Type
Description
agent_id
string
user_id
string
org_id
string
name
string
agent_role
string
description
string
Short description shown with the agent.
state
idle | active
picture_url
string
color
array of string
composio_toolkits
array of string
Apps the agent can use, by toolkit slug (for example `gmail`).
composio_require_approval
boolean
composio_toolkit_account_source
object
Per-app account choice, keyed by toolkit slug: `shared` uses the accounts granted to the agent, `self` has each person use their own. Missing keys mean `shared`.
created_at
string
updated_at
string
created_by
string
kind
string
caller_permission
string
budget_amount_usd
number
budget_period
string
PUT/agents/{agent_id}Update an agent
Change an agent. Send only the fields you want to change.
Parameters
Name
In
Type
Required
Description
agent_id
path
string
Yes
Body
Name
Type
Required
Description
name
string
agent_role
string
description
string
Short description shown with the agent.
system_prompt
string
response_style
default | warm | direct | professional | super_casual
picture_url
string
color
array of string
composio_toolkits
array of string
Apps the agent can use, by toolkit slug (for example `gmail`).
composio_require_approval
boolean
composio_toolkit_approval_overrides
object
Per-app override of `composio_require_approval`, keyed by toolkit slug.
composio_toolkit_account_source
object
Per-app account choice, keyed by toolkit slug: `shared` uses the accounts granted to the agent, `self` has each person use their own. Missing keys mean `shared`.
enable_memory_recall
boolean
Let the agent use its memory.
budget_amount_usd
number
USD cap for the budget period; null = no cap
budget_period
string
'daily' | 'weekly' | 'monthly'; null = no cap
Example
bash
curl -X PUT "https://api.joinoasis.com/api/v1/agents/$AGENT_ID" \
-H "X-API-Key: $OASIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"description":"Researches competitors every week."}'
Response 200 · object
Name
Type
Description
agent_id
string
user_id
string
org_id
string
name
string
agent_role
string
description
string
Short description shown with the agent.
state
idle | active
picture_url
string
color
array of string
composio_toolkits
array of string
Apps the agent can use, by toolkit slug (for example `gmail`).
composio_require_approval
boolean
composio_toolkit_account_source
object
Per-app account choice, keyed by toolkit slug: `shared` uses the accounts granted to the agent, `self` has each person use their own. Missing keys mean `shared`.
List workflows. Set include_disabled to include paused ones.
Parameters
Name
In
Type
Required
Description
org_id
path
string
Yes
include_disabled
query
boolean
Example
bash
curl -X GET "https://api.joinoasis.com/api/v1/organizations/$ORG_ID/schedules" \
-H "X-API-Key: $OASIS_API_KEY"
Response 200 · array of object
Name
Type
Description
id
string
task_id
string
org_id
string
name
string
description
string
kind
string
`time`, `event` or `manual`.
trigger_type
string
`cron`, `composio` (an app event) or `manual`.
composio_trigger_slug
string
App event that starts the workflow, for example `GMAIL_NEW_EMAIL`.
composio_trigger_config
object
Settings for that app event.
composio_connected_account_id
string
Connected account the event watches. Defaults to your account for that app.
cron_expr
string
timezone
string
execute_at
string
enabled
boolean
seed_prompt
string
Instructions for each run.
agent_ids
array of string
Agents that do the work.
human_participant_ids
array of string
created_by
string
visibility
string
last_run_at
string
last_run_status
string
last_run_error
string
run_count
integer
created_at
string
updated_at
string
condition_rules
array of object
Filters on the event payload. A run starts only when every rule matches.
fire_cap_per_window
integer
fire_cap_window_seconds
integer
paused_reason
string
POST/organizations/{org_id}/schedulesCreate a workflow
Create a workflow with instructions, assigned agents and when it runs: manual, cron (recurring) or composio (on an app event). Use an IANA timezone with cron_expr. Automatic triggers are active once saved.
Parameters
Name
In
Type
Required
Description
org_id
path
string
Yes
Body
Name
Type
Required
Description
name
string
description
string
kind
string
`time`, `event` or `manual`.
trigger_type
string
`cron`, `composio` (an app event) or `manual`.
composio_trigger_slug
string
App event that starts the workflow, for example `GMAIL_NEW_EMAIL`.
composio_trigger_config
object
Settings for that app event.
composio_connected_account_id
string
Connected account the event watches. Defaults to your account for that app.
cron_expr
string
Standard 5-field cron, e.g. '0 8 * * *'
timezone
string
IANA timezone name, e.g. 'America/New_York'
execute_at
string
ISO 8601 datetime for one-time runs
seed_prompt
string
Instructions for each run.
agent_ids
array of string
Agents that do the work.
human_participant_ids
array of string
Human participant UUIDs
visibility
string
'private' (creator-only) or 'public' (visible to whole org)
condition_rules
array of object
Filters on the event payload. A run starts only when every rule matches.
condition_rules[].rule_type
string
Always `deterministic`.
condition_rules[].field
string
Yes
Dotted path into the event payload, e.g. 'from' or 'repository.full_name'
condition_rules[].operator
string
Yes
One of: equals, contains, starts_with, ends_with, regex, exists, gt, lt
condition_rules[].value
any
Value to compare against; ignored for 'exists'
fire_cap_per_window
integer
Per-schedule rate limit; null = uncapped
fire_cap_window_seconds
integer
Window for fire_cap_per_window
generate_task_blueprint
boolean
Draft the step plan from `seed_prompt` when the workflow is saved.
Example
bash
curl -X POST "https://api.joinoasis.com/api/v1/organizations/$ORG_ID/schedules" \
-H "X-API-Key: $OASIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Morning digest","trigger_type":"cron","cron_expr":"0 9 * * 1-5","timezone":"America/New_York","seed_prompt":"Post a digest of the previous day.","agent_ids":["AGENT_ID"]}'
Response 201 · object
Name
Type
Description
id
string
task_id
string
org_id
string
name
string
description
string
kind
string
`time`, `event` or `manual`.
trigger_type
string
`cron`, `composio` (an app event) or `manual`.
composio_trigger_slug
string
App event that starts the workflow, for example `GMAIL_NEW_EMAIL`.
composio_trigger_config
object
Settings for that app event.
composio_connected_account_id
string
Connected account the event watches. Defaults to your account for that app.
cron_expr
string
timezone
string
execute_at
string
enabled
boolean
seed_prompt
string
Instructions for each run.
agent_ids
array of string
Agents that do the work.
human_participant_ids
array of string
created_by
string
visibility
string
last_run_at
string
last_run_status
string
last_run_error
string
run_count
integer
created_at
string
updated_at
string
condition_rules
array of object
Filters on the event payload. A run starts only when every rule matches.
fire_cap_per_window
integer
fire_cap_window_seconds
integer
paused_reason
string
GET/organizations/{org_id}/schedules/{schedule_id}Get a workflow
Read a workflow's instructions, agents, timing and enabled state.
Parameters
Name
In
Type
Required
Description
org_id
path
string
Yes
schedule_id
path
string
Yes
Example
bash
curl -X GET "https://api.joinoasis.com/api/v1/organizations/$ORG_ID/schedules/$SCHEDULE_ID" \
-H "X-API-Key: $OASIS_API_KEY"
Response 200 · object
Name
Type
Description
id
string
task_id
string
org_id
string
name
string
description
string
kind
string
`time`, `event` or `manual`.
trigger_type
string
`cron`, `composio` (an app event) or `manual`.
composio_trigger_slug
string
App event that starts the workflow, for example `GMAIL_NEW_EMAIL`.
composio_trigger_config
object
Settings for that app event.
composio_connected_account_id
string
Connected account the event watches. Defaults to your account for that app.
cron_expr
string
timezone
string
execute_at
string
enabled
boolean
seed_prompt
string
Instructions for each run.
agent_ids
array of string
Agents that do the work.
human_participant_ids
array of string
created_by
string
visibility
string
last_run_at
string
last_run_status
string
last_run_error
string
run_count
integer
created_at
string
updated_at
string
condition_rules
array of object
Filters on the event payload. A run starts only when every rule matches.
fire_cap_per_window
integer
fire_cap_window_seconds
integer
paused_reason
string
PATCH/organizations/{org_id}/schedules/{schedule_id}Update a workflow
Change a workflow. Set enabled to false to pause it and true to resume.
Parameters
Name
In
Type
Required
Description
org_id
path
string
Yes
schedule_id
path
string
Yes
Body
Name
Type
Required
Description
name
string
description
string
kind
string
`time`, `event` or `manual`.
trigger_type
string
`cron`, `composio` (an app event) or `manual`.
composio_trigger_slug
string
App event that starts the workflow, for example `GMAIL_NEW_EMAIL`.
composio_trigger_config
object
Settings for that app event.
composio_connected_account_id
string
Connected account the event watches. Defaults to your account for that app.
cron_expr
string
timezone
string
execute_at
string
enabled
boolean
seed_prompt
string
Instructions for each run.
agent_ids
array of string
Agents that do the work.
human_participant_ids
array of string
visibility
string
condition_rules
array of object
Filters on the event payload. A run starts only when every rule matches.
condition_rules[].rule_type
string
Always `deterministic`.
condition_rules[].field
string
Yes
Dotted path into the event payload, e.g. 'from' or 'repository.full_name'
condition_rules[].operator
string
Yes
One of: equals, contains, starts_with, ends_with, regex, exists, gt, lt