FluentEDI Time API

Time, dates and windows

Operations 12

GET /v1/time/now Current date and time in any IANA timezone #
POST /v1/time/now Current date and time in any IANA timezone #
GET /v1/time/convert Convert a timestamp between timezones #
POST /v1/time/convert Convert a timestamp between timezones #
GET /v1/time/add Add or subtract a duration from a date, calendar-aware #
POST /v1/time/add Add or subtract a duration from a date, calendar-aware #
GET /v1/time/diff Duration between two dates, in every unit #
POST /v1/time/diff Duration between two dates, in every unit #
GET /v1/time/window Test whether an instant falls inside a time window, and by how much it misses #
POST /v1/time/window Test whether an instant falls inside a time window, and by how much it misses #
GET /v1/time/zones List or search IANA timezone identifiers with current offsets #
POST /v1/time/zones List or search IANA timezone identifiers with current offsets #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/fluentedi-time-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

fluentedi-time-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: FluentEDI Time API
  version: 1.1.0
  summary: Deterministic tools for AI agents. No key, no signup, no SDK.
  description: 'A public HTTP API of deterministic tools for the work a language model cannot do reliably by reasoning: knowing the current time in any timezone and whether an instant falls inside a window, exact arithmetic, hashing and signature verification, canonicalizing and content-addressing JSON, repairing malformed JSON and pinpointing where it broke, querying and diffing structured data, parsing CSV correctly, converting units, colours and currencies at live ECB rates, testing regular expressions…'
  license:
    name: Free to use
    identifier: MIT
servers:
- url: https://fluentedi.com
tags:
- name: Time
  description: Time, dates and windows
