> ## Documentation Index
> Fetch the complete documentation index at: https://developer-staging.secfix.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get an asset

> Requires the `all:read` scope.



## OpenAPI

````yaml /api-reference/openapi.yaml get /v1/inventory/assets/{id}
openapi: 3.0.1
info:
  title: Secfix Public API
  description: >-
    Read and manage your Secfix compliance data from your own systems. Get an
    access token from `POST /oauth/token` with the OAuth 2.0 client credentials
    grant, then send it as a bearer token to the `/v1` endpoints. Errors are
    JSON objects with a stable `code` and the `requestId`. Lists use cursor
    pagination.
  contact:
    name: Secfix Support
    url: https://secfix.com
    email: support@secfix.com
  license:
    name: Proprietary
    url: https://secfix.com/license
  version: 1.0.0
servers:
  - url: https://api.secfix.com
    description: Production
  - url: https://api-staging.secfix.com
    description: Staging
security:
  - bearerAuth: []
tags:
  - name: Employees
    description: >-
      Read the people in your workspace, with their employment status, group and
      onboarding progress.
  - name: Inventory
    description: >-
      Read assets in every inventory category. Create, update and delete
      `CUSTOM` and `INFORMATION` assets.
  - name: OAuth
    description: Get an access token with the OAuth 2.0 client credentials grant.
  - name: Groups
    description: >-
      Read employee groups, their member counts and the onboarding tasks
      assigned to them.
  - name: Health
    description: Check that the API is up.
  - name: Computers
    description: Read the computers in your workspace and their security settings.
paths:
  /v1/inventory/assets/{id}:
    get:
      tags:
        - Inventory
      summary: Get an asset
      description: Requires the `all:read` scope.
      operationId: get
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Asset returned.
          headers:
            X-RateLimit-Limit:
              description: Requests allowed in the current rate-limit window.
              style: simple
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests remaining in the current rate-limit window.
              style: simple
              schema:
                type: integer
            X-RateLimit-Reset:
              description: Seconds until the rate-limit window resets.
              style: simple
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetDto'
        '401':
          description: >-
            The access token is missing, invalid or replaced by a newer one.
            Code: `unauthorized` or `token_superseded`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '403':
          description: >-
            The access token doesn't have the scope this endpoint needs. Code:
            `scope_required`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '404':
          description: 'No asset with this `id` exists in your workspace. Code: `not_found`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '405':
          description: >-
            This path doesn't support the HTTP method. The `Allow` header lists
            the methods it supports. Code: `method_not_allowed`.
          headers:
            Allow:
              description: Comma-separated list of the HTTP methods this path supports.
              style: simple
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '429':
          description: >-
            Too many requests. Wait the number of seconds in `Retry-After`, then
            retry. Code: `rate_limited`.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              style: simple
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
        '500':
          description: 'Unexpected server error. Code: `internal_error`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
