Checking Market Eligibility
After learning about the available markets, you'll want to check which markets your sites are eligible for.
Market eligibility depends on several factors, including:
- The location of the site
- The metering capabilities of the site
- The type of resources at the site
- The type of flexibility the resource can provide
Powernaut will check these factors and return a list of markets your site is eligible for. Later on, we will request flexibility in the markets you are eligible for.
This guide shows you how to programmatically check market eligibility.
Prerequisites​
Before checking market eligibility, ensure you have:
- Authenticated with the platform
- Created a site
- Added resources to your site
Understanding Market Status​
Each market will have one of these statuses:
active
- Your site is already active and can participateineligible
- The market is not available (e.g., outside service area or technical requirements not met)action_required
- Further action needed before participation (e.g., consent required)
Checking Eligibility​
Use this endpoint to check market eligibility for a site:
- cURL
- Python
- TypeScript
curl --location 'https://api.powernaut.io/v1/connect/sites/{id}/markets' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <token>'
import requests
def get_market_eligibility(site_id: str, token: str) -> dict:
"""
Retrieve market eligibility for a site.
Args:
site_id: The UUID of the site
token: Your API token
Returns:
dict: The market eligibility response
"""
url = f"https://api.powernaut.io/v1/connect/sites/{site_id}/markets"
headers = {
"Accept": "application/json",
"Authorization": f"Bearer {token}"
}
response = requests.get(url, headers=headers)
response.raise_for_status()
return response.json()
interface MarketResponse {
name: string;
status: "active" | "unavailable" | "action_required";
action?: {
name: "consent_required";
url: string;
};
}
async function getMarketEligibility(
siteId: string,
token: string
): Promise<MarketResponse[]> {
const response = await fetch(
`https://api.powernaut.io/v1/connect/sites/${siteId}/markets`,
{
headers: {
Accept: "application/json",
Authorization: `Bearer ${token}`,
},
}
);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
}
Example Response
An example response might look like this:
[
{
"name": "BE_TSO_ELIA_FCR",
"status": "active"
},
{
"name": "BE_TSO_ELIA_AFRR",
"status": "action_required",
"action": {
"name": "consent_required",
"url": "https://app.sandbox.powernaut.io/contract/123e4567-e89b-12d3-a456-426614174000/sign"
}
},
{
"name": "BE_DSO_FLUVIUS_CONGESTION",
"status": "ineligible"
}
]
Regular Checks​
Market eligibility can change based on various factors (e.g., regulatory changes, technical requirements). You should check market eligibility regularly to ensure your sites are always participating in the most relevant markets.
Next Steps​
For markets with status action_required
:
- Check the
action
field to determine what's needed - For consent requirements, continue to the consent guide
For markets with status active
:
- Set up baseline measurements
- Start bidding
- Handle activations when your bids are accepted