Code
A complete personalization in 12 lines.
Create a profile, then ask for content. The engine reads the profile, computes the temporal-contextual signal for the request, and returns finished copy with the signal attached. Same flow whether you call it with curl or the SDK.
curl -X POST https://api.nevolagroup.com/v1/profiles \
-H "Authorization: Bearer $NEVOLA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"external_user_id": "u_8f21c", "attributes": {"tone": "warm", "cadence": "daily"}}'
curl -X POST https://api.nevolagroup.com/v1/personalize/content \
-H "Authorization: Bearer $NEVOLA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"profile_id": "u_8f21c", "template": "daily_reflection", "context": {"local_time": "2026-03-14T07:02:00-03:00"}}'
import { Nevola } from "@nevola/engine";
const nevola = new Nevola({ apiKey: process.env.NEVOLA_API_KEY! });
await nevola.profiles.create({
externalUserId: "u_8f21c",
attributes: { tone: "warm", cadence: "daily" },
});
const result = await nevola.personalize.content({
profileId: "u_8f21c",
template: "daily_reflection",
context: { localTime: "2026-03-14T07:02:00-03:00" },
});
console.log(result.body);
console.log(result.signal);