Selector families stay explicit
Resolve time using `tz`, `ip`, `lat` + `lon`, or `offset`, with docs that explain where each selector works and where it does not.
TimeLogic API resolves time by IANA zone, IP, coordinates, or offset, then layers in conversion, calendar, DST, elapsed-time, and business-day workflows without forcing you into multiple services.
Built for RapidAPI distribution, but readable enough for engineering teams who want the exact behavior before they subscribe.
Resolve time using `tz`, `ip`, `lat` + `lon`, or `offset`, with docs that explain where each selector works and where it does not.
The public signing key route, signature headers, and verification posture are surfaced alongside normal JSON examples instead of buried in a sidebar.
The `/v1/time/clock` route gets style-aware examples, embed guidance, and a visual showcase so it reads like a feature, not a novelty endpoint.
Each route explains what selector families are allowed, when bulk mode is valid, how signed responses behave, and what display fields should never be parsed structurally.
Docs make the selector rule obvious up front so teams do not mix incompatible inputs in the same request.
Each endpoint page calls out which fields are authoritative, which are display-oriented, and when a response can be signed.
Every endpoint includes natural-language guidance and code snippets for cURL, JavaScript, TypeScript, Python, Go, Java, C#, PHP, Ruby, and Kotlin.
Quickstart, concepts, endpoint reference, SEO guides, and a raw Swagger view are all static and generated from the committed public spec.
Use this route to validate selector resolution and inspect the canonical single-target time payload.
View EndpointJump into static search for endpoints, parameters, selector rules, guide topics, and common time API terms.
Search DocsThe committed public OpenAPI document is published directly in the site and rendered through a static Swagger view.
Open Swaggercurl --request GET \
--url "https://timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com/v1/time/current?tz=America%2FNew_York&format=%25Y-%25m-%25d+%25H%3A%25M&sign=true" \
--header "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \
--header "X-RapidAPI-Host: timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com" const url = new URL("https://timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com/v1/time/current");
const query = [
["tz", "America/New_York"],
["format", "%Y-%m-%d %H:%M"],
["sign", "true"]
];
for (const [key, value] of query) {
url.searchParams.set(key, value);
}
const response = await fetch(url, {
method: "GET",
headers: {
"X-RapidAPI-Key": process.env.TIMELOGIC_API_KEY,
"X-RapidAPI-Host": "timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com",
},
});
const body = await response.text();
console.log(body); const url = new URL("https://timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com/v1/time/current");
const query: Array<[string, string]> = [
["tz", "America/New_York"],
["format", "%Y-%m-%d %H:%M"],
["sign", "true"]
];
for (const [key, value] of query) {
url.searchParams.set(key, value);
}
const response = await fetch(url, {
method: "GET",
headers: {
"X-RapidAPI-Key": process.env.TIMELOGIC_API_KEY ?? "",
"X-RapidAPI-Host": "timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com",
},
});
const body = await response.text();
console.log(body); import os
import requests
url = "https://timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com/v1/time/current"
params = {
"tz": "America/New_York",
"format": "%Y-%m-%d %H:%M",
"sign": "true"
}
headers = {
"X-RapidAPI-Key": os.environ["TIMELOGIC_API_KEY"],
"X-RapidAPI-Host": "timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com",
}
response = requests.get(url, params=params, headers=headers, timeout=30)
print(response.text) package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com/v1/time/current", nil)
query := req.URL.Query()
query.Set("tz", "America/New_York")
query.Set("format", "%Y-%m-%d %H:%M")
query.Set("sign", "true")
req.URL.RawQuery = query.Encode()
req.Header.Set("X-RapidAPI-Key", os.Getenv("TIMELOGIC_API_KEY"))
req.Header.Set("X-RapidAPI-Host", "timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
} import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class TimeLogicExample {
public static void main(String[] args) throws IOException, InterruptedException {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com/v1/time/current?tz=America%2FNew_York&format=%25Y-%25m-%25d+%25H%3A%25M&sign=true"))
.header("X-RapidAPI-Key", System.getenv("TIMELOGIC_API_KEY"))
.header("X-RapidAPI-Host", "timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
} using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Get, "https://timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com/v1/time/current?tz=America%2FNew_York&format=%25Y-%25m-%25d+%25H%3A%25M&sign=true");
request.Headers.Add("X-RapidAPI-Key", Environment.GetEnvironmentVariable("TIMELOGIC_API_KEY"));
request.Headers.Add("X-RapidAPI-Host", "timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com");
using var response = await client.SendAsync(request);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
} <?php
$url = "https://timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com/v1/time/current?tz=America%2FNew_York&format=%25Y-%25m-%25d+%25H%3A%25M&sign=true";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"X-RapidAPI-Key: " . getenv("TIMELOGIC_API_KEY"),
"X-RapidAPI-Host: timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com",
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response; require "net/http"
require "uri"
uri = URI("https://timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com/v1/time/current")
params = {
"tz" => "America/New_York",
"format" => "%Y-%m-%d %H:%M",
"sign" => "true"
}
uri.query = URI.encode_www_form(params)
request = Net::HTTP::Get.new(uri)
request["X-RapidAPI-Key"] = ENV.fetch("TIMELOGIC_API_KEY")
request["X-RapidAPI-Host"] = "timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts response.body import okhttp3.OkHttpClient
import okhttp3.Request
fun main() {
val client = OkHttpClient()
val request = Request.Builder()
.url("https://timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com/v1/time/current?tz=America%2FNew_York&format=%25Y-%25m-%25d+%25H%3A%25M&sign=true")
.get()
.addHeader("X-RapidAPI-Key", System.getenv("TIMELOGIC_API_KEY"))
.addHeader("X-RapidAPI-Host", "timelogic-api-world-time-timezones-time-calculations.p.rapidapi.com")
.build()
client.newCall(request).execute().use { response ->
println(response.body?.string())
}
} The API surface stays compact, but it covers selector families, bulk lookup, signed JSON, holiday-aware calculations, and a clock endpoint that ships usable HTML.
How to evaluate a world time API when you need more than a bare UTC conversion utility.
Read GuideThe strongest timezone APIs make input strategy and ambiguity handling clear before you ship.
Read GuideConversion is where timestamp inputs, source timezone context, and formatting choices start to matter.
Read GuideTeams with higher throughput, commercial review needs, or edge-focused deployment requirements can contact enterprise for capacity planning and a better fit than the standard self-serve path.
Use the quickstart for the happy path, expand the deep sections when you need full parameter nuance, then push the same request into your preferred language snippet.