Daily affirmation picker
This seeded daily affirmation picker turns a calendar date and a category into one consistent message.
Run — free
Choose calm, confidence, focus, or gratitude, then provide a real date in YYYY-MM-DD form. The selection is deterministic: repeating the same date and category produces the same affirmation, whether the request is made now, tomorrow, or from another device. That makes the result suitable for daily prompts, journals, team check-ins, and applications that need a stable message without storing previous choices or relying on random behavior.
Create a stable daily affirmation without storing state
Many daily-message features appear simple until consistency matters. A random picker may show a different sentence whenever a page reloads, a job retries, or a user switches devices. This capability avoids that problem by treating the supplied date as a seed. It validates the date, converts its exact YYYY-MM-DD text into a stable unsigned integer, and uses that number to select an entry from the requested curated category. The calculation has no clock and keeps no history, so identical inputs always lead to identical output. Your application can request the message whenever it needs it instead of saving a daily selection in a database. The response includes the original date, the accepted category, the affirmation, and its zero-based index within the category list. Those fields make the decision easy to display, cache, audit, or compare in an automated test. A different date will usually move to another entry, while a repeated date reliably recreates the earlier choice.
Choose a category and provide an exact calendar date
Send two required fields: date and category. The date must use four digits for the year, two for the month, and two for the day, including leading zeroes. It must also describe a real Gregorian calendar day, so leap years are checked and impossible values such as February 30 are rejected. The category must be exactly calm, confidence, focus, or gratitude. Each category contains its own reviewed set of constructive first-person statements. Calm emphasizes steady responses and sustainable pacing; confidence supports capable action and self-trust; focus favors priorities and deliberate progress; gratitude encourages appreciation without denying difficult feelings. Category matching is intentionally strict because silently correcting a misspelling could select from the wrong list. If a client sends an unknown category, the request returns an invalid-input error that names the supported choices. For a person’s local daily experience, have the client calculate the relevant local calendar date and send that date explicitly; the capability never guesses a timezone or consults the current clock.
Use deterministic selection responsibly in products and routines
A stable affirmation works well anywhere one shared message should remain fixed for a whole day. A journaling application can place it above a morning entry, a team tool can add it to an optional check-in, and a personal dashboard can render it repeatedly without visual churn. Determinism also helps with scheduled workflows: retries produce the same message, tests can assert exact results, and multiple services can agree by sending the same inputs. The selector is intentionally modest in scope. It does not personalize text from sensitive user data, evaluate a person’s emotional condition, or claim to provide therapy or medical care. It simply chooses from a finite curated list. Applications should present affirmations as optional reflective prompts, not guarantees or instructions that override professional advice. Because the seed is only the date, the result is predictable rather than secret; do not use it for lotteries, security decisions, or any situation requiring unbiased randomness. API automation costs $0.002 per request, while the browser experience can run the same pure selection logic locally.
What you can do with it
Daily journal prompt
Show a consistent category-based affirmation above every entry created on the same calendar date.
Reliable scheduled message
Generate the same affirmation when a daily workflow retries, without persisting a previous random choice.
Shared team check-in
Let distributed participants receive one stable focus or gratitude prompt by agreeing on a date and category.
FAQ
Will the same date always return the same affirmation?
Yes. The same valid date and category always produce the same affirmation and index because the algorithm uses no clock or randomness.
Which categories are available?
The supported categories are calm, confidence, focus, and gratitude. Any other value returns an invalid-input error.
Does the picker use my timezone?
No. You provide the exact calendar date to seed the selection, so your client can choose the date appropriate to its own timezone.
Can this replace professional mental health support?
No. The messages are general reflective prompts, not diagnosis, treatment, crisis support, or professional advice.
What does an API request cost?
Each API request costs $0.002. The browser experience can execute the same deterministic logic locally.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/life/affirmation-pick-seeded \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2026-08-03","category":"confidence"}'const res = await fetch("https://api.kit.forhosting.com/life/affirmation-pick-seeded", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date": "2026-08-03",
"category": "confidence"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/affirmation-pick-seeded",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date": "2026-08-03",
"category": "confidence"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/affirmation-pick-seeded", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date":"2026-08-03","category":"confidence"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date":"2026-08-03","category":"confidence"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/affirmation-pick-seeded", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"date": "2026-08-03",
"category": "confidence"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.affirmation_pick_seeded",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |