---
title: "Store test result data"
method: POST
path: "/v1/test"
tags: ["Test"]
---

# Store test result data

`POST /v1/test`

Accepts the JSON body produced by Charon when running `charon test … --publish`: **`enr`**, **`sig`**, and **`data`**. Authentication is **not** a Bearer token: `TestEnrGuard` verifies that `sig` is a valid secp256k1 ECDSA signature (base64, as emitted by Go `json.Marshal` on the signature bytes) over the SSZ hash of `JSON.stringify(data)` for the public key embedded in `enr`. Only `Content-Type: application/json` is required.

## Request body

- TestResultDto
  - `data` TestCategoriesDto
    - `charon_peers` TestCategoryDto
      - `category_name` string — Category name
      - `execution_time` string — Execution time
      - `score` string — Score letter grade
      - `targets` object — Targets with test results
    - `beacon_node` TestCategoryDto
      - `category_name` string — Category name
      - `execution_time` string — Execution time
      - `score` string — Score letter grade
      - `targets` object — Targets with test results
    - `validator_client` TestCategoryDto
      - `category_name` string — Category name
      - `execution_time` string — Execution time
      - `score` string — Score letter grade
      - `targets` object — Targets with test results
    - `mev` TestCategoryDto
      - `category_name` string — Category name
      - `execution_time` string — Execution time
      - `score` string — Score letter grade
      - `targets` object — Targets with test results
    - `infra` TestCategoryDto
      - `category_name` string — Category name
      - `execution_time` string — Execution time
      - `score` string — Score letter grade
      - `targets` object — Targets with test results
  - `enr` string — ENR text for the Charon node whose private key signed the payload
  - `sig` string — Base64-encoded secp256k1 ECDSA signature (65 bytes: 32-byte r + 32-byte s + 1-byte recovery id) over the SSZ `hashTreeRoot` of the UTF-8 bytes of `JSON.stringify(data)`, matching Charon `publishResultToObolAPI`

## Response `201`

Test result data stored successfully

## Other responses

- `400` — Invalid test result data
- `401` — Signature verification failed for the supplied `enr` and `sig`
- `403` — Returned when `enr` or `sig` is missing from the body (guard rejects the request before verification)
- `500` — An unknown error occurred

---

[API](https://skmtc.net/obol/apis/obol-api.md) · [All operations](https://skmtc.net/obol/apis/obol-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/obol/obol-api/revisions/707a88e0b355/schema)
