Create a SIEM destination
const url = 'http://localhost:8000/siem/destinations';
const options = {
method: 'POST',
headers: {
'API-Version': '2026-06-01.beta',
'API-Key': '<API-Key>',
'Content-Type': 'application/json'
},
body: '{"name":"example","enabled":true,"type":"syslog","source":{"type":"keycloak_events","cluster_ids":["2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"],"realms":["customer-portal"],"keycloak_event_types":["example"]},"batch":{"max_events":1000,"max_interval_seconds":60},"syslog":{"host":"example","port":1,"protocol":"udp","format":"cef"},"s3":{"bucket":"example","region":"example","prefix":"example","auth_type":"access_key","access_key_id":"example","secret_access_key":"example","role_arn":"example","external_id":"example"},"http":{"url":"https://example.com","headers":{"additionalProperty":"example"},"auth_type":"none","bearer_token":"example","username":"example","password":"example","workspace_id":"example","shared_key":"example"}}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}curl --request POST \
--url http://localhost:8000/siem/destinations \
--header 'API-Key: <API-Key>' \
--header 'API-Version: 2026-06-01.beta' \
--header 'Content-Type: application/json' \
--data '{ "name": "example", "enabled": true, "type": "syslog", "source": { "type": "keycloak_events", "cluster_ids": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ], "realms": [ "customer-portal" ], "keycloak_event_types": [ "example" ] }, "batch": { "max_events": 1000, "max_interval_seconds": 60 }, "syslog": { "host": "example", "port": 1, "protocol": "udp", "format": "cef" }, "s3": { "bucket": "example", "region": "example", "prefix": "example", "auth_type": "access_key", "access_key_id": "example", "secret_access_key": "example", "role_arn": "example", "external_id": "example" }, "http": { "url": "https://example.com", "headers": { "additionalProperty": "example" }, "auth_type": "none", "bearer_token": "example", "username": "example", "password": "example", "workspace_id": "example", "shared_key": "example" } }'Creates a SIEM destination for the workspace. Credentials are write-only and are never returned.
Required scope: siem:write
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
External SIEM destination type.
object
Workspace data stream forwarded to the destination.
Cluster IDs to include. Omit to include all clusters in the workspace.
Realm names to include. Omit to include all realms in the selected clusters.
Keycloak event type codes to include. Required when type is keycloak_events; rejected for other source types.
object
object
object
Required when auth_type is access_key. Write-only.
Required when auth_type is access_key. Write-only.
Required when auth_type is assume_role.
object
Webhook endpoint that receives the exported events. Must be a complete https:// URL with a host; plain http:// endpoints and characters that are illegal in a URI (<, >, ", spaces) are rejected on create and update.
Optional HTTP headers to include in the request. Every value must be a string, a non-string value (boolean, number, object or array) is rejected. Values are write-only and are never returned.
object
Required when auth_type is bearer. Write-only. The token is sent verbatim as an Authorization: Bearer header value, so it is limited to RFC 6750 token68 characters (letters, digits and -._~+/=) and 4096 characters. A token outside that set is rejected with a 422 validation error.
Required when auth_type is basic. Write-only.
Required when auth_type is basic. Write-only.
Azure Log Analytics workspace ID. Required when auth_type is shared_key.
Base64-encoded Azure Log Analytics primary or secondary key. Required when auth_type is shared_key. Write-only.
Responses
Section titled “Responses”The request has succeeded and a new resource has been created as a result.
Saved SIEM forwarding destination for a workspace.
object
External SIEM destination type.
object
Workspace data stream forwarded to the destination.
Cluster IDs to include. Omit to include all clusters in the workspace.
Realm names to include. Omit to include all realms in the selected clusters.
Keycloak event type codes to include. Required when type is keycloak_events; rejected for other source types.
object
object
object
object
Azure Log Analytics workspace ID. Present when auth_type is shared_key.
Example
{
"type": "syslog",
"source": {
"type": "keycloak_events",
"realms": [
"customer-portal"
]
},
"batch": {
"max_events": 1000,
"max_interval_seconds": 60
},
"syslog": {
"protocol": "udp",
"format": "cef"
},
"s3": {
"auth_type": "access_key"
},
"http": {
"auth_type": "none"
},
"health_status": "healthy"
}The server could not understand the request due to invalid syntax.
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}Access is unauthorized.
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}Client error
Returned when a workspace plan quota would be exceeded. required_plan indicates the minimum plan needed to complete the request.
object
Machine-readable identifier of the quota that was hit, so a client can tell
quotas apart without parsing detail. Known values include cluster_limit
(the workspace’s total cluster allowance), cluster_size_quota (the
allowance for the requested cluster size) and cluster_size (the requested
size is not offered on the plan at all). New values may be added.
How many of the resource the workspace currently has.
Maximum allowed by the current plan. 0 means the plan does not include the resource at all.
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com",
"current_plan": "example",
"required_plan": "example",
"code": "example",
"current_usage": 1,
"current_limit": 1
}Access is forbidden.
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}The server cannot find the requested resource.
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}Client error
object
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com",
"errors": [
{
"field": "example",
"detail": "example",
"code": "example",
"value": "example"
}
]
}Client error
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}Headers
Section titled “Headers”Server error
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}Server error
RFC 9457 Problem Details object.
object
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com"
}