curl -X POST "https://app.runtm.com/api/cloud/v1/linear/integrations/manual" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123" \
-H "Content-Type: application/json" \
-d '{"api_key": "lin_api_...", "service_user_id": "user_123", "name": "Runtime Bot"}'
runtm-api agents create --type linear --linear-api-key lin_api_... \
--service-user user_123 --name "Runtime Bot"
{
"id": "li_2e4f",
"connection_type": "manual",
"name": "Runtime Bot",
"workspace_name": "Acme",
"actor_name": "Runtime Bot",
"service_user_id": "user_123",
"default_github_repo": null,
"default_template": null,
"default_agent": "claude-code",
"rate_limit_per_hour": 15,
"enabled": true,
"webhook_active": true,
"bot_linear_user_id": "lin_usr_1",
"project_repo_map": null,
"config": null
}
Linear
Create Manual Linear Bot
Create a Linear bot headlessly from a personal API key
POST
/
api
/
v1
/
linear
/
integrations
/
manual
curl -X POST "https://app.runtm.com/api/cloud/v1/linear/integrations/manual" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123" \
-H "Content-Type: application/json" \
-d '{"api_key": "lin_api_...", "service_user_id": "user_123", "name": "Runtime Bot"}'
runtm-api agents create --type linear --linear-api-key lin_api_... \
--service-user user_123 --name "Runtime Bot"
{
"id": "li_2e4f",
"connection_type": "manual",
"name": "Runtime Bot",
"workspace_name": "Acme",
"actor_name": "Runtime Bot",
"service_user_id": "user_123",
"default_github_repo": null,
"default_template": null,
"default_agent": "claude-code",
"rate_limit_per_hour": 15,
"enabled": true,
"webhook_active": true,
"bot_linear_user_id": "lin_usr_1",
"project_repo_map": null,
"config": null
}
The headless path to a Linear trigger: no OAuth browser step. The API key is verified against Linear, stored encrypted, and the webhook is registered automatically. Sessions launched by the bot run as
service_user_id.
Required scope: integrations:write, and the caller must be an org admin or owner.
Request Body
string
required
A Linear personal API key (min 10 characters).
string
required
The Runtm user ID the bot’s sessions run as.
string
Display name.
string
Default repo (owner/name) for launched sessions.
string
Default org template.
string
default:"claude-code"
Coding agent harness.
integer
default:"15"
Max events handled per hour (1 to 100).
object
Map of Linear project ID to repo, overriding the default repo per project.
object
Additional configuration, for example
{"agent_id": "..."} to bind a roster agent.Response
The created integration object, as in List Linear Integrations.curl -X POST "https://app.runtm.com/api/cloud/v1/linear/integrations/manual" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123" \
-H "Content-Type: application/json" \
-d '{"api_key": "lin_api_...", "service_user_id": "user_123", "name": "Runtime Bot"}'
runtm-api agents create --type linear --linear-api-key lin_api_... \
--service-user user_123 --name "Runtime Bot"
{
"id": "li_2e4f",
"connection_type": "manual",
"name": "Runtime Bot",
"workspace_name": "Acme",
"actor_name": "Runtime Bot",
"service_user_id": "user_123",
"default_github_repo": null,
"default_template": null,
"default_agent": "claude-code",
"rate_limit_per_hour": 15,
"enabled": true,
"webhook_active": true,
"bot_linear_user_id": "lin_usr_1",
"project_repo_map": null,
"config": null
}