Skip to main content

System Integration API Reference

API reference for user management, log viewing, master data management, shared memory search, and project operations. For end-user-facing APIs (Chat / Conversations / Files / Search / public master data), see the User API Reference. For MCP / A2A connection methods, see the Connection Methods Guide.

SaaS Edition Only

All endpoints documented in this reference are available only in the SaaS edition. On the Marketplace edition, administrative operations are performed exclusively through the Admin Console.

Base URL​

All API requests are sent to the following base URL.

SaaS
https://api.fd.agenticstar.tm.softbank.jp/api

Endpoint paths in this document are relative to the base URL.

Authentication​

All API requests require a Bearer token in the Authorization header.

Authorization: Bearer <access_token>

If the token is invalid or missing, 401 Unauthorized is returned. Some endpoints require additional scopes. If the required scope is missing, 403 Forbidden is returned.

For details on obtaining tokens and scope assignment, see the Authentication Guide and Authentication API Reference (SaaS).

Pagination​

List retrieval endpoints use one of two schemes. Which one applies is fixed per endpoint. Organization and job type lists do not support pagination and always return all records.

Page-based​

ParameterTypeDescription
limitintegerNumber of items per page. 1 to 100 (default 25)
pageintegerPage number. 1 or greater (default 1)

Responses include total, limit, page, and hasMore. When hasMore is true, increase page by 1 to retrieve the next page.

curl
# Page 1
curl "https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/users?limit=25&page=1" \
-H "Authorization: Bearer <access_token>"

# Page 2
curl "https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/users?limit=25&page=2" \
-H "Authorization: Bearer <access_token>"

Endpoints using this scheme: the users list and the log lists (audit logs, LLM logs, LLM Gateway logs, access logs, and guardrail alerts).

Cursor-based​

ParameterTypeDescription
limitintegerNumber of items per page (1-100). Defaults to 50
cursorstringCursor value for the next page. Pass back the cursor from the previous response as-is

Responses include hasMore. When it is true, pass the cursor value in the next request to retrieve the next page. Treat cursor as opaque: do not interpret it, just pass the previous value back.

The endpoint using this scheme is the project list. It does not use page (it is ignored if specified).

Request handling​

The APIs on this page handle requests as follows. See each endpoint's description and error responses for endpoint-specific handling.

  • Query parameters and body fields that are not in the specification are ignored. However, a field that the service accepts but this page does not document may still return 400 Bad Request if its type or value is invalid.
  • An invalid value for a documented query parameter returns 400 Bad Request.
  • A malformed JSON body returns 400 Bad Request (invalid_body).
  • Sending a body with a Content-Type other than application/json to an endpoint that accepts a JSON body returns 415 Unsupported Media Type (unsupported_media_type). However, if reading the body fails first with 400 (malformed JSON) or 413 (over the size limit), that error is returned instead.
  • A body field of the wrong type returns 400 Bad Request.
  • Responses include an x-request-id header. The service assigns this value, and a value sent in the request is not used. When you contact support, please tell us this value.

Shared Memory SaaS​

Searches shared memory (knowledge) based on organization and job role.

Endpoint List​

メソッドエンドポイント説明スコープ
POST/v1/admin/memory/querySearch shared memorysharedmemory:query

POST/v1/admin/memory/query

Search shared memory.

Request Body​

パラメータ型必須説明
querystring必須Search query (max 500 characters)
orgIdstring—Organization ID (max 100 characters). If specified, organization-scoped memory is included in the search
jobRolestring—Job role (max 100 characters). If specified, role-scoped memory is included in the search

Request Example​

Search shared memory
1curl -X POST https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/memory/query \
2-H "Authorization: Bearer <access_token>" \
3-H "Content-Type: application/json" \
4-d '{"query": "How to create a sales report", "orgId": "sales"}'

Response Fields (200 OK)​

FieldTypeDescription
memoriesarrayArray of memory objects
memories[].textstringMemory content text
memories[].typestring"knowledge"
memories[].scopestringOne of "organization", "role", or "global"
memories[].createdAtstring | nullCreation date and time (ISO 8601)
memories[].scorenumber?Relevance score. Field is omitted when score is not available

Response Headers​

HeaderDescription
X-RateLimit-LimitMonthly request limit
X-RateLimit-RemainingRemaining requests
X-RateLimit-ResetReset time (start of next month, ISO 8601)

Response Example​

JSON
{
"memories": [
{
"text": "Sales reports can be created from the 'Monthly Reports' tab in the dashboard",
"type": "knowledge",
"scope": "organization",
"createdAt": "2026-03-15T10:30:00.000Z",
"score": 0.85
}
]
}

Error Response​

StatusDescription
400query is missing, empty, or exceeds 500 characters, or the body is malformed JSON (code: "invalid_body")
415The body Content-Type is not application/json (code: "unsupported_media_type")
403sharedmemory:query scope is missing
429Monthly quota exceeded (error.type: rate_limit_error, error.code: monthly_quota_exceeded)
502Communication error with an upstream service (error.type: upstream_error)
504Upstream service response timeout (error.type: upstream_error, error.code: upstream_timeout)

When the search succeeds with no matches, 200 is returned with an empty memories array. Upstream failures return 502 / 504 instead of an empty array, so an empty array in a 200 response does not indicate a failure.

User Management SaaS​

List, delete, change role, approve, and revoke approval of users.

Endpoint List​

メソッドエンドポイント説明スコープ
GET/v1/admin/usersList usersusers:read / users:manage
DELETE/v1/admin/users/:userIdDelete userusers:manage
PUT/v1/admin/users/:userId/roleChange user roleusers:manage
POST/v1/admin/users/:userId/approveApprove userusers:manage
POST/v1/admin/users/:userId/rejectRevoke user approvalusers:manage

GET/v1/admin/users

List users. Supports page-based pagination. Either the users:read or users:manage scope is required (users:manage includes users:read permissions).

Query Parameters​

パラメータ型必須説明
limitinteger—Number of items to fetch (1–100, default: 25)
pageinteger—Page number (1 or more, default: 1)
rolestring—Role filter. "admin" can be specified
is_approvedstring—Approval status filter. "true" or "false"
searchstring—Search string (max 100 characters). Searches by email address, etc.
organizationstring—Organization code filter (max 50 characters; alphanumeric, hyphen, underscore)
job_typestring—Job type code filter (max 50 characters; alphanumeric, hyphen, underscore)

Request Example​

List users
1curl "https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/users?limit=10&is_approved=true" \
2-H "Authorization: Bearer <access_token>"

Response Fields (200 OK)​

FieldTypeDescription
usersarrayArray of user objects
users[].userIdstringUser ID
users[].emailstringEmail address
users[].usernamestringUsername
users[].emailVerifiedbooleanEmail verification status
users[].rolestringRole ("admin" or "user")
users[].statusstringStatus ("unverified", "pending", or "approved")
users[].organizationobject?Organization (value: code, label: name). Field is omitted if not set
users[].jobTypeobject?Job type (value: code, label: name). Field is omitted if not set
users[].biostring?Self-introduction. Field is omitted when not set
users[].createdAtstringCreation date and time (ISO 8601)
users[].lastLoginAtstring?Last login date and time (ISO 8601). Field is omitted if the user has never logged in
totalintegerTotal count
limitintegerNumber of items fetched
pageintegerPage number
hasMorebooleanWhether the next page exists
Example Response (200 OK)​
JSON
{
"users": [
{
"userId": "bbbe4306-6975-420b-af47-fb4c8f48b4aa",
"email": "user1@example.com",
"username": "user1@example.com",
"emailVerified": true,
"role": "user",
"status": "approved",
"createdAt": "2026-04-19T13:02:26.198Z"
},
{
"userId": "90b40fd8-a6b8-42b8-ab61-f3b674169b43",
"email": "user2@example.com",
"username": "user2",
"emailVerified": true,
"role": "user",
"status": "approved",
"organization": { "value": "sales", "label": "Sales" },
"jobType": { "value": "engineer", "label": "Engineer" },
"createdAt": "2026-04-17T07:09:47.484Z"
},
{
"userId": "463e2c25-5a80-4362-b77e-941df96fb1f2",
"email": "admin@example.com",
"username": "admin@example.com",
"emailVerified": true,
"role": "admin",
"status": "approved",
"createdAt": "2026-04-17T07:02:41.015Z",
"lastLoginAt": "2026-04-17T07:18:17.488Z"
}
],
"total": 132,
"limit": 3,
"page": 1,
"hasMore": true
}