paths:
  /v1/time/now:
    get:
      operationId: time_now_get
      summary: Current date and time in any IANA timezone
      description: 'Returns the authoritative current time in one or more timezones, with UTC offset, ISO week number, day of year, weekend flag, and daylight-saving state. Use this instead of guessing the date: a language model has no clock, and its training cutoff is not today.'
      tags:
      - Time
      parameters:
      - name: timezone
        in: query
        required: false
        description: IANA timezone identifier, e.g. "UTC", "America/New_York", "Asia/Kolkata", "Europe/London".
        schema:
          description: IANA timezone identifier, e.g. "UTC", "America/New_York", "Asia/Kolkata", "Europe/London".
          type: string
          default: UTC
          examples:
          - America/New_York
      - name: also
        in: query
        required: false
        description: Additional timezones to report alongside the primary one.
        schema:
          description: Additional timezones to report alongside the primary one.
          type: array
          default: []
          items:
            type: string
          examples:
          - - Asia/Tokyo
            - Europe/Berlin
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
    post:
      operationId: time_now_post
      summary: Current date and time in any IANA timezone
      description: 'Returns the authoritative current time in one or more timezones, with UTC offset, ISO week number, day of year, weekend flag, and daylight-saving state. Use this instead of guessing the date: a language model has no clock, and its training cutoff is not today.'
      tags:
      - Time
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                timezone:
                  description: IANA timezone identifier, e.g. "UTC", "America/New_York", "Asia/Kolkata", "Europe/London".
                  type: string
                  default: UTC
                  examples:
                  - America/New_York
                also:
                  description: Additional timezones to report alongside the primary one.
                  type: array
                  default: []
                  items:
                    type: string
                  examples:
                  - - Asia/Tokyo
                    - Europe/Berlin
              required: []
              additionalProperties: false
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
  /v1/time/convert:
    get:
      operationId: time_convert_get
      summary: Convert a timestamp between timezones
      description: Converts one instant into any number of timezones, handling daylight saving transitions correctly. Naive inputs (no Z or offset) are read as wall-clock time in `from`; inputs carrying an offset are absolute.
      tags:
      - Time
      parameters:
      - name: time
        in: query
        required: false
        description: 'The instant to convert: ISO 8601, a naive wall-clock time, a unix timestamp, or "now".'
        schema:
          description: 'The instant to convert: ISO 8601, a naive wall-clock time, a unix timestamp, or "now".'
          type: string
          default: now
          examples:
          - '2026-08-22T14:30:00'
      - name: from
        in: query
        required: false
        description: Timezone the input is expressed in (used only when it carries no offset).
        schema:
          description: Timezone the input is expressed in (used only when it carries no offset).
          type: string
          default: UTC
          examples:
          - America/New_York
      - name: to
        in: query
        required: true
        description: Target timezones.
        schema:
          description: Target timezones.
          type: array
          default:
          - UTC
          items:
            type: string
          examples:
          - - Asia/Tokyo
            - America/New_York
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
    post:
      operationId: time_convert_post
      summary: Convert a timestamp between timezones
      description: Converts one instant into any number of timezones, handling daylight saving transitions correctly. Naive inputs (no Z or offset) are read as wall-clock time in `from`; inputs carrying an offset are absolute.
      tags:
      - Time
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                time:
                  description: 'The instant to convert: ISO 8601, a naive wall-clock time, a unix timestamp, or "now".'
                  type: string
                  default: now
                  examples:
                  - '2026-08-22T14:30:00'
                from:
                  description: Timezone the input is expressed in (used only when it carries no offset).
                  type: string
                  default: UTC
                  examples:
                  - America/New_York
                to:
                  description: Target timezones.
                  type: array
                  default:
                  - UTC
                  items:
                    type: string
                  examples:
                  - - Asia/Tokyo
                    - America/New_York
              required:
              - to
              additionalProperties: false
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
  /v1/time/add:
    get:
      operationId: time_add_get
      summary: Add or subtract a duration from a date, calendar-aware
      description: Adds years, months, weeks, days, hours, minutes and seconds to an instant. Calendar units (years, months, weeks, days) move wall-clock time and clamp overflow — Jan 31 plus one month is Feb 28 or 29, never Mar 3. Clock units (hours, minutes, seconds) add exact elapsed time and therefore cross DST boundaries.
      tags:
      - Time
      parameters:
      - name: time
        in: query
        required: false
        description: 'Starting instant: ISO 8601, unix timestamp, or "now".'
        schema:
          description: 'Starting instant: ISO 8601, unix timestamp, or "now".'
          type: string
          default: now
      - name: timezone
        in: query
        required: false
        description: IANA timezone identifier, e.g. "UTC", "America/New_York", "Asia/Kolkata", "Europe/London".
        schema:
          description: IANA timezone identifier, e.g. "UTC", "America/New_York", "Asia/Kolkata", "Europe/London".
          type: string
          default: UTC
          examples:
          - America/New_York
      - name: years
        in: query
        required: false
        description: Years to add (negative subtracts).
        schema:
          description: Years to add (negative subtracts).
          type: integer
          default: 0
      - name: months
        in: query
        required: false
        description: Months to add (negative subtracts). Day-of-month is clamped.
        schema:
          description: Months to add (negative subtracts). Day-of-month is clamped.
          type: integer
          default: 0
      - name: weeks
        in: query
        required: false
        description: Weeks to add (negative subtracts).
        schema:
          description: Weeks to add (negative subtracts).
          type: integer
          default: 0
      - name: days
        in: query
        required: false
        description: Calendar days to add (negative subtracts).
        schema:
          description: Calendar days to add (negative subtracts).
          type: integer
          default: 0
      - name: hours
        in: query
        required: false
        description: Exact hours to add (negative subtracts).
        schema:
          description: Exact hours to add (negative subtracts).
          type: number
          default: 0
      - name: minutes
        in: query
        required: false
        description: Exact minutes to add (negative subtracts).
        schema:
          description: Exact minutes to add (negative subtracts).
          type: number
          default: 0
      - name: seconds
        in: query
        required: false
        description: Exact seconds to add (negative subtracts).
        schema:
          description: Exact seconds to add (negative subtracts).
          type: number
          default: 0
      - name: business_days
        in: query
        required: false
        description: Weekdays to add, skipping Saturday and Sunday.
        schema:
          description: Weekdays to add, skipping Saturday and Sunday.
          type: integer
          default: 0
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
    post:
      operationId: time_add_post
      summary: Add or subtract a duration from a date, calendar-aware
      description: Adds years, months, weeks, days, hours, minutes and seconds to an instant. Calendar units (years, months, weeks, days) move wall-clock time and clamp overflow — Jan 31 plus one month is Feb 28 or 29, never Mar 3. Clock units (hours, minutes, seconds) add exact elapsed time and therefore cross DST boundaries.
      tags:
      - Time
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                time:
                  description: 'Starting instant: ISO 8601, unix timestamp, or "now".'
                  type: string
                  default: now
                timezone:
                  description: IANA timezone identifier, e.g. "UTC", "America/New_York", "Asia/Kolkata", "Europe/London".
                  type: string
                  default: UTC
                  examples:
                  - America/New_York
                years:
                  description: Years to add (negative subtracts).
                  type: integer
                  default: 0
                months:
                  description: Months to add (negative subtracts). Day-of-month is clamped.
                  type: integer
                  default: 0
                weeks:
                  description: Weeks to add (negative subtracts).
                  type: integer
                  default: 0
                days:
                  description: Calendar days to add (negative subtracts).
                  type: integer
                  default: 0
                hours:
                  description: Exact hours to add (negative subtracts).
                  type: number
                  default: 0
                minutes:
                  description: Exact minutes to add (negative subtracts).
                  type: number
                  default: 0
                seconds:
                  description: Exact seconds to add (negative subtracts).
                  type: number
                  default: 0
                business_days:
                  description: Weekdays to add, skipping Saturday and Sunday.
                  type: integer
                  default: 0
              required: []
              additionalProperties: false
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
  /v1/time/diff:
    get:
      operationId: time_diff_get
      summary: Duration between two dates, in every unit
      description: 'Computes the elapsed time between two instants: exact totals in each unit, a calendar breakdown (years/months/days rather than ''thirteen and a half months''), the count of weekdays in between, and a human phrase. Negative when `to` precedes `from`.'
      tags:
      - Time
      parameters:
      - name: from
        in: query
        required: false
        description: 'Start instant: ISO 8601, unix timestamp, or "now".'
        schema:
          description: 'Start instant: ISO 8601, unix timestamp, or "now".'
          type: string
          default: now
          examples:
          - '1990-05-14'
      - name: to
        in: query
        required: false
        description: 'End instant: ISO 8601, unix timestamp, or "now".'
        schema:
          description: 'End instant: ISO 8601, unix timestamp, or "now".'
          type: string
          default: now
      - name: timezone
        in: query
        required: false
        description: IANA timezone identifier, e.g. "UTC", "America/New_York", "Asia/Kolkata", "Europe/London".
        schema:
          description: IANA timezone identifier, e.g. "UTC", "America/New_York", "Asia/Kolkata", "Europe/London".
          type: string
          default: UTC
          examples:
          - America/New_York
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
    post:
      operationId: time_diff_post
      summary: Duration between two dates, in every unit
      description: 'Computes the elapsed time between two instants: exact totals in each unit, a calendar breakdown (years/months/days rather than ''thirteen and a half months''), the count of weekdays in between, and a human phrase. Negative when `to` precedes `from`.'
      tags:
      - Time
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                from:
                  description: 'Start instant: ISO 8601, unix timestamp, or "now".'
                  type: string
                  default: now
                  examples:
                  - '1990-05-14'
                to:
                  description: 'End instant: ISO 8601, unix timestamp, or "now".'
                  type: string
                  default: now
                timezone:
                  description: IANA timezone identifier, e.g. "UTC", "America/New_York", "Asia/Kolkata", "Europe/London".
                  type: string
                  default: UTC
                  examples:
                  - America/New_York
              required: []
              additionalProperties: false
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
  /v1/time/window:
    get:
      operationId: time_window_get
      summary: Test whether an instant falls inside a time window, and by how much it misses
      description: 'Answers the questions a deadline actually poses: is this instant inside the window, how long until it opens or closes, and if it is outside, by how much. Optionally compares two windows for overlap. A window comparison that silently succeeds against the wrong bounds is a failure mode that does not raise an error anywhere — the ship window is missed, or the ASN is late, and the only symptom is a chargeback later. This computes the boundary instead of assuming it.'
      tags:
      - Time
      parameters:
      - name: start
        in: query
        required: true
        description: 'Window opens at this instant: ISO 8601, unix timestamp, or "now".'
        schema:
          description: 'Window opens at this instant: ISO 8601, unix timestamp, or "now".'
          type: string
          examples:
          - '2026-08-24T09:00:00Z'
      - name: end
        in: query
        required: false
        description: Window closes at this instant. Omit if using `duration_hours`.
        schema:
          description: Window closes at this instant. Omit if using `duration_hours`.
          type: string
          default: ''
      - name: duration_hours
        in: query
        required: false
        description: Window length in hours, used when `end` is omitted.
        schema:
          description: Window length in hours, used when `end` is omitted.
          type: number
          default: 0
      - name: instant
        in: query
        required: false
        description: The instant to test against the window.
        schema:
          description: The instant to test against the window.
          type: string
          default: now
      - name: timezone
        in: query
        required: false
        description: IANA timezone used to read naive inputs and render output.
        schema:
          description: IANA timezone used to read naive inputs and render output.
          type: string
          default: UTC
          examples:
          - America/New_York
      - name: compare_start
        in: query
        required: false
        description: Start of a second window, to test for overlap with the first.
        schema:
          description: Start of a second window, to test for overlap with the first.
          type: string
          default: ''
      - name: compare_end
        in: query
        required: false
        description: End of the second window.
        schema:
          description: End of the second window.
          type: string
          default: ''
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
    post:
      operationId: time_window_post
      summary: Test whether an instant falls inside a time window, and by how much it misses
      description: 'Answers the questions a deadline actually poses: is this instant inside the window, how long until it opens or closes, and if it is outside, by how much. Optionally compares two windows for overlap. A window comparison that silently succeeds against the wrong bounds is a failure mode that does not raise an error anywhere — the ship window is missed, or the ASN is late, and the only symptom is a chargeback later. This computes the boundary instead of assuming it.'
      tags:
      - Time
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                start:
                  description: 'Window opens at this instant: ISO 8601, unix timestamp, or "now".'
                  type: string
                  examples:
                  - '2026-08-24T09:00:00Z'
                end:
                  description: Window closes at this instant. Omit if using `duration_hours`.
                  type: string
                  default: ''
                duration_hours:
                  description: Window length in hours, used when `end` is omitted.
                  type: number
                  default: 0
                instant:
                  description: The instant to test against the window.
                  type: string
                  default: now
                timezone:
                  description: IANA timezone used to read naive inputs and render output.
                  type: string
                  default: UTC
                  examples:
                  - America/New_York
                compare_start:
                  description: Start of a second window, to test for overlap with the first.
                  type: string
                  default: ''
                compare_end:
                  description: End of the second window.
                  type: string
                  default: ''
              required:
              - start
              additionalProperties: false
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
  /v1/time/zones:
    get:
      operationId: time_zones_get
      summary: List or search IANA timezone identifiers with current offsets
      description: Every IANA timezone the runtime supports, with its current UTC offset and local time. Search by city, region or offset to resolve a vague location like "Bangalore" to a valid identifier before calling other time tools.
      tags:
      - Time
      parameters:
      - name: search
        in: query
        required: false
        description: Case-insensitive substring filter, e.g. "kolkata", "america/", "+05:30".
        schema:
          description: Case-insensitive substring filter, e.g. "kolkata", "america/", "+05:30".
          type: string
          default: ''
      - name: limit
        in: query
        required: false
        description: Maximum results to return.
        schema:
          description: Maximum results to return.
          type: integer
          default: 50
          minimum: 1
          maximum: 700
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.
    post:
      operationId: time_zones_post
      summary: List or search IANA timezone identifiers with current offsets
      description: Every IANA timezone the runtime supports, with its current UTC offset and local time. Search by city, region or offset to resolve a vague location like "Bangalore" to a valid identifier before calling other time tools.
      tags:
      - Time
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                search:
                  description: Case-insensitive substring filter, e.g. "kolkata", "america/", "+05:30".
                  type: string
                  default: ''
                limit:
                  description: Maximum results to return.
                  type: integer
                  default: 50
                  minimum: 1
                  maximum: 700
              required: []
              additionalProperties: false
      responses:
        '200':
          description: Tool result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  tool:
                    type: string
                  result:
                    type: object
                    description: Tool-specific result payload.
        '400':
          description: Invalid input. The body carries the parameter schema and working examples.