ToolAssay

Integrates the supplied current over time by the trapezoidal rule, so the result

Integrates the supplied current over time by the trapezoidal rule, so the result is only as good as the sampling interval; gaps longer than the stated max_gap_seconds are excluded and reported. Sign convention: positive current is charging, negative is discharging. Internal resistance is estimated from the largest current step in the series and is a rough figure, not a measurement under defined conditions.

Answeringour last check, 2026-10-18
1 of 1checks answered this week
1223 msmedian answer time
$0.004listed price per call
$0.004price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://solar.halowerk.com/battery-cycle

CategoryEverything else
Provider hostsolar.halowerk.com
Networkseip155:8453
Payment schemesexact
Self-reported calls, 30 days2 from 2 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-10-18 valid payment request 402$0.004 1223 ms

Example input (from the provider)

{
  "body": {
    "cells_in_series": 4,
    "nominal_capacity_ah": 100,
    "samples": [
      {
        "current_a": 0,
        "t_s": 0,
        "voltage_v": 13.2
      },
      {
        "current_a": -5,
        "t_s": 60,
        "voltage_v": 13.1
      },
      {
        "current_a": -5,
        "t_s": 120,
        "voltage_v": 13
      }
    ]
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "additionalProperties": false,
          "properties": {
            "cells_in_series": {
              "default": 4,
              "maximum": 64,
              "minimum": 1,
              "type": "integer"
            },
            "max_gap_seconds": {
              "default": 300,
              "maximum": 86400,
              "minimum": 1,
              "type": "number"
            },
            "nominal_capacity_ah": {
              "maximum": 10000,
              "minimum": 0.1,
              "type": "number"
            },
            "rest_current_a": {
              "default": 0.5,
              "description": "Below this absolute current a sample counts as resting.",
              "maximum": 100,
              "minimum": 0,
              "type": "number"
            },
            "samples": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "current_a": {
                    "description": "Positive charging, negative discharging.",
                    "maximum": 2000,
                    "minimum": -2000,
                    "type": "number"
                  },
                  "t_s": {
                    "description": "Seconds since series start, strictly increasing.",
                    "maximum": 100000000,
                    "minimum": 0,
                    "type": "number"
                  },
                  "temperature_c": {
                    "maximum": 120,
                    "minimum": -60,
                    "type": "number"
                  },
                  "voltage_v": {
                    "description": "Pack voltage.",
                    "maximum": 1000,
                    "minimum": 0,
                    "type": "number"
                  }
                },
                "required": [
                  "t_s",
                  "voltage_v",
                  "current_a"
                ],
                "type": "object"
              },
              "maxItems": 5000,
              "minItems": 3,
              "type": "array"
            }
          },
          "required": [
            "samples"
          ],
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST",
            "PUT",
            "PATCH"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}

This page as JSON