Error Response​

StatusDescription
400Invalid query parameters
403users:read or users:manage scope is missing

DELETE/v1/admin/users/:userId

Delete a user. Requires users:manage scope.

Path Parameters​

パラメータ型必須説明
userIdstring必須User ID

Request Example​

Delete user
1curl -X DELETE https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/users/USER_ID \
2-H "Authorization: Bearer <access_token>"
Response Example (200 OK)​
JSON
{ "userId": "abc123", "deleted": true }

Error Responses​

StatusDescription
403Missing users:manage scope
404The specified user was not found (including already deleted)

PUT/v1/admin/users/:userId/role

Change a user's role. Only approved users can have their role changed.

Behavior on Role Change
  • When demoting to user: The target user's existing sessions are invalidated, requiring them to log in again.
  • When promoting to admin: The target user's existing sessions continue, and the new permissions take effect from the next API call.

Path Parameters​

パラメータ型必須説明
userIdstring必須User ID

Request Body​

パラメータ型必須説明
rolestring必須The role to change to. "admin" or "user"

Request Example​

Change user role
1curl -X PUT https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/users/USER_ID/role \
2-H "Authorization: Bearer <access_token>" \
3-H "Content-Type: application/json" \
4-d '{"role": "admin"}'
Response Example (200 OK)​
JSON
{ "userId": "abc123", "changed": true }

Error Response​

StatusDescription
400role is missing or invalid, the body is malformed JSON (code: "invalid_body"), or the target user is not approved
415The body Content-Type is not application/json (code: "unsupported_media_type")
403users:manage scope is missing
404User not found

POST/v1/admin/users/:userId/approve

Approve a user. Only users with status "pending" can be approved.

note

When approval succeeds, an approval notification email is automatically sent to the target user's email address.

Path Parameters​

パラメータ型必須説明
userIdstring必須User ID

Request Body (optional)​

パラメータ型必須説明
reasonstring—Reason for the approval. If it is not empty, it is recorded in the user information

Request Example​

Approve user
1curl -X POST https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/users/USER_ID/approve \
2-H "Authorization: Bearer <access_token>" \
3-H "Content-Type: application/json" \
4-d '{}'
Response Example (200 OK)​
JSON
{ "userId": "abc123", "approved": true }

Error Responses​

StatusDescription
400User status is not "pending" (cannot approve)
400reason is not a string, or the body is malformed JSON or not a JSON object (code: "invalid_body")
415The body Content-Type is not application/json (code: "unsupported_media_type")
403Missing users:manage scope
404User not found

POST/v1/admin/users/:userId/reject

Revoke a user's approval. Only users with status "approved" can have their approval revoked. After revocation, the status returns to "pending".

note

When revocation succeeds, a notification email is automatically sent to the target user's email address.

Path Parameters​

パラメータ型必須説明
userIdstring必須User ID

Request Example​

Reject user
1curl -X POST https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/users/USER_ID/reject \
2-H "Authorization: Bearer <access_token>" \
3-H "Content-Type: application/json" \
4-d '{}'
Response Example (200 OK)​
JSON
{ "userId": "abc123", "status": "pending" }

Error Responses​

StatusDescription
400User status is not "approved" (cannot revoke)
403Missing users:manage scope
404User not found

Logs SaaS​

View audit logs, LLM logs, LLM Gateway logs, access logs, and guardrail alerts. All list endpoints support page-based pagination and date range filters.

Endpoint List​

メソッドエンドポイント説明スコープ
GET/v1/admin/audit-logsList audit logslogs:read
GET/v1/admin/audit-logs/:idGet audit log detaillogs:read
GET/v1/admin/llm-logsList LLM logslogs:read
GET/v1/admin/llm-gateway-logsList LLM Gateway logslogs:read
GET/v1/admin/access-logsList access logslogs:read
GET/v1/admin/access-logs/statsGet access log statslogs:read
GET/v1/admin/guardrail-alertsList guardrail alertslogs:read

Common Query Parameters​

パラメータ型必須説明
limitinteger—Number of items to fetch (1–100, default: 25)
pageinteger—Page number (1 or more, default: 1)
fromstring—Start date (an existing date in YYYY-MM-DD format, UTC). A value in another format, a date that does not exist, or a non-string value returns 400
tostring—End date (an existing date in YYYY-MM-DD format, UTC). Includes the end of the specified day. A value in another format, a date that does not exist, or a non-string value returns 400

GET/v1/admin/audit-logs

List audit logs. Returned in descending order of creation date.

Request Example​

List audit logs
1curl "https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/audit-logs?limit=10&from=2026-04-01&to=2026-04-15" \
2-H "Authorization: Bearer <access_token>"

Response Fields (200 OK)​

FieldTypeDescription
auditLogsarrayArray of audit log objects
auditLogs[].auditLogIdstringAudit log ID
auditLogs[].resourcestringResource operated on (e.g. users/show, config/organizations/create, config/job-types/edit)
auditLogs[].actionstringOperation action (approve / reject / promote / demote / create / update / delete, etc.)
auditLogs[].metaobject | nullAdditional metadata
auditLogs[].userIdstringUser ID who performed the operation. For operations with a system integration token (Client Credentials flow), client:<client ID>
auditLogs[].userEmailstring | nullEmail address of the user
auditLogs[].userNamestring | nullDisplay name of the user. For operations with a system integration token (Client Credentials flow), the client name
auditLogs[].ipAddressstring | nullIP address
auditLogs[].userAgentstring | nullUser-Agent
auditLogs[].createdAtstringCreation date and time (ISO 8601)
totalintegerTotal count
limitintegerNumber of items fetched
pageintegerPage number
hasMorebooleanWhether the next page exists
Example Response (200 OK)​
JSON
{
"auditLogs": [
{
"auditLogId": "6b4366a3-791d-4f60-a9ef-24bdb3303e36",
"resource": "users/list",
"action": "approve",
"meta": {
"userName": "user2@example.com",
"timestamp": "2026-04-19T13:03:27.238Z",
"isApproved": true
},
"userId": "41b9fcf1-958d-4a86-a863-804b69224a1d",
"userEmail": "admin@example.com",
"userName": "admin@example.com",
"ipAddress": "203.0.113.140",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
"createdAt": "2026-04-19T13:03:27.479Z"
},
{
"auditLogId": "c14d6065-7c35-44f6-8eea-033ede09bf3a",
"resource": "users/show",
"action": "delete",
"meta": {
"userName": "user1@example.com",
"timestamp": "2026-04-19T05:04:19.745Z",
"userEmail": "user1@example.com"
},
"userId": "client:billing-integration",
"userEmail": "service-account-client@federation.invalid",
"userName": "Billing integration",
"ipAddress": "198.51.100.23",
"userAgent": "Mozilla/5.0 (...)",
"createdAt": "2026-04-19T05:04:19.876Z"
},
{
"auditLogId": "f84ef377-9d75-4875-9958-b084c91a3c9b",
"resource": "organizations",
"action": "delete",
"meta": {},
"userId": "client:billing-integration",
"userEmail": "service-account-client@federation.invalid",
"userName": "Billing integration",
"ipAddress": "198.51.100.23",
"userAgent": "Mozilla/5.0 (...)",
"createdAt": "2026-04-19T05:02:01.736Z"
}
],
"total": 1537,
"limit": 3,
"page": 1,
"hasMore": true
}