components:
  schemas:
    AssetDto:
      type: object
      properties:
        accountId:
          type: string
          description: Cloud account id. `CLOUD` assets only.
          example: '123456789012'
        auditStatus:
          type: string
          description: >-
            Audit status, as shown in the Secfix app: `COMPLETE` when every
            field the category needs for an audit is set, otherwise
            `INCOMPLETE`. Left out when Secfix hasn't computed it yet.
            Read-only.
          readOnly: true
          example: INCOMPLETE
          enum:
            - COMPLETE
            - INCOMPLETE
        categoryKey:
          type: string
          description: >-
            The asset's category key. For cloud assets it's the sub-type, such
            as `CLOUD_QUEUE`.
          example: CLOUD
          enum:
            - CLOUD
            - COMPUTER
            - CUSTOM
            - INFORMATION
            - EMPLOYEE
        classification:
          type: string
          description: Data classification.
          example: CONFIDENTIAL
        createdAt:
          type: string
          description: When the asset was created (UTC).
          format: date-time
          example: '2026-01-15T09:30:00.000Z'
        customIdentifier:
          type: string
          description: >-
            Serial number or asset ID, shown in Secfix as **ID/Serial No.**: the
            provider's resource id for cloud assets, the serial number for
            computers, and free text for `CUSTOM` and `INFORMATION` assets. Not
            unique.
          example: i-0abc123def456
        dataStored:
          $ref: '#/components/schemas/DataStoredDto'
        description:
          type: string
          description: Asset description.
          example: Primary production web server.
        email:
          type: string
          description: Employee's email address. Personal data. `EMPLOYEE` assets only.
          example: jane.doe@example.com
        externalAssetId:
          type: string
          description: >-
            The asset's id in your system, as sent on create. Left out for other
            assets.
          example: CI-1042
        externalSource:
          type: string
          description: >-
            The system the asset comes from, as sent on create. Only set on
            `CUSTOM` and `INFORMATION` assets created through the API.
          example: servicenow-cmdb
        id:
          type: string
          description: The asset's id (UUID).
          format: uuid
          example: 3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f
        lastCheckedAt:
          type: string
          description: >-
            When the asset was last checked for compliance (UTC). Left out for
            assets that aren't checked.
          format: date-time
          example: '2026-06-30T02:00:00.000Z'
        name:
          type: string
          description: Asset name.
          example: prod-web-01
        osVersion:
          type: string
          description: Operating system and version. `COMPUTER` assets only.
          example: macOS 14.5
        ownerId:
          type: string
          description: >-
            Owner's employee `id`: the owner the Secfix app shows. The owner can
            be someone `GET /v1/employees` doesn't list, such as a service
            account or a person excluded from compliance, so looking them up
            there can return 404.
          format: uuid
          example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
        ownerSource:
          type: string
          description: Where the owner assignment comes from.
          example: MANUAL
        ownerStatus:
          type: string
          description: >-
            `COMPLETE` when the asset has an owner, otherwise `INCOMPLETE`. Set
            for every category. This isn't the audit status; see `auditStatus`.
            Read-only.
          readOnly: true
          example: COMPLETE
          enum:
            - COMPLETE
            - INCOMPLETE
        region:
          type: string
          description: Cloud region or location. `CLOUD` assets only.
          example: eu-central-1
        serialNumber:
          type: string
          description: Hardware serial number. `COMPUTER` assets only.
          example: C02XY1234ABC
        tags:
          type: array
          description: Tags on the asset.
          items:
            $ref: '#/components/schemas/TagDto'
        type:
          type: string
          description: Asset type within its category.
          example: SERVER
      description: >-
        An inventory asset. Fields marked with a category are only set for
        assets in that category. For `EMPLOYEE` assets, `id` is the employee's
        `id`.
    ProblemDetail:
      type: object
      properties:
        code:
          type: string
          description: >-
            Error code for your error handling. It doesn't change between
            releases.
          example: not_found
        detail:
          type: string
          description: What went wrong in this request.
          example: No asset found for the given id.
        instance:
          type: string
          description: URI that identifies this occurrence of the error.
          example: /v1/inventory/assets/3f1c9a2e-8b4d-4e7a-9c1f-2a5b6c7d8e9f
        requestId:
          type: string
          description: >-
            The request's id, also sent in the `X-Request-Id` header. Include it
            when you contact support.
          example: req_01HZY8Q3M4N5P6R7S8T9V0W1X2
        status:
          type: integer
          description: HTTP status code.
          format: int32
          example: 404
        title:
          type: string
          description: Short summary of the error type.
          example: Not Found
        type:
          type: string
          description: URI that identifies the error type.
          example: https://api.secfix.com/problems/not_found
      description: The JSON body of every error response.
    DataStoredDto:
      type: object
      properties:
        containsPatientData:
          type: boolean
          description: Whether the asset contains patient data.
          example: false
        containsUserData:
          type: boolean
          description: Whether the asset contains user data.
          example: true
        userDataInfo:
          type: string
          description: What kind of user data the asset contains.
          example: Customer contact records
      description: >-
        What data a `CUSTOM` or `INFORMATION` asset stores. Set it with
        `dataStored` on create or update.
    TagDto:
      type: object
      properties:
        key:
          maxLength: 1000
          minLength: 0
          type: string
          description: >-
            Tag key. On writes, it must be a tag key that exists in your
            workspace.
          example: environment
        readOnly:
          type: boolean
          description: >-
            `true` for tags managed by Secfix, such as `SecfixOwner`. You can't
            change those through the API. Ignored on writes.
          readOnly: true
          example: false
        value:
          maxLength: 255
          minLength: 0
          type: string
          description: Tag value.
          example: production
      description: >-
        A tag on an asset. On writes, `key` must be a tag key in your workspace
        that you can edit.
  securitySchemes:
    bearerAuth:
      type: http
      description: Access token from `POST /oauth/token`.
      scheme: bearer
      bearerFormat: JWT

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.