---
title: "SolaX Inverter (Cloud API)"
description: "SolaX Cloud API integration for all SolaX inverter types (X1, X3, A1, J1 series). Monitor PV production, battery state, grid power flow and energy totals."
url: "https://taphome.com/en/compatibility/solax-inverter/"
language: en
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["http","inverter","cloud-api","solar","battery-storage","energy-monitoring"]
  questions: ["How to integrate SolaX inverter with TapHome via the Cloud API?","What data does the SolaX Cloud API TapHome template provide?","How to obtain the SolaX API tokenID for TapHome?","What is the difference between the SolaX Cloud API and Modbus template in TapHome?","Does the SolaX Cloud API template work with all SolaX inverter models?","What are the API rate limits for the SolaX Cloud integration?"]
---

# SolaX Inverter (Cloud API)

Communication: Packet Parser → HTTP

- [SolaX Power Official Website](https://www.solaxpower.com)

## Integration guide

The SolaX Cloud API template connects TapHome to any SolaX inverter through the SolaxCloud monitoring platform. Unlike the [SolaX Hybrid X1/X3 Gen 4](https://taphome.com/en/compatibility/solax-hybrid-x3-gen-4/) template which uses Modbus RTU over RS-485, this cloud-based integration requires no physical wiring to the inverter. TapHome queries the SolaX Cloud servers via HTTPS and receives real-time data in JSON format.

The template supports all SolaX inverter types (23 models across the X1, X3, A1 and J1 series) and provides 11 monitoring devices covering AC output, battery state, grid power flow and per-MPPT PV production. The only requirements are a SolaxCloud account, an internet-connected communication dongle (Pocket WiFi, LAN or 4G) and the API token.

## Configuration

### SolaxCloud account setup

The inverter must be registered and online on [SolaxCloud](https://www.solaxcloud.com). A communication module (Pocket WiFi, LAN or 4G dongle) must be installed on the inverter and connected to the internet.

### Obtaining the API token (tokenID)

1. Log into SolaxCloud at [www.solaxcloud.com](https://www.solaxcloud.com)
2. In the left sidebar, navigate to **Service > Third-party ecosystem** (or the **API** section)
3. Copy the **tokenID** displayed on the page — this is a 23- or 24-character string

The token is free for all registered SolaxCloud users.

### Finding the Registration Number (sn)

The `sn` parameter is the **Registration Number of the communication dongle** — not the inverter serial number. This is a common source of confusion.

Where to find it:
- **On the dongle** — printed on the label of the Pocket WiFi / LAN / 4G module (barcode or QR code)
- **In SolaxCloud** — navigate to **Device > Inverter** and look for the **Registration No.** column in the table

### Import parameters

When importing the template in TapHome, enter:
- **Token ID** — the tokenID from SolaxCloud
- **Registration No.** — the 10-character serial number from the communication dongle

### Internet dependency

This is a cloud-only integration. All data flows through SolaX Cloud servers (`www.solaxcloud.com:9443`). The template will not work without an active internet connection on both the TapHome CCU and the inverter's communication dongle.

> [!TIP]
> For users who prefer local communication without cloud dependency, the [SolaX Hybrid X1/X3 Gen 4 (Modbus RTU)](https://taphome.com/en/compatibility/solax-hybrid-x3-gen-4/) template provides direct RS-485 communication with Gen 4 hybrid inverters.

## Device capabilities

### AC output and energy production

The **AC Output** electricity meter reads total AC energy production (`yieldtotal` in kWh) and real-time AC output power (`acpower` in W, converted to kW). A service attribute reports the daily yield (`yieldtoday` in kWh) which resets at midnight.

### Battery monitoring

- **Battery SOC** — reads battery state of charge as a percentage from the `soc` field. The value is divided by 100 for the TapHome 0--1 analog input range (e.g. 85% becomes 0.85). This is the fastest-polled device at 2.5-second intervals
- **Battery Power** — instantaneous battery charge/discharge power in watts. Positive values indicate charging (from PV or grid), negative values indicate discharging to load

### Grid power and energy metering

Three devices cover grid power flow:

- **Grid Power** — raw bidirectional grid power in watts. Positive = exporting to grid, negative = importing from grid
- **From Grid** — electricity meter tracking energy consumed from the grid. Total consumption (`consumeenergy` in kWh) and real-time import power (extracted from `feedinpower` when negative, converted to kW)
- **To Grid** — electricity meter tracking energy exported to the grid. Total export energy (`feedinenergy` in kWh) and real-time export power (extracted from `feedinpower` when positive, converted to kW)

### PV production monitoring

The template provides five PV production devices:

- **PV Production (Total)** — computed sensor summing DC power from all 4 MPPT inputs. Null-safe — inverters with fewer than 4 strings return null for unused MPPTs, which the formula treats as zero
- **PV Production (MPPT 1--4)** — individual DC power readings for each PV string input in watts

### Module-level diagnostics

The module readscript checks the inverter status on each poll cycle and reports issues:

- Status **100** (Wait Mode) and **110** (Standby) trigger warnings in TapHome
- Status **103** (Fault Mode) and **104** (Permanent Fault Mode) trigger errors
- If the API response indicates failure, the error message from the `exception` field is reported

Two service attributes are available on the module:

- **Inverter status** — maps status codes 100--113 to human-readable names (Wait Mode, Check Mode, Normal Mode, Fault Mode, Permanent Fault Mode, Update Mode, EPS Check Mode, EPS Mode, Self-Test Mode, Idle Mode, Standby Mode, Pv Wake Up Bat Mode, Gen Check Mode, Gen Run Mode)
- **Inverter type** — maps type codes 1--23 to model names (X1-LX, X-Hybrid, X1-Boost/Air/Mini, X3-Hybrid-G4, etc.)

### Additional capabilities

The SolaX Cloud API also exposes Meter 2 AC power (`feedinpowerM2`), per-phase EPS (Emergency Power Supply) power for three phases (`peps1`--`peps3`), the data upload timestamp, inverter serial number, and battery status. These can be added in a future template update.

## Troubleshooting

### API returns error or no data

1. Verify the inverter is online on SolaxCloud — log into the web portal and check device status
2. Confirm the tokenID is correct and has not been regenerated (old tokens become invalid)
3. Ensure the `sn` parameter is the **communication dongle Registration Number**, not the inverter serial number
4. Check that the communication dongle has an active internet connection

### Stale or delayed readings

The SolaX Cloud API returns the most recent data uploaded by the communication dongle. Data freshness depends on the dongle's upload interval (typically every 5 minutes). The template polls the API every 20 seconds, but the underlying data may update less frequently.

### Rate limit errors

The API allows a maximum of 10 requests per minute and 10,000 requests per day. The template polls at 20-second intervals (approximately 3 requests per minute), which is within limits. If multiple systems (TapHome, Home Assistant, other tools) share the same tokenID, the combined request rate may exceed the limit.

> [!WARNING]
> The SolaX Cloud API requires an active internet connection and depends on SolaX Cloud server availability. During cloud outages or internet disruptions, the template will not receive updated data. For installations requiring guaranteed local control, consider the [Modbus RTU template](https://taphome.com/en/compatibility/solax-hybrid-x3-gen-4/) instead.

## Available devices 11

These devices appear in TapHome after import.

SolaX Inverter Module

Service Attributes

|                 |                                                                                                                                                            |
|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Inverter status | Current operating mode — Wait, Check, Normal, Fault, Permanent Fault, Update, EPS Check, EPS, Self-Test, Idle, Standby, Pv Wake Up Bat, Gen Check, Gen Run |
| Inverter type   | Connected inverter model — identifies which SolaX series (X1, X3, A1, J1) and generation is installed                                                      |

Custom Variables

|                    |                                                                          |
|--------------------|--------------------------------------------------------------------------|
| `tokenID` (string) | SolaX Cloud API token ID (obtain from your SolaX Cloud account API page) |
| `sn` (string)      | Serial number of the SolaX communication module (Registration No.)       |

Read (module)

```taphome
var response := sendhttprequest("/proxy/api/getRealtimeInfo.do?tokenId="+tokenID+"&sn="+sn);

if parsejson(response.Content, "success")
	json := parsejson(response.Content, "result", 1);
	
	var statusCode := parsejson(json,"inverterStatus");
	if statusCode = "100"
	  addwarning("Inverter in waiting - Check DC");
	end
	if statusCode =  "103"
	  adderror("Inverter in fault mode");
	end
	if statusCode = "104"
	  adderror("Inverter in permanent fault mode");
	end
	if statusCode = "110"
	  addwarning("Inverter in standby mode");
	end
else
 	adderror(parsejson(response.Content, "exception"));
end
```

Service Attributes

Inverter status

```taphome
var statusCode := parsejson(json,"inverterStatus");

IF(statusCode = "100",return("Wait Mode"));
IF(statusCode = "101",return("Check Mode"));
IF(statusCode = "102",return("Normal Mode"));
IF(statusCode = "103",return("Fault Mode"));
IF(statusCode = "104",return("Permanent Fault Mode"));
IF(statusCode = "105",return("Update Mode"));
IF(statusCode = "106",return("EPS Check Mode"));
IF(statusCode = "107",return("EPS Mode"));
IF(statusCode = "108",return("Self-Test Mode"));
IF(statusCode = "109",return("Idle Mode"));
IF(statusCode = "110",return("Standby Mode"));
IF(statusCode = "111",return("Pv Wake Up Bat Mode"));
IF(statusCode = "112",return("Gen Check Mode"));
IF(statusCode = "113",return("Gen Run Mode"));
```

Inverter type

```taphome
var type := parsejson(json,"inverterType");

IF(type = "1",return("X1-LX"));
IF(type = "2",return("X-Hybrid"));
IF(type = "3",return("X1-Hybiyd/Fit"));
IF(type = "4",return("X1-Boost/Air/Mini"));
IF(type = "5",return("X3-Hybiyd/Fit"));
IF(type = "6",return("X3-20K/30K"));
IF(type = "7",return("X3-MIC/PRO"));
IF(type = "8",return("X1-Smart"));
IF(type = "9",return("X1-AC"));
IF(type = "10",return("A1-Hybrid"));
IF(type = "11",return("A1-Fit"));
IF(type = "12",return("A1-Grid"));
IF(type = "13",return("J1-ESS"));
IF(type = "14",return("X3-Hybrid-G4"));
IF(type = "15",return("X1-Hybrid-G4"));
IF(type = "16",return("X3-MIC/PRO-G2"));
IF(type = "17",return("X1-SPT"));
IF(type = "18",return("X1-Boost/Mini-G4"));
IF(type = "19",return("A1-HYB-G2"));
IF(type = "20",return("A1-AC-G2"));
IF(type = "21",return("A1-SMT-G2"));
IF(type = "22",return("X3-FTH"));
IF(type = "23",return("X3-MGA-G2"));
```

AC Output Electricity Meter Read-only

Total and daily AC energy production (kWh) with real-time output power (kW)

numeric Unit: kWh / kW JSON parsejson()

Service Attributes

|                                     |                                            |
|-------------------------------------|--------------------------------------------|
| Inverter.AC.energy.out.daily \[kWh] | Daily AC energy yield — resets at midnight |

Read total consumption

```taphome
parsejson(json, "yieldtotal", 1)
```

Read demand

```taphome
parsejson(json, "acpower", 1) / 1000
```

Service Attributes

Inverter.AC.energy.out.daily \[kWh]

```taphome
parsejson(json, "yieldtoday", 1)
```

Battery SOC Analog Input Read-only

Battery state of charge as percentage — 0% (empty) to 100% (full)

numeric Unit: % JSON parsejson()

Read input level

```taphome
parsejson(json, "soc", 1) / 100
```

Battery Power Variable Read-only

Instantaneous battery power in watts — positive when charging, negative when discharging

numeric Unit: W JSON parsejson()

Read

```taphome
parsejson(json,"batPower",1)
```

From Grid Electricity Meter Read-only

Energy consumed from the grid — total consumption (kWh) and real-time import power (kW)

numeric Unit: kWh / kW JSON parsejson()

Read total consumption

```taphome
parsejson(json, "consumeenergy", 1)
```

Read demand

```taphome
var power := parsejson(json, "feedinpower", 1);
if(power < 0, power * -1, 0) / 1000
```

Grid Power Variable Read-only

Bidirectional grid power in watts — positive when exporting, negative when importing

numeric Unit: W JSON parsejson()

Read

```taphome
parsejson(json, "feedinpower", 1)
```

PV Production (Total) Variable Read-only

Combined DC power from all MPPT inputs — automatically sums available strings

numeric Unit: W JSON parsejson()

Read

```taphome
var PV1 := parsejson(json,"powerdc1",1);
var PV2 := parsejson(json,"powerdc2",1);
var PV3 := parsejson(json,"powerdc3",1);
var PV4 := parsejson(json,"powerdc4",1);

if(isnull(PV1), 0, PV1) +
if(isnull(PV2), 0, PV2) +
if(isnull(PV3), 0, PV3) +
if(isnull(PV4), 0, PV4)
```

PV Production (MPPT 1) Variable Read-only

numeric Unit: W JSON parsejson()

Read

```taphome
parsejson(json,"powerdc1",1)
```

PV Production (MPPT 2) Variable Read-only

numeric Unit: W JSON parsejson()

Read

```taphome
parsejson(json,"powerdc2",1)
```

PV Production (MPPT 3) Variable Read-only

numeric Unit: W JSON parsejson()

Read (module)

```taphome
parsejson(json,"powerdc3",1)
```

PV Production (MPPT 4) Variable Read-only

numeric Unit: W JSON parsejson()

Read (module)

```taphome
parsejson(json,"powerdc4",1)
```

To Grid Electricity Meter Read-only

Energy exported to the grid — total feed-in energy (kWh) and real-time export power (kW)

numeric Unit: kWh / kW JSON parsejson()

Read total consumption

```taphome
parsejson(json, "feedinenergy", 1)
```

Read demand

```taphome
var power := parsejson(json, "feedinpower", 1);
if(power > 0, power, 0) / 1000
```

**Connection:** Packet Parser → HTTP

Possible improvements (7)

- Meter 2 AC Power — Inverter.Meter2.AC.power.total, 1 W. Secondary meter power reading — available for dual-meter setups
- EPS Phase 1 Power — Inverter.AC.EPS.power.R, 1 W. Emergency Power Supply output phase R
- EPS Phase 2 Power — Inverter.AC.EPS.power.S, 1 W. Emergency Power Supply output phase S
- EPS Phase 3 Power — Inverter.AC.EPS.power.T, 1 W. Emergency Power Supply output phase T
- Upload Time — Last data upload timestamp from inverter to SolaX Cloud. Useful for stale-data detection
- Inverter Serial Number — Serial number of the inverter hardware (different from communication module SN)
- Battery Status — Battery status code with mapped states. Documented in HA integration but not in official API V6.1 PDF

## Import parameters

Enter these values when you import the XML.

| Asked in the app                        | Default         |
|-----------------------------------------|-----------------|
| Token ID                                | Enter at import |
| Registration No. (communication module) | Enter at import |

## Sources

- SolaX Cloud User Monitoring API V6.1
  
  [www.solaxcloud.com](https://www.solaxcloud.com/user_api/SolaxCloud_User_Monitoring_API_V6.1.pdf) 2026-03-28
  
  [PDF](https://taphome.com/compatibility/devices/solax-inverter/manufacturer/SolaxCloud_User_Monitoring_API_V6.1.pdf)
- Home Assistant SolaX Cloud API Integration
  
  [github.com](https://github.com/NoUsername10/Solax-Cloud-API-for-Home-assistant) 2026-03-28
- SolaX KB: How to Obtain API Token
  
  [solaxpowerservice.zendesk.com](https://solaxpowerservice.zendesk.com/hc/en-001/articles/11054415299087-How-to-abtain-my-API-token) 2026-03-28

Manufacturer documents are © their respective owners. They are provided as published by the manufacturer, for reference only.

## Related Documentation

- [Packet Parser Integration](https://taphome.com/en/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/en/docs/integration/packet-parser/)
- [Packet parser functions](https://taphome.com/en/docs/script/packet-parser/)
- [Parsing functions](https://taphome.com/en/docs/script/parsing-functions/)