GET/v1/admin/audit-logs/:id

Get a single audit log.

Path Parameters​

パラメータ型必須説明
idstring必須Audit log ID (auditLogId in the list)

Request Example​

Get audit log
1curl https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/audit-logs/c14d6065-7c35-44f6-8eea-033ede09bf3a \
2-H "Authorization: Bearer <access_token>"

Response Fields (200 OK)​

FieldTypeDescription
auditLogIdstringAudit log ID
resourcestringResource operated on (e.g. users/show, config/organizations/create, config/job-types/edit)
actionstringOperation action (approve / reject / promote / demote / create / update / delete, etc.)
metaobject | nullAdditional metadata
userIdstringUser ID who performed the operation. For operations with a system integration token (Client Credentials flow), client:<client ID>
userEmailstring | nullEmail address of the user
userNamestring | nullDisplay name of the user. For operations with a system integration token (Client Credentials flow), the client name
ipAddressstring | nullIP address
userAgentstring | nullUser-Agent
createdAtstringCreation date and time (ISO 8601)
Example Response (200 OK)​
JSON
{
"auditLogId": "c14d6065-7c35-44f6-8eea-033ede09bf3a",
"resource": "users/show",
"action": "delete",
"meta": {
"userName": "user1@example.com",
"timestamp": "2026-04-19T05:04:19.745Z",
"userEmail": "user1@example.com"
},
"userId": "client:billing-integration",
"userEmail": "service-account-client@federation.invalid",
"userName": "Billing integration",
"ipAddress": "198.51.100.23",
"userAgent": "Mozilla/5.0 (...)",
"createdAt": "2026-04-19T05:04:19.876Z"
}

Error Responses​

StatusDescription
403logs:read scope is missing
404The specified audit log is not found

GET/v1/admin/llm-logs

List LLM logs. Returned in descending order of timestamp.

Request Example​

List LLM logs
1curl "https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/llm-logs?limit=10" \
2-H "Authorization: Bearer <access_token>"

Response Fields (200 OK)​

FieldTypeDescription
llmLogsarrayArray of LLM log objects
llmLogs[].llmLogIdstringLLM log ID
llmLogs[].timestampstring | nullTimestamp
llmLogs[].servicestring | nullService name
llmLogs[].operationstring | nullOperation name
llmLogs[].durationMsnumber | nullProcessing time (milliseconds)
llmLogs[].conversationIdstring | nullConversation ID
llmLogs[].intentTypestring | nullIntent type
llmLogs[].confidenceScorenumber | nullConfidence score
llmLogs[].toolsUsednumber | nullNumber of tool calls — not a list of tool names, and not a count of distinct tools (calling the same tool 5 times gives 5). null means not measured; 0 means the run was measured and made no tool call. The two are distinct — do not treat 0 as null.
llmLogs[].successboolean | nullSuccess/failure
llmLogs[].agentTypestring | nullAgent type
llmLogs[].agentLevelstring | nullAgent level
llmLogs[].taskComplexitystring | nullTask complexity
llmLogs[].currentMessagestring | nullCurrent message
llmLogs[].contextSummarystring | nullContext summary
llmLogs[].suggestedApproachstring | nullSuggested approach
llmLogs[].conversationGoalstring | nullConversation goal
llmLogs[].finalContentstring | nullFinal output content
llmLogs[].metadataobject | nullSupplementary metadata that varies by operation (keys vary)
llmLogs[].createdAtstring | nullCreation date and time
totalintegerTotal count
limitintegerNumber of items fetched
pageintegerPage number
hasMorebooleanWhether the next page exists
Example Response (200 OK)​
JSON
{
"llmLogs": [
{
"llmLogId": "33098",
"timestamp": "2026-04-19T04:12:51.102Z",
"service": "agent-executor",
"operation": "agent.intent.completed",
"durationMs": 5574.6,
"conversationId": "3b72544d-d6b5-4577-b5f3-c39293124a57",
"intentType": "complex_task",
"confidenceScore": 0.95,
"toolsUsed": null,
"success": null,
"agentType": "intent",
"agentLevel": "default",
"taskComplexity": null,
"currentMessage": "Tell me about this URL https://example.com/path",
"contextSummary": "User is asking about a URL.",
"suggestedApproach": "execute_single_tool",
"conversationGoal": "Information about the contents or purpose of the specified URL",
"finalContent": null,
"metadata": {
"message.id": "02038f42-154b-4363-9beb-d31512934ec5",
"task.complexity": "moderate",
"detected_language": "en",
"requires_planning": true
},
"createdAt": "2026-04-18T19:16:16.964Z"
},
{
"llmLogId": "33097",
"timestamp": "2026-04-19T04:12:48.730Z",
"service": "agent-executor",
"operation": "agent.guardrail.completed",
"durationMs": 3170.34,
"conversationId": "3b72544d-d6b5-4577-b5f3-c39293124a57",
"intentType": null,
"confidenceScore": null,
"toolsUsed": null,
"success": null,
"agentType": "intent.guardrails",
"agentLevel": null,
"taskComplexity": null,
"currentMessage": null,
"contextSummary": null,
"suggestedApproach": null,
"conversationGoal": null,
"finalContent": null,
"metadata": { "guardrail_detected": false },
"createdAt": "2026-04-18T19:16:14.619Z"
},
{
"llmLogId": "33096",
"timestamp": "2026-04-19T04:12:33.662Z",
"service": "agent-executor",
"operation": "agent.intent.completed",
"durationMs": 4213.47,
"conversationId": "4d7c798d-2e3e-4d40-86ab-cbb6c685a3fb",
"intentType": "conversation",
"confidenceScore": 1,
"toolsUsed": null,
"success": null,
"agentType": "intent",
"agentLevel": "default",
"taskComplexity": null,
"currentMessage": "Hello",
"contextSummary": "New conversation. User is greeting.",
"suggestedApproach": "conversational_response",
"conversationGoal": "Greeting exchange with the AI assistant",
"finalContent": null,
"metadata": {
"message.id": "cea9dbcc-4723-452a-bdcd-aa5f3a0e9ca6",
"task.complexity": "simple",
"detected_language": "en",
"requires_planning": false
},
"createdAt": "2026-04-18T19:15:59.681Z"
}
],
"total": 33098,
"limit": 3,
"page": 1,
"hasMore": true
}

GET/v1/admin/llm-gateway-logs

List LLM Gateway logs. Returned in descending order of creation time. One request = one row, recording usage such as model, provider, tokens, cost, and latency.

Request Example​

List LLM gateway logs
1curl "https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/llm-gateway-logs?limit=10" \
2-H "Authorization: Bearer <access_token>"

Response Fields (200 OK)​

