{"openapi":"3.1.0","info":{"title":"Business Days API","version":"1.0.0","description":"Working-day date math. Count the business days between two dates, add or subtract a number of working days from a date (negative goes backwards), and check whether a given date is a business day — all skipping weekends and any holidays you supply. Configure which days count as the weekend (Saturday/Sunday by default, or e.g. Friday/Saturday) and pass a list of custom holiday dates to exclude. Perfect for SLA and support deadlines, delivery and lead-time estimates, payroll and invoicing periods, and financial settlement dates. Pure local UTC date math — no key, no third-party service, deterministic and instant. Live. 4 endpoints. Distinct from a calendar date toolkit (which counts calendar days) and a holidays directory (which lists holidays).","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/businessdays-api","description":"oanor gateway"}],"tags":[{"name":"Days"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/add":{"get":{"operationId":"get_v1_add","tags":["Days"],"summary":"Add working days to a date","description":"","parameters":[{"name":"date","in":"query","required":true,"description":"Start date","schema":{"type":"string"},"example":"2026-06-01"},{"name":"days","in":"query","required":true,"description":"Working days to add (may be negative)","schema":{"type":"string"},"example":"10"},{"name":"weekend","in":"query","required":false,"description":"Weekend days, e.g. sat,sun or fri,sat (default sat,sun)","schema":{"type":"string"}},{"name":"holidays","in":"query","required":false,"description":"Custom holidays YYYY-MM-DD,... to exclude","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"date":"2026-06-01","result":"2026-06-15","weekday":"Monday","days_added":10},"meta":{"timestamp":"2026-06-02T16:51:55.133Z","request_id":"1d5aa0c2-7a80-4e1d-98fd-f68f46c0c834"},"status":"ok","message":"Add working days to a date","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/between":{"get":{"operationId":"get_v1_between","tags":["Days"],"summary":"Business days between two dates","description":"","parameters":[{"name":"start","in":"query","required":true,"description":"Start date","schema":{"type":"string"},"example":"2026-06-01"},{"name":"end","in":"query","required":true,"description":"End date","schema":{"type":"string"},"example":"2026-06-30"},{"name":"weekend","in":"query","required":false,"description":"Weekend days, e.g. sat,sun or fri,sat (default sat,sun)","schema":{"type":"string"}},{"name":"holidays","in":"query","required":false,"description":"Custom holidays YYYY-MM-DD,... to exclude","schema":{"type":"string"}},{"name":"include_end","in":"query","required":false,"description":"false to exclude the end date","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"end":"2026-06-30","start":"2026-06-01","weekend":[0,6],"include_end":true,"business_days":22},"meta":{"timestamp":"2026-06-02T16:51:55.235Z","request_id":"292a72c2-2506-4278-a282-7d0cc0f8a69a"},"status":"ok","message":"Business days between two dates","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/is-business-day":{"get":{"operationId":"get_v1_is_business_day","tags":["Days"],"summary":"Classify a date","description":"","parameters":[{"name":"date","in":"query","required":true,"description":"Date","schema":{"type":"string"},"example":"2026-06-06"},{"name":"weekend","in":"query","required":false,"description":"Weekend days, e.g. sat,sun or fri,sat (default sat,sun)","schema":{"type":"string"}},{"name":"holidays","in":"query","required":false,"description":"Custom holidays YYYY-MM-DD,... to exclude","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"date":"2026-06-06","weekday":"Saturday","is_holiday":false,"is_weekend":true,"is_business_day":false},"meta":{"timestamp":"2026-06-02T16:51:55.356Z","request_id":"b7645352-8fee-4cd7-8436-6dc248c81c00"},"status":"ok","message":"Classify a date","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"auth":"none upstream; this gateway requires x-api-key","name":"Business Days API","note":"Working-day calculations. /v1/between?start=&end= counts business days (include_end=false to exclude); /v1/add?date=&days=N adds/subtracts N working days (N may be negative); /v1/is-business-day?date= classifies a date. Configure ?weekend=sat,sun (or fri,sat, or 0..6) and pass ?holidays=YYYY-MM-DD,... for custom holidays. UTC, deterministic, instant.","source":"Local working-day math — no key, no upstream","endpoints":4},"meta":{"timestamp":"2026-06-02T16:51:55.468Z","request_id":"f5d27c5e-166b-4116-8b3d-81292aecc38c"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":1300,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":480,"monthly_call_quota":18000,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2440,"monthly_call_quota":162000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":6040,"monthly_call_quota":830000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/businessdays-api"}