> ## Documentation Index
> Fetch the complete documentation index at: https://docs.events.intrace.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Asset

> Create a monitored asset

Creates one asset.

## Request Body

| Field                    | Type   | Required | Description                                        |
| ------------------------ | ------ | -------- | -------------------------------------------------- |
| `asset_id`               | string | Yes      | Stable client-side identifier                      |
| `type`                   | string | Yes      | Asset type                                         |
| `name`                   | string | Yes      | Human-readable asset name                          |
| `role`                   | string | No       | Asset role or business meaning                     |
| `status`                 | string | No       | Defaults to `active`                               |
| `attributes`             | object | No       | Coordinates, address, country, and custom metadata |
| `threat_config`          | object | No       | General monitoring config                          |
| `physical_threat_config` | object | No       | Physical threat evaluation config                  |

## Example Request

```json theme={null}
{
  "asset_id": "abuja-residence-1",
  "type": "residence",
  "name": "Abuja Residence",
  "status": "active",
  "attributes": {
    "lat": 9.0765,
    "lng": 7.3986,
    "address": "Central District, Abuja",
    "country": "NG",
    "monitoring_radius_km": 5
  },
  "physical_threat_config": {
    "enabled": true,
    "alert_classes": [
      "class_2_potential_threat",
      "class_3_direct_threat"
    ]
  }
}
```

## Example cURL

```bash theme={null}
curl -X POST -H "X-API-Key: your-api-key" -H "Content-Type: application/json" -d @asset.json "https://api.intrace.ai/v1/assets"
```


## OpenAPI

````yaml post /v1/assets
openapi: 3.1.0
info:
  title: Intrace Events Monitoring API
  version: 0.1.0
  description: >
    External asset monitoring and event intelligence API derived from the
    internal

    Intrace events investigations platform.


    This public API is tenant-scoped by API key and intentionally does not
    expose

    internal identifiers such as case_id or investigation_id.
servers:
  - url: https://api.intrace.ai
security:
  - ApiKeyAuth: []
tags:
  - name: Assets
  - name: Threats
  - name: Incidents
  - name: Alerts
  - name: Reports
  - name: Event Intelligence
paths:
  /v1/assets:
    post:
      tags:
        - Assets
      summary: Create asset
      operationId: createAsset
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetCreateRequest'
      responses:
        '201':
          description: Asset created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Asset'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/ValidationError'
components:
  schemas:
    AssetCreateRequest:
      type: object
      properties:
        asset_id:
          type: string
        type:
          type: string
          enum:
            - facility
            - residence
        name:
          type: string
        role:
          type: string
        status:
          type: string
          default: active
        attributes:
          $ref: '#/components/schemas/AssetAttributes'
        threat_config:
          $ref: '#/components/schemas/ThreatConfig'
        physical_threat_config:
          $ref: '#/components/schemas/PhysicalThreatConfig'
      required:
        - asset_id
        - type
        - name
    Asset:
      type: object
      properties:
        id:
          type: string
          format: uuid
        asset_id:
          type: string
        type:
          type: string
        name:
          type: string
        role:
          type: string
          nullable: true
        status:
          type: string
        attributes:
          $ref: '#/components/schemas/AssetAttributes'
        threat_config:
          $ref: '#/components/schemas/ThreatConfig'
        physical_threat_config:
          $ref: '#/components/schemas/PhysicalThreatConfig'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      required:
        - id
        - asset_id
        - type
        - name
        - status
        - created_at
        - updated_at
    AssetAttributes:
      type: object
      additionalProperties: true
      properties:
        lat:
          type: number
        lng:
          type: number
        address:
          type: string
        country:
          type: string
        monitoring_radius_km:
          type: number
    ThreatConfig:
      type: object
      additionalProperties: false
      properties:
        enabled:
          type: boolean
          default: true
        alert_classes:
          type: array
          items:
            type: string
            enum:
              - class_1_situational_awareness
              - class_2_potential_threat
              - class_3_direct_threat
        custom_instructions:
          type: string
        monitored_event_types:
          type: array
          items:
            type: string
        lookback_days:
          type: integer
          minimum: 1
          maximum: 90
    PhysicalThreatConfig:
      type: object
      additionalProperties: false
      properties:
        enabled:
          type: boolean
          default: true
        alert_classes:
          type: array
          items:
            type: string
            enum:
              - class_1_situational_awareness
              - class_2_potential_threat
              - class_3_direct_threat
        custom_instructions:
          type: string
        monitored_event_types:
          type: array
          items:
            type: string
        max_age_hours_by_category:
          type: object
          additionalProperties:
            type: integer
  responses:
    Unauthorized:
      description: Missing or invalid API key.
    Forbidden:
      description: Authenticated but not allowed for this tenant scope.
    ValidationError:
      description: Request validation failed.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key

````