FieldTypeDescription
llmGatewayLogsarrayArray of LLM Gateway log objects
llmGatewayLogs[].llmGatewayLogIdstringLLM Gateway log ID
llmGatewayLogs[].createdAtstring | nullCreation date and time
llmGatewayLogs[].virtualKeyIdstring | nullVirtual key ID (calling client)
llmGatewayLogs[].clientSessionIdstring | nullClient session ID
llmGatewayLogs[].clientAgentIdstring | nullClient agent ID
llmGatewayLogs[].apiFlavorstring | nullAPI flavor
llmGatewayLogs[].modelNamestring | nullModel name (as requested)
llmGatewayLogs[].resolvedModelstring | nullResolved model name
llmGatewayLogs[].providerstring | nullProvider
llmGatewayLogs[].deploymentstring | nullDeployment
llmGatewayLogs[].tierstring | nullTier
llmGatewayLogs[].streamboolean | nullWhether streaming was used
llmGatewayLogs[].successboolean | nullSuccess/failure
llmGatewayLogs[].httpStatusnumber | nullHTTP status
llmGatewayLogs[].errorTypestring | nullError type
llmGatewayLogs[].errorCodestring | nullError code
llmGatewayLogs[].usageStatusstring | nullUsage status
llmGatewayLogs[].latencyMsnumber | nullLatency (milliseconds)
llmGatewayLogs[].inputTokensnumber | nullInput token count
llmGatewayLogs[].outputTokensnumber | nullOutput token count
llmGatewayLogs[].totalTokensnumber | nullTotal token count
llmGatewayLogs[].cachedTokensnumber | nullCached token count
llmGatewayLogs[].cacheCreationInputTokensnumber | nullCache creation input token count
llmGatewayLogs[].reasoningTokensnumber | nullReasoning token count
llmGatewayLogs[].costUsdnumber | string | nullCost (USD)
llmGatewayLogs[].currencystring | nullCurrency
llmGatewayLogs[].metadataobject | nullSupplementary metadata (keys vary)
totalintegerTotal count
limitintegerNumber of items fetched
pageintegerPage number
hasMorebooleanWhether the next page exists

GET/v1/admin/access-logs

List access logs. Returned in descending order of timestamp.

Request Example​

List access logs
1curl "https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/access-logs?limit=10" \
2-H "Authorization: Bearer <access_token>"

Response Fields (200 OK)​

FieldTypeDescription
accessLogsarrayArray of access log objects
accessLogs[].timestampstringTimestamp
accessLogs[].sourceNamespacestring | nullSource namespace
accessLogs[].sourceIpstring | nullSource IP address
accessLogs[].methodstring | nullHTTP method
accessLogs[].hoststring | nullHost name
accessLogs[].pathstring | nullRequest path
accessLogs[].userAgentstring | nullUser-Agent
accessLogs[].statusCodenumber | nullHTTP status code
accessLogs[].durationMsnumber | nullProcessing time (milliseconds)
accessLogs[].authzResultstring | nullAuthorization result
accessLogs[].authzReasonstring | nullAuthorization reason
totalintegerTotal count
limitintegerNumber of items fetched
pageintegerPage number
hasMorebooleanWhether the next page exists
skippedCountintegerNumber of log rows on this page that could not be read (not included in accessLogs; total counts them)
Example Response (200 OK)​
JSON
{
"accessLogs": [
{
"timestamp": "2026-04-19T05:17:36.735896",
"sourceNamespace": "autonomous-agent",
"sourceIp": "127.0.0.1",
"method": "CONNECT",
"host": "optimizationguide-pa.googleapis.com:443",
"path": "",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
"statusCode": 200,
"durationMs": 1,
"authzResult": "allowed",
"authzReason": "allowed: All allow"
},
{
"timestamp": "2026-04-19T03:50:36.766451",
"sourceNamespace": "autonomous-agent",
"sourceIp": "127.0.0.1",
"method": "CONNECT",
"host": "update.googleapis.com:443",
"path": "",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
"statusCode": 200,
"durationMs": 6,
"authzResult": "allowed",
"authzReason": "allowed: All allow"
},
{
"timestamp": "2026-04-19T03:45:48.481023",
"sourceNamespace": "autonomous-agent",
"sourceIp": "127.0.0.1",
"method": "CONNECT",
"host": "optimizationguide-pa.googleapis.com:443",
"path": "",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
"statusCode": 200,
"durationMs": 0,
"authzResult": "allowed",
"authzReason": "allowed: All allow"
}
],
"total": 57806,
"limit": 3,
"page": 1,
"hasMore": true,
"skippedCount": 0
}

GET/v1/admin/access-logs/stats

Retrieves access log stats (the number of requests, the numbers allowed and denied, and the paths and hosts denied most often). Specify the period with the common query parameters from and to (both days are included). If omitted, the whole period is used. limit and page are not used.

Request Example​

Get access log stats
1curl "https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/access-logs/stats?from=2026-04-01&to=2026-04-15" \
2-H "Authorization: Bearer <access_token>"

Response Fields (200 OK)​

FieldTypeDescription
totalRequestsintegerNumber of requests in the period (those with a recorded authorization result)
allowedRequestsintegerNumber of allowed requests
deniedRequestsintegerNumber of denied requests
blockRatenumberRatio of denied requests (deniedRequests ÷ totalRequests, rounded to 4 decimal places, from 0 to 1; 0 when there are no requests in the period)
topBlockedPathsarrayRequest paths denied most often (up to 10, most first)
topBlockedPaths[].pathstring | nullRequest path. null if it is not recorded in the log
topBlockedPaths[].countintegerNumber of denials
topBlockedHostsarrayHosts denied most often (up to 10, most first)
topBlockedHosts[].hoststring | nullHost name. null if it is not recorded in the log
topBlockedHosts[].countintegerNumber of denials
Response Example (200 OK)​
JSON
{
"totalRequests": 57806,
"allowedRequests": 57790,
"deniedRequests": 16,
"blockRate": 0.0003,
"topBlockedPaths": [
{ "path": "/upload", "count": 9 },
{ "path": "/", "count": 7 }
],
"topBlockedHosts": [
{ "host": "files.example.com:443", "count": 12 },
{ "host": "api.example.net:443", "count": 4 }
]
}

GET/v1/admin/guardrail-alerts

Lists guardrail alerts. Results are returned in descending order of detection time.

These are records where Prompt Shield (prompt injection and jailbreak attempts) or Text Moderation (harmful content) detected a violation and execution was stopped. The detection surface (sourceSurface) is either AI agent execution (agent_executor) or the LLM Gateway (llm_gateway).

Request Example​

List guardrail alerts
1curl "https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/guardrail-alerts?limit=10&from=2026-08-01&to=2026-08-15" \
2-H "Authorization: Bearer <access_token>"

Response Fields (200 OK)​

FieldTypeDescription
guardrailAlertsarrayArray of guardrail alert objects
guardrailAlerts[].guardrailAlertIdstringGuardrail alert ID
guardrailAlerts[].detectedAtstringDetection time (ISO 8601 format)
guardrailAlerts[].sourceSurfacestringDetection surface (agent_executor: during AI agent execution / llm_gateway: via LLM Gateway)
guardrailAlerts[].detectionTypesarrayDetection types (jailbreak_attack: prompt injection / harmful_content: harmful content)
guardrailAlerts[].promptShieldOriginobject | nullWhere Prompt Shield detected the attack. Contains user_prompt (the user input) and document_indexes (positions in attached documents). Document contents are not included
guardrailAlerts[].moderationCategoriesobject | nullSeverity per category. Hate / Sexual / SelfHarm / Violence on a four-level scale of 0, 2, 4, and 6
guardrailAlerts[].moderationThresholdinteger | nullThreshold used for the decision
guardrailAlerts[].policyOutcomestringPolicy outcome. Currently only blocked (execution stopped)
guardrailAlerts[].responseTemplateCodestring | nullCode of the canned response returned to the user
guardrailAlerts[].statusstringTriage status (open: not yet handled / escalated: escalated / closed: resolved / false_positive: false detection)
guardrailAlerts[].resolutionCodestring | nullResolution code
guardrailAlerts[].resolvedAtstring | nullResolution time (ISO 8601 format)
guardrailAlerts[].resolvedBystring | nullUser ID of the administrator who resolved the alert
guardrailAlerts[].createdAtstringCreation time (ISO 8601 format)
guardrailAlerts[].updatedAtstringUpdate time (ISO 8601 format)
totalintegerTotal number of records
limitintegerNumber of items fetched
pageintegerPage number
hasMorebooleanWhether a next page exists
About the users who triggered detections

