Skip to content

SIEM Integration

VeraID pushes audit logs to your Security Information and Event Management (SIEM) platform for centralized security monitoring, correlation with other data sources, and compliance reporting. Delivery is a batch push you trigger per integration (see Pushing events); VeraID does not yet forward each audit entry as it is written.

Supported Platforms

PlatformTypeTransportDefault Format
SplunkSPLUNKHTTPS (HEC)JSON
DatadogDATADOGHTTPSJSON
ElasticELASTICHTTPSJSON
Generic HTTPS (including Sumo Logic)GENERIC_HTTPSHTTPSJSON
Generic SyslogGENERIC_SYSLOGNot yet supportedSyslog (RFC 5424)

Supported Formats

FormatDescriptionUse Case
CEFCommon Event FormatArcSight, QRadar, and other CEF-compatible SIEMs
LEEFLog Event Extended FormatIBM QRadar native format
JSONStructured JSONSplunk, Datadog, Elastic, Sumo Logic, and custom pipelines
SYSLOGRFC 5424 SyslogSyslog collectors and legacy SIEM platforms

Authentication Types

TypeIdentifierDescription
API KeyAPI_KEYAPI key sent as a header (e.g., Datadog DD-API-KEY)
Bearer TokenBEARER_TOKENOAuth2 bearer token in Authorization header
Basic AuthBASIC_AUTHUsername and password with HTTP Basic Authentication
NoneNONENo authentication (e.g., internal syslog collectors)

Creating a SIEM Integration

API

Terminal window
curl -X POST https://app.veraid.io/api/v1/siem/integrations \
-H "Cookie: veraid-session=<your session cookie>" \
-H "Content-Type: application/json" \
-d '{
"name": "Production Splunk",
"type": "SPLUNK",
"endpoint": "https://splunk.company.com:8088/services/collector/event",
"authType": "API_KEY",
"authConfig": {
"headerName": "Authorization",
"headerValue": "Splunk abc123-def456-ghi789"
},
"format": "JSON",
"eventTypes": [
"identity.create",
"identity.suspend",
"credential.revoke",
"credential.rotation_completed",
"policy.evaluate.credential.read"
]
}'

Response (201 Created; authConfig is never returned):

{
"integration": {
"id": "5b7e2c1a-9d4f-4e3b-8a6c-2f1d0e9b8a7c",
"organizationId": "org_abc",
"name": "Production Splunk",
"type": "SPLUNK",
"endpoint": "https://splunk.company.com:8088/services/collector/event",
"authType": "API_KEY",
"format": "JSON",
"severityFilter": [],
"eventTypes": [
"identity.create",
"identity.suspend",
"credential.revoke",
"credential.rotation_completed",
"policy.evaluate.credential.read"
],
"isActive": true,
"lastSyncAt": null,
"lastError": null,
"createdAt": "2026-03-19T10:00:00.000Z",
"updatedAt": "2026-03-19T10:00:00.000Z"
}
}

Request Fields

FieldTypeRequiredDescription
namestringYesDisplay name for the integration
typestringYesPlatform type: SPLUNK, DATADOG, ELASTIC, GENERIC_HTTPS, GENERIC_SYSLOG
endpointstringYesURL or host:port of the SIEM collector
authTypestringYesAuthentication type: API_KEY, BEARER_TOKEN, BASIC_AUTH, NONE
authConfigobjectYesAuthentication configuration as string values; send {} when authType is NONE
formatstringYesOutput format: CEF, LEEF, JSON, SYSLOG
eventTypesstring[]NoAudit actions to forward, matched exactly. Empty (the default) forwards every action. See Event Type Filtering
severityFilterstring[]NoStored, but not applied to pushes today. See Severity Filtering
isActivebooleanNoDefaults to true

Platform-Specific Configuration

Splunk

{
"name": "Splunk HEC",
"type": "SPLUNK",
"endpoint": "https://splunk.company.com:8088/services/collector/event",
"authType": "API_KEY",
"authConfig": {
"headerName": "Authorization",
"headerValue": "Splunk your-hec-token"
},
"format": "JSON"
}

Events are sent as Splunk HEC JSON payloads:

{
"event": {
"action": "credential.rotation_completed",
"actorType": "SYSTEM",
"actorId": "system",
"resourceType": "credential",
"resourceId": "cred_abc123",
"outcome": "SUCCESS",
"severity": "MEDIUM",
"metadata": {
"identityName": "aws-deploy-prod",
"rotationReason": "scheduled",
"gracePeriodHours": 24
}
},
"time": 1742382000,
"sourcetype": "veraid:audit",
"source": "veraid",
"host": "app.veraid.io"
}

Datadog

{
"name": "Datadog Logs",
"type": "DATADOG",
"endpoint": "https://http-intake.logs.datadoghq.com/api/v2/logs",
"authType": "API_KEY",
"authConfig": {
"headerName": "DD-API-KEY",
"headerValue": "your-datadog-api-key"
},
"format": "JSON"
}

Sumo Logic

{
"name": "Sumo Logic Collector",
"type": "GENERIC_HTTPS",
"endpoint": "https://collectors.sumologic.com/receiver/v1/http/your-collector-url",
"authType": "NONE",
"authConfig": {},
"format": "JSON"
}

Elastic

{
"name": "Elastic SIEM",
"type": "ELASTIC",
"endpoint": "https://elastic.company.com:9200/veraid-events/_doc",
"authType": "BASIC_AUTH",
"authConfig": {
"username": "veraid_ingest",
"password": "your-password"
},
"format": "JSON"
}

Generic Syslog

Syslog delivery is not implemented yet: a GENERIC_SYSLOG integration is accepted, but every push to it fails. See the caution under Supported Platforms.

Generic HTTPS

