---
title: "Report to the operations log"
method: POST
path: "/v1/admin/ops"
tags: ["Admin"]
---

# Report to the operations log

`POST /v1/admin/ops`

## Request

- Base URL: `http://api.technooptimist.io`
- URL: `http://api.technooptimist.io/v1/admin/ops`
- Auth: HTTP bearer

Routines and scripts report what they did and every failure here (one event or up to 100). Stored with service `routine:<x-routine-name>` and shown on the owner's dashboard.

## Headers

- `x-routine-name` string: Name of the routine making the write; recorded as `routine:<name>` in the audit log.

## Request body

- union
  - OpsEventInput
    - `level` 'debug' | 'info' | 'warn' | 'error' | 'fatal', required
    - `message` string, required
    - `data` object
    - `path` string
  - OpsEventInput[]
    - `level` 'debug' | 'info' | 'warn' | 'error' | 'fatal', required
    - `message` string, required
    - `data` object
    - `path` string

## Response `200`

Recorded

- Ok
  - `ok` true, required

## Other responses

- `401`: Missing or invalid credentials
- `403`: Credential lacks the required scope
- `404`: Not found
- `409`: Conflict
- `422`: Validation failed

---

[API](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api.md) · [All operations](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api/llms.txt) · [OpenAPI document](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api/revisions/b7bcde6a0f30?raw)