This API does not return information that identifies the user who triggered a detection (user ID, conversation ID, or message ID). It is intended for reviewing guardrail quality and tracking the status of safety responses, and cannot be used to trace the behavior of individual users.

In addition, detections of SelfHarm alone are not recorded as alerts.

Response Example (200 OK)​
JSON
{
"guardrailAlerts": [
{
"guardrailAlertId": "1f2e3d4c-5b6a-4789-8c9d-0e1f2a3b4c5d",
"detectedAt": "2026-08-13T02:10:00.000Z",
"sourceSurface": "agent_executor",
"detectionTypes": ["harmful_content"],
"promptShieldOrigin": null,
"moderationCategories": {
"Hate": 4,
"Sexual": 0,
"SelfHarm": 0,
"Violence": 0
},
"moderationThreshold": 2,
"policyOutcome": "blocked",
"responseTemplateCode": null,
"status": "open",
"resolutionCode": null,
"resolvedAt": null,
"resolvedBy": null,
"createdAt": "2026-08-13T02:10:00.100Z",
"updatedAt": "2026-08-13T02:10:00.100Z"
},
{
"guardrailAlertId": "2a3b4c5d-6e7f-4890-9a1b-2c3d4e5f6a7b",
"detectedAt": "2026-08-12T09:32:11.000Z",
"sourceSurface": "llm_gateway",
"detectionTypes": ["jailbreak_attack"],
"promptShieldOrigin": {
"user_prompt": true,
"document_indexes": []
},
"moderationCategories": null,
"moderationThreshold": null,
"policyOutcome": "blocked",
"responseTemplateCode": null,
"status": "closed",
"resolutionCode": "policy_violation_confirmed",
"resolvedAt": "2026-08-12T11:05:00.000Z",
"resolvedBy": "8f14e45f-ceea-4d3c-9b2a-1a2b3c4d5e6f",
"createdAt": "2026-08-12T09:32:11.050Z",
"updatedAt": "2026-08-12T11:05:00.000Z"
}
],
"total": 14,
"limit": 2,
"page": 1,
"hasMore": true
}

Master Data Management SaaS​

CRUD operations for organizations and job types. Unlike the read-only master data endpoints (/v1/organizations, /v1/job-types), creation, updates, and deletion require master:manage scope.

Endpoint List​

メソッドエンドポイント説明スコープ
GET/v1/admin/organizationsList organizationsmaster:manage
POST/v1/admin/organizationsCreate organizationmaster:manage
GET/v1/admin/organizations/:identifierGet organization detailmaster:manage
PATCH/v1/admin/organizations/:identifierUpdate organizationmaster:manage
DELETE/v1/admin/organizations/:identifierDelete organizationmaster:manage
GET/v1/admin/job-typesList job typesmaster:manage
POST/v1/admin/job-typesCreate job typemaster:manage
GET/v1/admin/job-types/:identifierGet job type detailmaster:manage
PATCH/v1/admin/job-types/:identifierUpdate job typemaster:manage
DELETE/v1/admin/job-types/:identifierDelete job typemaster:manage

GET/v1/admin/organizations

List organizations. Fetches all records (no pagination).

Request Example​

List organizations (admin)
1curl https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/organizations \
2-H "Authorization: Bearer <access_token>"

Response Fields (200 OK)​

FieldTypeDescription
organizationsarrayArray of organization objects
organizations[].codestringOrganization code
organizations[].namestringOrganization name
organizations[].displayOrderintegerDisplay order
organizations[].isActivebooleanEnabled/disabled
organizations[].createdAtstringCreation date and time
organizations[].updatedAtstringLast updated date and time
Example Response (200 OK)​
JSON
{
"organizations": [
{
"code": "sample_org",
"name": "Sample Organization",
"displayOrder": 0,
"isActive": true,
"createdAt": "2025-12-12T10:40:45.220Z",
"updatedAt": "2026-04-13T01:21:57.695Z"
},
{
"code": "sales",
"name": "Sales Division",
"displayOrder": 1,
"isActive": true,
"createdAt": "2025-12-24T19:26:37.000Z",
"updatedAt": "2025-12-24T19:26:37.000Z"
},
{
"code": "engineering",
"name": "Engineering Division",
"displayOrder": 2,
"isActive": true,
"createdAt": "2025-12-24T19:26:37.000Z",
"updatedAt": "2025-12-24T19:26:37.000Z"
},
{
"code": "other",
"name": "Other",
"displayOrder": -1,
"isActive": false,
"createdAt": "2025-12-24T19:26:38.000Z",
"updatedAt": "2026-01-17T19:08:21.630Z"
}
]
}

Error Responses​

StatusDescription
403master:manage scope is missing

POST/v1/admin/organizations

Create an organization.

Request Body​

パラメータ型必須説明
codestring必須Organization code (unique)
namestring必須Organization name
displayOrderinteger—Display order. If omitted, the item is appended to the end of existing items
isActiveboolean—Enabled/disabled (default: true)
Example Response (201 Created)​
JSON
{
"code": "marketing",
"name": "Marketing Division",
"displayOrder": 3,
"isActive": true,
"createdAt": "2026-04-19T02:15:32.000Z",
"updatedAt": "2026-04-19T02:15:32.000Z"
}

Error Responses​

StatusDescription
400Invalid request body (missing code / name, code or name is not a string, isActive is not a boolean, displayOrder is not an integer, the body is malformed JSON or not a JSON object (code: "invalid_body"), etc.)
415The body Content-Type is not application/json (code: "unsupported_media_type")
403master:manage scope is missing
409An organization with the same code already exists

GET/v1/admin/organizations/:identifier

Get organization detail. Can be specified by UUID or organization code.

Path Parameters​

パラメータ型必須説明
identifierstring必須Organization UUID or organization code

Request Example​

Get organization
1curl https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/organizations/sales \
2-H "Authorization: Bearer <access_token>"
Example Response (200 OK)​
JSON
{
"code": "sales",
"name": "Sales Division",
"displayOrder": 1,
"isActive": true,
"createdAt": "2025-12-24T19:26:37.000Z",
"updatedAt": "2025-12-24T19:26:37.000Z"
}

Error Responses​

StatusDescription
403master:manage scope is missing
404The specified organization is not found

PATCH/v1/admin/organizations/:identifier

Update an organization. Only name and isActive can be updated.

Path Parameters​

パラメータ型必須説明
identifierstring必須Organization UUID or organization code

Request Body​

パラメータ型必須説明
namestring—Organization name
isActiveboolean—Enabled/disabled
Example Response (200 OK)​
JSON
{
"code": "sales",
"name": "Sales Division",
"isActive": true,
"createdAt": "2025-12-24T19:26:37.000Z",
"updatedAt": "2026-04-19T02:18:40.000Z"
}

Error Responses​

StatusDescription
400Invalid request body (name exceeds 255 characters, neither name nor isActive provided, name is not a string or isActive is not a boolean, the body is malformed JSON or not a JSON object (code: "invalid_body"), etc.). Fields other than name / isActive are ignored
415The body Content-Type is not application/json (code: "unsupported_media_type")
403master:manage scope is missing
404The specified organization was not found

