Calculate next pet vaccination due date
This pet vaccination due date calculator turns a recorded vaccination date into a clear next due date using the standard adult booster interval assigned to a recognized vaccine type.
Run — free
Choose the vaccine, enter the date in YYYY-MM-DD format, and receive the interval and calculated calendar date. It is useful for reminders, record cleanup, and routine planning, but it does not replace a veterinarian's schedule. Age, health, dose history, product labeling, exposure risk, and local rabies law may all change the appropriate timing.
Start with the exact vaccination record
Use the date on the clinic certificate, invoice, vaccination booklet, or verified medical record rather than an approximate memory. Enter it as YYYY-MM-DD so that January 6 cannot be confused with June 1. Then select the matching vaccine type from the supported list. The calculator recognizes rabies, canine DHPP, canine Bordetella, canine leptospirosis, feline FVRCP, and feline FeLV. That explicit list prevents a misspelled or unfamiliar vaccine from being assigned an interval accidentally. If the label on the record uses a brand name or an abbreviation you do not recognize, confirm the underlying vaccine with the clinic before calculating. This matters because combination vaccines can be described differently between practices, and similar-looking names do not necessarily represent the same protection. The result repeats the vaccine type and last date, shows the interval in months, and provides the next due date, giving you enough information to check that the intended record was used. Treat the result as an organized planning date, not as proof that a particular animal should be vaccinated that day.
Understand the calendar calculation
The calculation adds the configured standard adult booster interval as calendar months, not as a fixed number of days. Annual entries add 12 months, while the supported three-year core booster entries add 36 months. Calendar arithmetic preserves the month and day when possible. If the destination month does not contain that day, the calculator uses the final valid day of the destination month. For example, adding months to a date on the thirty-first can land on the thirtieth or on the last day of February. Leap years are handled with Gregorian calendar rules, including the century exception, and the algorithm does not use the computer's local time zone. That means the same input produces the same result in a browser, an API worker, or an automated record system anywhere in the world. The returned interval makes the assumption visible rather than hiding it inside the date. You can therefore compare the result against the veterinarian's written recommendation, the vaccine certificate, and any jurisdiction-specific requirement before creating a reminder or contacting the clinic.
Use the result as a reminder, not a prescription
A standard interval is a useful organizing default, but a real vaccination plan belongs to the pet and its veterinary context. Puppies and kittens often need an initial series with shorter gaps, so this adult booster calculator is not designed to schedule that series. A veterinarian may also alter timing because of an incomplete history, an overdue dose, pregnancy, immune status, previous reactions, travel, boarding rules, local disease prevalence, or the exact licensed product administered. Rabies requirements deserve special attention because legal validity and permitted intervals vary by jurisdiction and certificate. After calculating, compare the displayed date with the clinic's recall notice and written record. If they disagree, use the veterinarian's instruction and ask the clinic to explain or correct the record. In software, store the returned vaccine type, source vaccination date, interval, and calculated due date together so later reviewers can see how the reminder was produced. The API costs $0.002 per request when automated, while the in-browser version can be used for individual checks without turning a rough planning date into an unexamined medical decision.
What you can do with it
Prepare a clinic reminder
Calculate a routine adult booster date from a verified record before setting a calendar reminder.
Review shelter records
Normalize known vaccination dates and flag unsupported vaccine names for human review instead of guessing.
Plan boarding paperwork
Estimate when a supported vaccine may next be due, then confirm the result against facility rules and veterinary certificates.
FAQ
What does it cost?
The API costs $0.002 per request. Individual calculations can also run free in the browser.
Which vaccine types are recognized?
Rabies, canine DHPP, canine Bordetella, canine leptospirosis, feline FVRCP, and feline FeLV are recognized.
What happens with an unrecognized vaccine type?
The calculation returns an invalid-input error rather than guessing an interval.
Does this schedule puppy or kitten vaccination series?
No. It applies standard adult booster intervals and is not intended for initial multi-dose series.
How are month-end dates handled?
The original day is preserved when possible; otherwise the result uses the last valid day of the destination month.
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/pet/vaccination-schedule-due \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"vaccine_type":"canine_dhpp","last_vaccination_date":"2025-01-31"}'const res = await fetch("https://api.kit.forhosting.com/pet/vaccination-schedule-due", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"vaccine_type": "canine_dhpp",
"last_vaccination_date": "2025-01-31"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pet/vaccination-schedule-due",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"vaccine_type": "canine_dhpp",
"last_vaccination_date": "2025-01-31"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pet/vaccination-schedule-due", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"vaccine_type":"canine_dhpp","last_vaccination_date":"2025-01-31"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"vaccine_type":"canine_dhpp","last_vaccination_date":"2025-01-31"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pet/vaccination-schedule-due", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"vaccine_type": "canine_dhpp",
"last_vaccination_date": "2025-01-31"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pet.vaccination_schedule_due",
"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. |