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
| Category | Everything else |
|---|---|
| Provider host | solar.halowerk.com |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 2 from 2 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 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"
}