DELETE/v1/admin/organizations/:identifier

Delete an organization.

Path Parameters​

パラメータ型必須説明
identifierstring必須Organization UUID or organization code

Request Example​

Delete organization
1curl -X DELETE https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/organizations/sales \
2-H "Authorization: Bearer <access_token>"
Response Example (200 OK)​
JSON
{ "code": "sales", "deleted": true }
FieldTypeDescription
codestringThe deleted organization code (returns the path parameter identifier as-is)
deletedbooleanAlways true

Error Responses​

StatusDescription
403master:manage scope is missing
404The specified organization was not found

GET/v1/admin/job-types

List job types. Fetches all records (no pagination). Response fields have the same structure as the organizations list (organizations → jobTypes, organization code → job type code).

Response Fields (200 OK)​

FieldTypeDescription
jobTypesarrayArray of job type objects
jobTypes[].codestringJob type code
jobTypes[].namestringJob type name
jobTypes[].displayOrderintegerDisplay order
jobTypes[].isActivebooleanEnabled/disabled
jobTypes[].createdAtstringCreation date and time
jobTypes[].updatedAtstringLast updated date and time
Example Response (200 OK)​
JSON
{
"jobTypes": [
{
"code": "engineer",
"name": "Engineer",
"displayOrder": 1,
"isActive": true,
"createdAt": "2025-12-24T19:26:37.000Z",
"updatedAt": "2025-12-24T19:26:37.000Z"
},
{
"code": "sales",
"name": "Sales",
"displayOrder": 2,
"isActive": true,
"createdAt": "2025-12-24T19:26:37.000Z",
"updatedAt": "2025-12-24T19:26:37.000Z"
},
{
"code": "other",
"name": "Other",
"displayOrder": -1,
"isActive": false,
"createdAt": "2025-12-24T19:26:38.000Z",
"updatedAt": "2026-01-17T19:08:21.630Z"
}
]
}

Error Responses​

StatusDescription
403master:manage scope is missing

POST/v1/admin/job-types

Create a job type. The request body has the same structure as organization creation.

Example Response (201 Created)​
JSON
{
"code": "manager",
"name": "Manager",
"displayOrder": 3,
"isActive": true,
"createdAt": "2026-04-19T02:20:15.000Z",
"updatedAt": "2026-04-19T02:20:15.000Z"
}

Error Responses​

StatusDescription
400Invalid request body (missing code / name, code or name is not a string, isActive is not a boolean, displayOrder is not an integer, the body is malformed JSON or not a JSON object (code: "invalid_body"), etc.)
415The body Content-Type is not application/json (code: "unsupported_media_type")
403master:manage scope is missing
409A job type with the same code already exists

GET/v1/admin/job-types/:identifier

Get job type detail. Can be specified by UUID or job type code.

Path Parameters​

パラメータ型必須説明
identifierstring必須Job type UUID or job type code

Request Example​

Get job type
1curl https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/job-types/engineer \
2-H "Authorization: Bearer <access_token>"
Example Response (200 OK)​
JSON
{
"code": "engineer",
"name": "Engineer",
"displayOrder": 1,
"isActive": true,
"createdAt": "2025-12-24T19:26:37.000Z",
"updatedAt": "2025-12-24T19:26:37.000Z"
}

Error Responses​

StatusDescription
403master:manage scope is missing
404Job type not found

PATCH/v1/admin/job-types/:identifier

Update a job type. Only name and isActive can be updated.

Path Parameters​

パラメータ型必須説明
identifierstring必須Job type UUID or job type code

Request Body​

パラメータ型必須説明
namestring—Job type name
isActiveboolean—Active/Inactive

Request Example​

Update job type
1curl -X PATCH https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/job-types/engineer \
2-H "Authorization: Bearer <access_token>" \
3-H "Content-Type: application/json" \
4-d '{"name": "Senior Engineer", "isActive": true}'
Example Response (200 OK)​
JSON
{
"code": "engineer",
"name": "Senior Engineer",
"isActive": true,
"createdAt": "2025-12-24T19:26:37.000Z",
"updatedAt": "2026-04-19T02:22:55.000Z"
}

Error Responses​

StatusDescription
400Invalid request body (name exceeds 255 characters, neither name nor isActive provided, name is not a string or isActive is not a boolean, the body is malformed JSON or not a JSON object (code: "invalid_body"), etc.). Fields other than name / isActive are ignored
415The body Content-Type is not application/json (code: "unsupported_media_type")
403master:manage scope is missing
404The specified job type was not found

DELETE/v1/admin/job-types/:identifier

Delete a job type. The response structure is the same as organization deletion.

Path Parameters​

パラメータ型必須説明
identifierstring必須Job type UUID or job type code

Request Example​

Delete job type
1curl -X DELETE https://api.fd.agenticstar.tm.softbank.jp/api/v1/admin/job-types/engineer \
2-H "Authorization: Bearer <access_token>"
Example Response (200 OK)​
JSON
{ "code": "engineer", "deleted": true }

Error Responses​

StatusDescription
403master:manage scope is missing
404The specified job type was not found

Projects SaaS​

This section covers calls made with a system integration token (Client Credentials flow). For calls made with an application token (Authorization Code flow), see User API Reference (Projects).

A project is the unit in which multiple agents are placed to carry out work. From an external system you can list projects, start a run, and check run status.

There are two project types, and each is triggered differently.

TypeDescriptionHow runs are triggered
workflowAdvances through steps in order. A run starts from the first enabled step.POST /v1/projects/{projectId}/runs
cycleKeeps multiple agents running on their own schedules. An external event can add one extra ad-hoc run.POST /v1/projects/{projectId}/triggers/{triggerId}/fire
What you can operate on
The projects you can operate on are limited to the project restriction configured in Console (Console Guide — Configuring project restrictions). Specifying a project ID outside that range returns the same 404 Not Found as a project that does not exist. A system integration token can call only the four project API endpoints listed here. Calling any other project API returns 403 Forbidden (forbidden).

Endpoints​

メソッドエンドポイント説明Scope (SaaS)
GET/v1/projectsList projectsproject:read
POST/v1/projects/{projectId}/runsStart a project runproject:run
POST/v1/projects/{projectId}/triggers/{triggerId}/fireFire a trigger for one ad-hoc runproject:run
GET/v1/projects/{projectId}/runs/{runId}Get run statusproject:read

GET/v1/projects

Retrieves the list of projects you can access. Supports cursor-based pagination. cycle projects also appear in the list, but they are not valid targets for starting a run (POST /v1/projects/{projectId}/runs).

Query Parameters​

ParameterTypeDefaultDescription
limitinteger50Number of items to retrieve (1-100)
cursorstring—Cursor for the next page (the cursor value from the previous response)

Any other query parameter is ignored. myRole can only be used with a user token, so it is ignored if specified.

Response Fields (200 OK)​

FieldTypeDescription
projectsarrayArray of project objects
projects[].projectIdstringProject ID (UUID)
projects[].namestringProject name
projects[].typestring"workflow" or "cycle"
projects[].statusstringProject state. One of "active", "paused" or "archived"
projects[].tagsarrayArray of tags. An empty array when none are set
hasMorebooleanWhether a next page exists
cursorstringCursor for the next page. Included only when hasMore is true

Response Example​

JSON
{
"projects": [
{
"projectId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Order processing flow",
"type": "workflow",
"status": "active",
"tags": []
},
{
"projectId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"name": "Always-on inquiry handling",
"type": "cycle",
"status": "active",
"tags": []
}
],
"hasMore": false
}

Error Responses​

