Skip to content

Artifacts

Artifacts represent raw security signals ingested into the analytics pipeline. They include IDS alerts, authentication events, firewall logs, DNS queries, and other telemetry collected from security tools and infrastructure.

Endpoints

Method Path Description Permission
POST /v1/artifacts Ingest new artifacts signals:write
GET /v1/artifacts Search artifacts with filters signals:read

POST /v1/artifacts

Ingest one or more security artifacts into the processing pipeline. Artifacts are queued for parsing, enrichment, and correlation via the data pipeline.

Request Body

Field Type Required Description
artifacts array Yes Array of artifact objects
artifacts[].source string Yes Source identifier (e.g., suricata, auth, firewall)
artifacts[].raw string Yes Raw log or event data
artifacts[].timestamp string No ISO 8601 timestamp; defaults to server time
artifacts[].metadata object No Additional key-value metadata

Example Request

curl -X POST https://analytics.example.com/api/v1/artifacts \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "artifacts": [
      {
        "source": "suricata",
        "raw": "ET MALWARE Trickbot Checkin",
        "timestamp": "2026-02-14T10:30:00Z",
        "metadata": {"sensor": "ids-01"}
      }
    ]
  }'

Example Response

{
  "success": true,
  "message": "Artifacts accepted for processing",
  "data": {
    "accepted": 1,
    "rejected": 0
  }
}

GET /v1/artifacts

Search and filter ingested artifacts. Results are paginated and sorted by timestamp descending.

Query Parameters

Parameter Type Required Description
source string No Filter by artifact source
start string No Start of time range (ISO 8601)
end string No End of time range (ISO 8601)
query string No Full-text search query
limit integer No Max results to return (default: 50, max: 1000)
offset integer No Pagination offset

Example Request

curl -X GET "https://analytics.example.com/api/v1/artifacts?source=suricata&limit=10" \
  -H "Authorization: Bearer $TOKEN"

Example Response

{
  "success": true,
  "message": "OK",
  "data": {
    "artifacts": [
      {
        "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "org_id": "witfoo",
        "source": "suricata",
        "raw": "ET MALWARE Trickbot Checkin",
        "timestamp": "2026-02-14T10:30:00Z",
        "metadata": {"sensor": "ids-01"},
        "created_at": "2026-02-14T10:30:01Z"
      }
    ],
    "total": 1,
    "limit": 10,
    "offset": 0
  }
}

Error Responses

Status Description
400 Invalid request body or query parameters
401 Missing or invalid JWT token
403 Insufficient permissions (signals:read or signals:write required)
500 Internal server error