BBizday

Documentation

Bizday is an operational API for AI agents. It gives agents safe deadlines, send times, receipts, budget checks, readiness audits, and workday calculations for business workflows in 30+ countries.

Base URL: https://api.bizday.dev

Agent Operations

Use these endpoints when an agent needs to act safely, explain its reasoning, or check whether a workflow is allowed before taking action.

POST/v1/deadline/calculate

Auditable deadlines for SLAs, invoices, follow-ups, payroll, and workflows.

POST/v1/send-time/next-safe

Safe send windows for emails, calls, SMS, tasks, and follow-ups.

POST/v1/receipts/create

Structured receipts for agent actions, purchases, and tool calls.

POST/v1/budget/check

Budget, approval-threshold, and vendor allowlist checks before spend.

POST/v1/readiness/audit

Agent-readiness scoring for websites, APIs, and docs.

Agent deadline example
curl -X POST "https://api.bizday.dev/v1/deadline/calculate" \
  -H "Authorization: Bearer wday_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "date": "2026-05-04",
    "country": "GB",
    "days": 5,
    "deadline_type": "sla",
    "timezone": "Europe/London",
    "agent_id": "agent_support_01"
  }'

Authentication

All API requests (except /v1/countries) require an API key. Pass it via the Authorization header:

curl "https://api.bizday.dev/v1/check?date=2026-03-05&country=US" \
  -H "Authorization: Bearer wday_your_api_key"

Security: Query-parameter API keys (?api_key=) are disabled by default. They can leak through logs, browser history, and Referer headers. Always use the Authorization: Bearer header.

Making Requests

All endpoints accept GET requests with query parameters. Dates must be in YYYY-MM-DD format. Country codes must be ISO 3166-1 alpha-2 (e.g. GB, US, DE).

Response Format

All responses follow a consistent JSON envelope:

// Success
{
  "success": true,
  "data": { ... },
  "meta": {
    "country": "GB",
    "requested_date": "2026-03-05",
    "cached": false,
    "timestamp": "2026-03-05T10:23:41.000Z"
  }
}

// Error
{
  "success": false,
  "error": {
    "code": "INVALID_DATE",
    "message": "Date must be in YYYY-MM-DD format.",
    "docs": "https://bizday.dev/docs/errors#INVALID_DATE"
  }
}

GET /v1/check

Check if a specific date is a workday in a given country.

Parameters

ParameterTypeRequiredDescription
datestringYesDate in YYYY-MM-DD format
countrystringYesISO 3166-1 alpha-2 country code
Response
{
  "success": true,
  "data": {
    "date": "2026-12-25",
    "country": "GB",
    "is_workday": false,
    "reason": "public_holiday",
    "holiday": {
      "name": "Christmas Day",
      "local_name": "Christmas Day",
      "type": "Public"
    }
  }
}

Example

curl "https://api.bizday.dev/v1/check?date=2026-12-25&country=GB" \
  -H "Authorization: Bearer wday_your_api_key"

GET /v1/next

Find the next (or previous) workday from a given date.

Parameters

ParameterTypeRequiredDescription
datestringNoDate in YYYY-MM-DD format (defaults to today)
countrystringYesISO 3166-1 alpha-2 country code
directionstringNo“next” (default) or “prev”
Response
{
  "success": true,
  "data": {
    "from_date": "2026-12-24",
    "country": "GB",
    "direction": "next",
    "workday": "2026-12-29"
  }
}

Example

curl "https://api.bizday.dev/v1/next?date=2026-12-24&country=GB" \
  -H "Authorization: Bearer wday_your_api_key"

GET /v1/add

Add (or subtract) a number of workdays to a date, skipping weekends and holidays.

Parameters

ParameterTypeRequiredDescription
datestringYesStart date in YYYY-MM-DD format
countrystringYesISO 3166-1 alpha-2 country code
daysintegerYesWorkdays to add (-365 to 365, non-zero)
Response
{
  "success": true,
  "data": {
    "start_date": "2026-03-05",
    "country": "US",
    "workdays_added": 10,
    "result_date": "2026-03-19",
    "weekends_skipped": 4,
    "holidays_skipped": []
  }
}

Example

curl "https://api.bizday.dev/v1/add?date=2026-03-05&country=US&days=10" \
  -H "Authorization: Bearer wday_your_api_key"

GET /v1/between

Count the number of workdays between two dates.

Parameters

ParameterTypeRequiredDescription
startstringYesStart date (exclusive) in YYYY-MM-DD
endstringYesEnd date (inclusive) in YYYY-MM-DD
countrystringYesISO 3166-1 alpha-2 country code
Response
{
  "success": true,
  "data": {
    "country": "DE",
    "start_date": "2026-03-01",
    "end_date": "2026-03-31",
    "workdays": 21,
    "weekends": 9,
    "holidays": 1,
    "holiday_list": [
      { "date": "2026-04-03", "name": "Good Friday" }
    ]
  }
}

Example

curl "https://api.bizday.dev/v1/between?start=2026-03-01&end=2026-03-31&country=DE" \
  -H "Authorization: Bearer wday_your_api_key"

GET /v1/countries

List all supported countries. This endpoint does not require authentication.

Response
{
  "success": true,
  "data": {
    "countries": [
      { "code": "AU", "name": "Australia" },
      { "code": "AT", "name": "Austria" },
      ...
    ],
    "count": 30
  }
}

Error Codes

All errors include a machine-readable code and a human-readable message.

CodeStatusDescription
INVALID_API_KEY401API key is missing or invalid
RATE_LIMIT_EXCEEDED429Monthly call limit reached
INVALID_DATE400Date format is not YYYY-MM-DD
INVALID_COUNTRY400Country code is not valid ISO 3166-1 alpha-2
COUNTRY_NOT_SUPPORTED400Country is not in supported list
INVALID_DAYS_PARAM400days must be non-zero integer, -365 to 365
INVALID_DATE_RANGE400end date must be after start date
DATE_RANGE_TOO_LARGE400Date range exceeds 366 days
INTERNAL_ERROR500Server error — please try again

Rate Limits

Rate limits are applied per API key on a monthly basis. Every response includes these headers:

HeaderDescription
X-RateLimit-LimitYour monthly request limit
X-RateLimit-RemainingRemaining requests this month
X-RateLimit-ResetISO 8601 timestamp when limit resets (1st of next month)
PlanMonthly Limit
Free10,000
Starter ($19/mo)100,000
Growth ($49/mo)500,000
Business ($149/mo)2,000,000
EnterpriseCustom

Supported Countries

Holiday data is synced weekly from authoritative sources. Currently supported:

AUAustralia
ATAustria
BEBelgium
BRBrazil
CACanada
CZCzech Republic
DKDenmark
FIFinland
FRFrance
DEGermany
HUHungary
INIndia
IEIreland
ITItaly
JPJapan
MXMexico
NLNetherlands
NZNew Zealand
NGNigeria
NONorway
PLPoland
PTPortugal
RORomania
SGSingapore
ZASouth Africa
ESSpain
SESweden
CHSwitzerland
GBUnited Kingdom
USUnited States