StatusDescription
400limit is outside 1-100 or cursor is invalid (code is invalid_parameter)
403The project:read scope is missing, or the project restriction is missing or invalid (code is insufficient_scope or invalid_project_grant)

POST/v1/projects/{projectId}/runs

Starts a run of a workflow project. Calling it for a cycle project returns 409 Conflict (unsupported_project_type).

Request Headers​

HeaderRequiredDescription
Idempotency-KeyRequiredA duplicate-run prevention key issued by the caller. 8-128 characters using alphanumerics and _ . : - only

Path Parameters​

パラメータ型必須説明
projectIdstring必須Project ID (UUID)

Request Body​

No body is required. If you send one, make it a JSON object. Any fields it contains are ignored.

Response Fields (201 Created / 200 OK)​

FieldTypeDescription
runIdstringRun ID (UUID). Use it to retrieve run status
existingboolean?true when an existing run was returned for a resend with the same Idempotency-Key. Not included on the first call

The first call returns 201 Created; a resend with the same Idempotency-Key returns 200 OK.

Request Example​

curl
curl -X POST https://api.fd.agenticstar.tm.softbank.jp/api/v1/projects/550e8400-e29b-41d4-a716-446655440000/runs \
-H "Authorization: Bearer <access_token>" \
-H "Idempotency-Key: nightly-batch-20260917" \
-H "Content-Type: application/json" \
-d '{}'

Response Example​