For SIEM platforms not explicitly supported, use the generic HTTPS integration:

{
"name": "Custom SIEM",
"type": "GENERIC_HTTPS",
"endpoint": "https://siem.company.com/api/ingest",
"authType": "BEARER_TOKEN",
"authConfig": {
"token": "your-bearer-token"
},
"format": "JSON"
}

Severity and Event Type Filtering

Filter which audit entries are forwarded to your SIEM to control volume and relevance. Both filters are top-level fields of the integration, set on create or with PUT.

Event Type Filtering

eventTypes is a list of audit log actions. An entry is forwarded only if its action is exactly one of them: there is no wildcard or prefix matching here (unlike the audit log query’s action=credential.*), so list each action you want. An empty list forwards every action.

{
"eventTypes": [
"identity.create",
"identity.update",
"identity.suspend",
"identity.revoke",
"identity.delete",
"credential.create",
"credential.revoke",
"credential.expired",
"credential.emergency_rotate",
"credential.rotation_completed",
"credential.rotation_failed",
"policy.create",
"policy.update",
"policy.delete",
"policy.evaluate.credential.read",
"policy.evaluate.credential.create",
"jit.request.approved",
"jit.credential.revealed",
"mfa.disabled",
"mfa.account_locked"
]
}

Policy decisions are recorded per enforced operation (policy.evaluate.credential.read, policy.evaluate.identity.delete, and so on), so list each one you want. Alerts and policy.violated are not audit actions; to receive them, subscribe a webhook to alert.triggered or policy.violated.

When an integration has eventTypes, they replace the action list in a push request rather than narrowing it.

Severity Filtering

{
"severityFilter": ["warning", "error"]
}

A log’s severity comes from its outcome: SUCCESS is info, FAILURE is warning, DENIED is error. The field is stored and returned, but the batch push does not apply it today, so every matching entry is sent whatever its severity. To push only failures or denials, pass outcome in the push request instead.

Pushing events

Terminal window
curl -X POST https://app.veraid.io/api/v1/siem/integrations/{id}/export \
-H "Cookie: veraid-session=<your session cookie>" \
-H "Content-Type: application/json" \
-d '{
"startDate": "2026-03-19T00:00:00Z",
"endDate": "2026-03-19T23:59:59Z",
"outcome": "FAILURE",
"limit": 1000
}'
FieldTypeRequiredDescription
startDate / endDatestringYesTime range, as ISO 8601 date-times in UTC (2026-03-19T00:00:00Z; date-only values and offsets are refused)
actorTypestringNoUSER, IDENTITY or SYSTEM
actionstring[]NoExact actions to send. Ignored when the integration has eventTypes
outcomestringNoSUCCESS, FAILURE or DENIED
limitnumberNoMost recent entries to send, 1 to 10,000 (default 1,000)

Only organization owners and admins can push, from a signed-in session; an organization API key is not accepted here. The push runs whether or not the integration is active (isActive is not checked). The response reports total, success and errors counts, and lastError when a delivery failed. An invalid body returns 400, a caller who is not an admin 403, and an integration that is not in your organization 404.


Testing a Connection

Verify that VeraID can successfully deliver events to your SIEM before relying on it.

Terminal window
curl -X POST https://app.veraid.io/api/v1/siem/integrations/{id}/test \
-H "Cookie: veraid-session=<your session cookie>"

Response:

{
"status": "SUCCESS",
"message": "Test event delivered successfully",
"details": {
"endpoint": "https://splunk.company.com:8088/services/collector/event",
"responseCode": 200,
"latency": "145ms"
}
}

If the test fails, the response includes diagnostic information:

{
"status": "FAILED",
"message": "Connection refused",
"details": {
"endpoint": "https://splunk.company.com:8088/services/collector/event",
"error": "ECONNREFUSED",
"suggestion": "Verify that the endpoint is reachable and the port is open. Check firewall rules and network policies."
}
}

Audit Log Export

Besides pushing to an integration, you can export audit logs in bulk for historical analysis or compliance archives.

Terminal window
curl -X GET "https://app.veraid.io/api/v1/audit-logs/export?format=json&startDate=2026-03-01T00:00:00Z&endDate=2026-03-19T23:59:59Z" \
-H "Cookie: veraid-session=<your session cookie>" \
-o audit-logs-march.json

Supported export formats:

FormatContent-TypeDescription
jsonapplication/jsonJSON array of audit log entries
csvtext/csvCSV with headers, suitable for spreadsheet analysis

An export returns at most the 10,000 most recent matching entries; see Export Audit Logs for the parameters and how to split a longer history. Give endDate as a full date-time: a date alone means midnight at its start, so endDate=2026-03-19 leaves out all of 19 March.

Event Schema

All events forwarded to your SIEM follow a consistent schema regardless of the output format:

{
"id": "evt_abc123",
"timestamp": "2026-03-19T10:30:00Z",
"action": "credential.verify",
"actorType": "IDENTITY",
"actorId": "id_xyz789",
"actorName": "aws-deploy-prod",
"resourceType": "credential",
"resourceId": "cred_def456",
"outcome": "SUCCESS",
"severity": "INFO",
"ipAddress": "203.0.113.42",
"userAgent": "veraid-sdk/1.2.0",
"organizationId": "org_abc",
"metadata": {
"scopes": ["secrets.read"],
"endpoint": "/api/v1/secrets/db-url"
}
}

When using CEF format, the same event is rendered as:

CEF:0|VeraID|Identity Platform|1.0|credential.verify|Credential Verify|2|act=credential.verify outcome=SUCCESS suser=aws-deploy-prod suid=id_xyz789 src=203.0.113.42 deviceCustomString1=credential deviceCustomString2=cred_def456 requestClientApplication=veraid-sdk/1.2.0 end=1773916200000