This is a practical walkthrough, not a marketing page. We'll build the three calls a typical weather widget needs — current conditions, a multi-day forecast, and alerts — using the /weather namespace, and look at the actual response shape you get back.
Step 1: current conditions by city name
You don't need to geocode the city yourself first. Pass a city name directly and the endpoint resolves it internally:
const res = await fetch(
"https://aplicious.com/api/v1/weather/current?city=Bengaluru",
{ headers: { "X-API-Key": "lapi_live_••••" } }
);
const { data } = await res.json();The response includes the resolved location (name, country, lat/lon, timezone), temp_c and temp_f, feels_like_c, a human-readable condition label plus a condition_group and condition_severity for programmatic branching, wind, humidity, pressure, cloud cover, and UV index. If you already have coordinates, you can skip geocoding entirely and pass ?lat= and ?lon= instead of ?city=.
Step 2: a multi-day forecast
/forecast takes the same location parameters plus an optional days parameter, from 1 to 16:
fetch("https://aplicious.com/api/v1/weather/forecast?city=Bengaluru&days=10", {
headers: { "X-API-Key": "lapi_live_••••" },
});Each day in the response includes max/min temperature, precipitation probability and total, max UV index, max wind speed, sunrise, and sunset — everything a calendar-style forecast UI needs without a second call.
Step 3: severe weather alerts
/alertstakes the same location parameters and returns any active government-issued severe weather alerts for that area — heat, storm, or flood warnings, filtered by country or coordinates. If you're building anything safety-adjacent (a commute app, an outdoor-event planner), this is the call to add a banner for, not the forecast.
Putting it together
async function getWeatherWidget(city: string) {
const headers = { "X-API-Key": process.env.APLICIOUS_KEY! };
const base = "https://aplicious.com/api/v1/weather";
const [current, forecast, alerts] = await Promise.all([
fetch(`${base}/current?city=${city}`, { headers }).then(r => r.json()),
fetch(`${base}/forecast?city=${city}&days=7`, { headers }).then(r => r.json()),
fetch(`${base}/alerts?city=${city}`, { headers }).then(r => r.json()),
]);
return { current: current.data, forecast: forecast.data, alerts: alerts.data };
}Three parallel calls, one API key, one consistent response envelope across all three. The /weather namespace has 23 endpoints total — UV index, air quality, pollen, marine conditions, and historical data are all available the same way if your widget needs to grow beyond the basics.
Free tier is enough to prototype this
500 calls/month on the free tier covers roughly 160 widget loads a day at the three-call pattern above — plenty to validate a weather feature before deciding whether to pay for more volume.