JSON
{
"runId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
How Idempotency-Key is handled
  • Keys are matched per project. They do not expire.
  • Resending with the same key returns the same run even after the project has been paused, after the concurrent-run limit has been reached, or after that run has finished.
  • If a timeout leaves the outcome unknown, simply resend with the same key. Nothing is run twice.
  • To start a different run, always issue a new key.

Error Responses​

StatuscodeDescription
400idempotency_key_requiredThe Idempotency-Key header is missing
400idempotency_key_invalidThe Idempotency-Key length or character set is invalid
400invalid_parameterprojectId is not a UUID
400invalid_bodyThe request body is malformed JSON or is not a JSON object
413body_too_largeThe request body exceeds 16 KiB
415unsupported_media_typeA request body is sent with a Content-Type other than application/json
403insufficient_scopeThe project:run scope is missing
403invalid_project_grantThe project restriction is missing or invalid
404project_not_foundThe project does not exist or is not accessible
400approvers_requiredAn enabled review step has no reviewers configured
409unsupported_project_typeA cycle project was specified
409project_inactiveThe project is not active (paused or archived)
409unsupported_runtimeThe project cannot run in this configuration, for example because agent runtimes are mixed
429too_many_active_runsThe project already has the maximum number of runs (3 in total) that are running or awaiting review

POST/v1/projects/{projectId}/triggers/{triggerId}/fire

Fires a webhook trigger configured on a cycle project and runs the target agent once, as an extra ad-hoc run. Calling it for a workflow project returns 404 Not Found.

The scheduled runs stay exactly as configured. A fired run is added separately from the schedule. Where an earlier fire has not started running yet, however, a later fire may be merged into that run. Where it is, jobId returns the same value as the earlier fire, so the number of fires and the number of runs do not necessarily match.

Path Parameters​

パラメータ型必須説明
projectIdstring必須Project ID (UUID)
triggerIdstring必須ID of the trigger to fire (UUID)

Request Body​

パラメータ型必須説明
eventIdstring必須A unique ID issued by the sender. Resending the same ID is treated as a duplicate. 1-160 characters using alphanumerics and _ . : @ + - only
payloadany—Arbitrary JSON passed to the agent. It is serialized to a JSON string and added to the request sent to the agent; anything beyond 8,000 characters after serialization is omitted

Response Fields (202 Accepted)​

FieldTypeDescription
resultstring"accepted" (newly accepted) or "duplicate" (already accepted for the same eventId)
jobIdstringID of the receiving job. It cannot be used to get run status (GET /v1/projects/{projectId}/runs/{runId})

Response Example​

JSON
{
"result": "accepted",
"jobId": "9b2e4c61-0f3a-4a9b-9c1d-2f7e5a8b3c40"
}
What 202 means here

This 202 Accepted means only that the request was recorded as accepted. The run happens afterwards, and its outcome is not part of this response. Do not treat 202 as business success.

Resending​

Idempotency is decided by the combination of project, trigger, and eventId. Resending the same content returns 202 with result: "duplicate". Sending the same eventId with a different payload returns 409 Conflict (event_conflict).

Error Responses​

StatuscodeDescription
400invalid_event_ideventId is missing or has an invalid format
400invalid_parameterprojectId or triggerId is not a UUID
400invalid_bodyThe request body is malformed JSON or is not a JSON object
415unsupported_media_typeA request body is sent with a Content-Type other than application/json
403insufficient_scopeThe project:run scope is missing
403invalid_project_grantThe project restriction is missing or invalid
404trigger_not_foundThe project or trigger does not exist, is not accessible, the trigger is not a webhook trigger, or a workflow project was specified
409trigger_disabledThe trigger is disabled
409project_not_activeThe project is not in a runnable state
409placement_unavailableThe target agent placement does not exist, or no execution principal is configured
409event_conflictThe same eventId was sent with a different payload
413body_too_largeThe request body exceeds 16 KiB

GET/v1/projects/{projectId}/runs/{runId}

Retrieves the status of a run. Besides runs started through the API (POST /v1/projects/{projectId}/runs), runs started from the UI, by email, or on a schedule can also be retrieved. cycle projects do not create runs, so they are out of scope for this endpoint.

Path Parameters​

パラメータ型必須説明
projectIdstring必須Project ID (UUID)
runIdstring必須Run ID (UUID)

Response Fields (200 OK)​

FieldTypeDescription
runIdstringRun ID (UUID)
statusstringRun state. One of "running" (running), "waiting_gate" (awaiting review), "closed_done" (completed), "closed_rejected" (ended by rejection), "closed_failed" (ended by failure) or "cancelled" (cancelled). Any value other than "running" and "waiting_gate" means the run has ended
originTypestring | nullHow the run started. One of "manual" (started from the UI), "api" (started through the API), "mail" (started by email) or "cron" (scheduled)
originRefstring | nullA reference value that depends on how the run started. For a run started through the API, the Idempotency-Key used to start it
currentStepIdstring | nullID (UUID) of the step in progress. While the run proceeds in separate lanes, the ID of the step before the branch. null for a completed run. For a run that ended for another reason, the ID of the step at that time may remain
startedByRefstring | nullWho or what started the run. See the "Who started the run" table below
actorLabelstring | nullDisplay name of a starter that is not a user (the system integration name or the sender address of an email). null otherwise
startedAtstring | nullStart time (ISO 8601). null before it starts
endedAtstring | nullEnd time (ISO 8601). null before it ends
summarystring | nullFor a completed run, the output of the last completed step that recorded an output (first 2,000 characters). null if there is no such step and for a run that has not completed
runtimeKindstring | nullKind of runtime ("autonomous"). May be null for older runs
cancelRequestedAtstring | nullTime (ISO 8601) when cancellation was requested. null if not requested
configRevisionnumber | nullRevision of the case configuration (Marketplace edition runs only). null for SaaS runs
stepsarrayRecords of the step runs, in the order they were recorded
steps[].runStepIdstringID of the step run (starts with "rs:")
steps[].stepIdstring | nullStep ID (UUID)
steps[].placementIdstring | nullID (UUID) of the placement that handled the step. null for rows that do not run an agent (such as review steps)
steps[].executionIdstring | nullID of the agent execution. Set once the agent starts running
steps[].conversationIdstring | nullID of the conversation of the agent execution. Set once the agent starts running
steps[].statusstringOne of "pending" (waiting to run), "running" (running), "waiting_gate" (awaiting review), "done" (done), "failed" (failed) or "skipped" (skipped)
steps[].attemptnumber | nullRetry count within the same visit (starting at 1)
steps[].lanestring | nullID of the lane the step belongs to. "main" for steps that are not in a separate lane
steps[].scheduledAtstring | nullWhen the step has a scheduled time, the time (ISO 8601) this row waits for. null once it starts
steps[].startedAtstring | nullStart time (ISO 8601)
steps[].endedAtstring | nullEnd time (ISO 8601)
steps[].outputSummarystring | nullSummary of the step output
steps[].outcomestring | nullResult of the agent execution. One of "completed", "incomplete", "failed", "timeout", "stopped", "denied" or "skipped". null for rows without a result
steps[].reasonCodestring | nullReason code for the result
steps[].heldbooleanWhether the step is held because the project is paused and is waiting to resume
steps[].visitnumber | nullWhich visit to this step this is (increases with send-backs). null for rows without this record
steps[].reworkReasonstring | nullReason for the send-back
steps[].gateForstring | nullFor a review row, the step run (runStepId) it was raised for
steps[].routedFromstring | nullWhen steps were skipped by choosing a destination, the step run (runStepId) that chose it
steps[].latestring | nullWhy a result that arrived late was not used to advance the run
steps[].gateobject | nullSummary of a review step. null for rows that are not review steps
steps[].gate.decisionstring | nullOne of "proceed", "send_back" or "reject". null if not decided yet
steps[].gate.waitSourcestring | nullWhat the review waits for. "human" (a person's decision) or "external" (an external condition)
plannedPlacementsarrayOrder of steps and placements planned to run, based on the configuration when the run started
plannedPlacements[].stepIdstring | nullStep ID (UUID)
plannedPlacements[].placementIdstring | nullPlacement ID (UUID). null for review steps and steps without an agent
lanesarrayStatus of each lane after the branch. An empty array before the branch and for runs that do not use lanes
lanes[].laneIdstringLane ID
lanes[].namestring | nullLane name
lanes[].positionnumber | nullLane order (starting at 1)
lanes[].statestringOne of "running" (running), "waiting_gate" (awaiting review), "arrived" (waiting to join) or "closed" (ended)
lanes[].currentStepIdstring | nullID (UUID) of the step in progress in that lane. null for a lane waiting to join. For a lane that has ended, the ID of its last step may remain
lanes[].arrivedbooleanWhether the lane has reached the join point

The fields are the same regardless of the token used for the call (an application or a system integration).

Who started the run​
Started bystartedByRefactorLabel
A user (from the UI, through the API, or by email sent from a member address)User IDnull
A system integration"client:" followed by the Client ID of the system integration. "system:federation-api" if the Client ID is unknownName of the system integration (null if unknown)
Email sent from an address that is not a member"mail:" followed by a hash of the senderSender address
A schedulenullnull

For runs started by a system integration before 2026-09-25, startedByRef is null.

Response Example​

JSON
{
"runId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "running",
"originType": "api",
"originRef": "nightly-batch-20260917",
"currentStepId": "5d6e7f80-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"startedByRef": "bbbe4306-6975-420b-af47-fb4c8f48b4aa",
"actorLabel": null,
"startedAt": "2026-09-17T01:30:00.000Z",
"endedAt": null,
"summary": null,
"runtimeKind": "autonomous",
"cancelRequestedAt": null,
"configRevision": null,
"steps": [
{
"runStepId": "rs:1042",
"stepId": "5d6e7f80-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
"placementId": "e4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8",
"executionId": "6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d",
"conversationId": "9c8b7a6d-5e4f-4a3b-9c2d-1e0f9a8b7c6d",
"status": "running",
"attempt": 1,
"lane": "main",
"scheduledAt": null,
"startedAt": "2026-09-17T01:30:01.000Z",
"endedAt": null,
"outputSummary": null,
"outcome": null,
"reasonCode": null,
"held": false,
"visit": 1,
"reworkReason": null,
"gateFor": null,
"routedFrom": null,
"late": null,
"gate": null
}
],
"plannedPlacements": [
{ "stepId": "5d6e7f80-1a2b-4c3d-8e9f-0a1b2c3d4e5f", "placementId": "e4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8" },
{ "stepId": "c2f1a8e4-6b3d-4e7a-9c15-8d2e4f6a7b90", "placementId": null }
],
"lanes": []
}

Error Responses​

StatuscodeDescription
400invalid_parameterprojectId or runId is not a UUID
403insufficient_scopeThe project:read scope is missing
403invalid_project_grantThe project restriction is missing or invalid
404run_not_foundThe run does not exist, belongs to another project, or is not accessible

Notes on the Project API​

ItemDetail
What 404 meansThe same 404 Not Found is returned whether the project does not exist or is not accessible, and the response does not reveal which of the two applies. The code is fixed per endpoint: project_not_found for starting a run, trigger_not_found for firing a trigger, and run_not_found for run status.
When the type is out of scopeCalling trigger fire on a workflow project, or run status on a cycle project, returns 404. Starting a run on a cycle project is the one exception: it returns 409 unsupported_project_type.
Request bodyWhen you send a body to start a run or fire a trigger, make it a JSON object. Anything other than Content-Type: application/json returns 415, malformed JSON or a body that is not a JSON object returns 400 (invalid_body), and a body larger than 16 KiB returns 413.
Unknown fields / queriesFields and query parameters that are not in the specification are ignored. An invalid value for a documented query parameter, or a cursor that cannot be read, returns 400 Bad Request.
Timeouts504 Gateway Timeout does not mean "it did not run". Resend a run start with the same Idempotency-Key, and a trigger fire with the same eventId and the same body.

Error Responses​

HTTP Status Codes​

HTTP status codes that may be returned by any endpoint.

StatusDescription
400 Bad RequestInvalid request parameters
401 UnauthorizedInvalid or missing token
403 ForbiddenInsufficient permissions to access the resource
404 Not FoundResource not found
409 ConflictResource conflict (e.g., duplicate code)
413 Payload Too LargeRequest body exceeds the size limit
415 Unsupported Media TypeThe request body format (Content-Type) is not supported
429 Too Many RequestsRate limit exceeded
500 Internal Server ErrorInternal server error
502 Bad GatewayCommunication error with an upstream service
503 Service UnavailableService temporarily unavailable
504 Gateway TimeoutUpstream service response timeout

Error Response Format​

All error responses are returned with the following common structure.

FieldTypeDescription
error.typestringError category. One of "invalid_request_error", "authentication_error", "insufficient_scope_error", "forbidden_error", "not_found_error", "conflict_error", "payload_too_large_error", "rate_limit_error", "server_error", or "upstream_error"
error.messagestringHuman-readable error message
error.codestringMachine-processable error code (e.g., "missing_parameter", "invalid_parameter", "invalid_token")
error.paramstringThe parameter name that caused the error. Included only for validation errors
error.suggested_actionstringRecommended action to resolve the error. Included only for some errors
JSON
{
"error": {
"type": "invalid_request_error",
"message": "Invalid parameter: limit",
"code": "invalid_parameter",
"param": "limit",
"suggested_action": "limit must be between 1 and 100"
}
}

Automatically Recorded Management Operations SaaS​

The following management operations automatically generate an audit log entry.

ResourceOperationaction
UserChange role (promote to admin)promote
UserChange role (demote to general)demote
UserApproveapprove
UserRevoke approvalreject
UserDeletedelete
OrganizationCreatecreate
OrganizationUpdateupdate
OrganizationDeletedelete
Job typeCreatecreate
Job typeUpdateupdate
Job typeDeletedelete