Freestyle Observability API

Query structured logs across Freestyle services. Filter by VM, deployment, run, identity, or time range to debug agent runs end-to-end.

Freestyle Observability API is one of 8 APIs that Freestyle publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Observability, Logs, and Monitoring. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

freestyle-observability-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Freestyle Observability API
  version: 0.1.0
  description: Query structured logs across Freestyle services for VMs, runs, deployments, and identity events.
  contact:
    name: Ben
    email: [email protected]
  license:
    name: Closed Source
servers:
- url: https://api.freestyle.sh
  description: Production
tags:
- name: Observability
  description: APIs for observability.
paths:
  /observability/v1/logs:
    get:
      tags:
      - Observability
      summary: Logs
      description: Get logs for a deployment, domain, VM, or background request
      operationId: handle_get_logs
      parameters:
      - name: deploymentId
        in: query
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: requestId
        in: query
        required: false
        schema:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/RequestId'
      - name: buildId
        in: query
        required: false
        schema:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/BuildId'
      - name: instanceId
        in: query
        required: false
        schema:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/VmInstanceId'
      - name: domain
        in: query
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: vmId
        in: query
        required: false
        schema:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/VmId'
      - name: runId
        in: query
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: vmService
        in: query
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: pageToken
        in: query
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: pageSize
        in: query
        required: false
        schema:
          type:
          - integer
          - 'null'
          format: int32
      - name: startTime
        in: query
        description: Start time in RFC3339 format (e.g., "2024-01-01T00:00:00Z"). Defaults to 24 hours ago if not specified.
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: endTime
        in: query
        description: End time in RFC3339 format (e.g., "2024-01-02T00:00:00Z"). Defaults to now if not specified.
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: search
        in: query
        description: "Full-text search filter \u2014 case-insensitive substring match on log message body."
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: resourceType
        in: query
        description: 'Filter logs by resource type: "deployment" or "vm". Only applies to account-wide queries.'
        required: false
        schema:
          type:
          - string
          - 'null'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FreestyleGetLogsResponse'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
  schemas:
    RequestId:
      type: string
      description: "Branded request identifier \u2014 `ri-<20 lowercase alphanumeric chars>` for newly\nminted IDs. The wrapped\
        \ string is otherwise opaque, so legacy UUID-formatted\nIDs (from in-flight requests during rollout) round-trip unchanged."
    VmInstanceId:
      type: string
    FreestyleLogResponseObject:
      type: object
      required:
      - message
      - timestamp
      properties:
        message:
          type: string
        timestamp:
          type: string
        source:
          type:
          - string
          - 'null'
        resourceType:
          type:
          - string
          - 'null'
        origin:
          type:
          - string
          - 'null'
        resourceId:
          type:
          - string
          - 'null'
        instanceId:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/VmInstanceId'
        level:
          type:
          - string
          - 'null'
        vmService:
          type:
          - string
          - 'null'
        buildId:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/BuildId'
    VmId:
      type: string
      description: "VM ID \u2014 always 20 alphanumeric lowercase characters.\nNew IDs are fully random. Legacy short IDs\
        \ are right-padded with '0' on parse."
    BuildId:
      type: string
      description: Branded build ID in the format `bld-<20 lowercase alphanumeric chars>`.
    FreestyleGetLogsResponse:
      type: object
      required:
      - logs
      properties:
        logs:
          type: array
          items:
            $ref: '#/components/schemas/FreestyleLogResponseObject'
        nextPageToken:
          type:
          - string
          - 'null'
security:
- bearerAuth: []