{
  "openapi": "3.1.0",
  "info": {
    "title": "Minare Prayer Times API",
    "version": "1.0.0",
    "summary": "Prayer times, monthly timetables, qibla and Hijri dates for any place on Earth.",
    "description": "The engine behind the Minare apps. Times are local wall-clock HH:mm (24h) in the place's time zone; ISO instants are UTC. Diyanet is the default method in Turkey. Every request needs an API key: sign in with a passkey at https://minare.app/en/sign-in and create one in the developer dashboard (https://minare.app/en/developers/dashboard). Plans: https://minare.app/en/developers#plans (trial, pro, business); API and MCP share one quota. An MCP server with the same tools runs at https://minare.app/mcp.",
    "contact": {
      "name": "Minare",
      "url": "https://minare.app/en/developers"
    },
    "termsOfService": "https://minare.app/en/terms"
  },
  "servers": [
    {
      "url": "https://minare.app"
    }
  ],
  "security": [
    {
      "bearer": []
    },
    {
      "apiKey": []
    }
  ],
  "externalDocs": {
    "url": "https://minare.app/llms-full.txt",
    "description": "Full plain-text documentation"
  },
  "paths": {
    "/api/v1/times": {
      "get": {
        "operationId": "getPrayerTimes",
        "summary": "Prayer times for one day",
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "description": "City name ('Kadıköy', 'London, United Kingdom') or a minare.app path ('turkey/istanbul/kadikoy'). Use either city or lat+lon.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lat",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            }
          },
          {
            "name": "lon",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            }
          },
          {
            "name": "tz",
            "in": "query",
            "description": "IANA time zone for lat/lon; guessed from the nearest city when omitted",
            "schema": {
              "type": "string",
              "example": "Europe/Istanbul"
            }
          },
          {
            "name": "date",
            "in": "query",
            "description": "YYYY-MM-DD; local today when omitted",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "method",
            "in": "query",
            "description": "Calculation method; default depends on the country (Diyanet in Turkey)",
            "schema": {
              "type": "string",
              "enum": [
                "diyanet",
                "muslimWorldLeague",
                "isna",
                "egyptian",
                "ummAlQura",
                "karachi",
                "tehran",
                "jafari",
                "gulf",
                "kuwait",
                "qatar",
                "dubai",
                "singapore",
                "jakim",
                "kemenag",
                "uoif",
                "russia",
                "moonsighting",
                "morocco",
                "algeria",
                "tunisia",
                "jordan",
                "portugal"
              ]
            }
          },
          {
            "name": "madhab",
            "in": "query",
            "description": "Asr; default depends on the country (hanafi in South and Central Asia)",
            "schema": {
              "type": "string",
              "enum": [
                "shafi",
                "hanafi"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The day's prayer times",
            "headers": {
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Reset": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "location": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "The resolved city (with tr/en URLs) or the coordinates"
                    },
                    "method": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        }
                      }
                    },
                    "madhab": {
                      "type": "string"
                    },
                    "timeZone": {
                      "type": "string"
                    },
                    "date": {
                      "type": "string",
                      "format": "date"
                    },
                    "hijri": {
                      "type": "object",
                      "properties": {
                        "day": {
                          "type": "integer"
                        },
                        "month": {
                          "type": "integer"
                        },
                        "year": {
                          "type": "integer"
                        },
                        "monthName": {
                          "type": "string"
                        }
                      }
                    },
                    "times": {
                      "type": "object",
                      "properties": {
                        "imsak": {
                          "type": "string",
                          "pattern": "^\\d{2}:\\d{2}$",
                          "example": "18:52"
                        },
                        "fajr": {
                          "type": "string",
                          "pattern": "^\\d{2}:\\d{2}$",
                          "example": "18:52"
                        },
                        "sunrise": {
                          "type": "string",
                          "pattern": "^\\d{2}:\\d{2}$",
                          "example": "18:52"
                        },
                        "dhuhr": {
                          "type": "string",
                          "pattern": "^\\d{2}:\\d{2}$",
                          "example": "18:52"
                        },
                        "asr": {
                          "type": "string",
                          "pattern": "^\\d{2}:\\d{2}$",
                          "example": "18:52"
                        },
                        "maghrib": {
                          "type": "string",
                          "pattern": "^\\d{2}:\\d{2}$",
                          "example": "18:52"
                        },
                        "isha": {
                          "type": "string",
                          "pattern": "^\\d{2}:\\d{2}$",
                          "example": "18:52"
                        }
                      },
                      "required": [
                        "imsak",
                        "fajr",
                        "sunrise",
                        "dhuhr",
                        "asr",
                        "maghrib",
                        "isha"
                      ]
                    },
                    "iso": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string",
                        "format": "date-time"
                      }
                    },
                    "extras": {
                      "type": "object",
                      "properties": {
                        "ishraq": {
                          "type": "string",
                          "pattern": "^\\d{2}:\\d{2}$",
                          "example": "18:52"
                        },
                        "zawalStart": {
                          "type": "string",
                          "pattern": "^\\d{2}:\\d{2}$",
                          "example": "18:52"
                        },
                        "isfirar": {
                          "type": "string",
                          "pattern": "^\\d{2}:\\d{2}$",
                          "example": "18:52"
                        },
                        "midnight": {
                          "type": "string",
                          "pattern": "^\\d{2}:\\d{2}$",
                          "example": "18:52"
                        },
                        "lastThirdStart": {
                          "type": "string",
                          "pattern": "^\\d{2}:\\d{2}$",
                          "example": "18:52"
                        }
                      }
                    },
                    "estimated": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Prayers estimated because of high latitude"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/api/v1/month": {
      "get": {
        "operationId": "getMonthlyTimetable",
        "summary": "Timetable for a month",
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "description": "City name ('Kadıköy', 'London, United Kingdom') or a minare.app path ('turkey/istanbul/kadikoy'). Use either city or lat+lon.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lat",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            }
          },
          {
            "name": "lon",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            }
          },
          {
            "name": "tz",
            "in": "query",
            "description": "IANA time zone for lat/lon; guessed from the nearest city when omitted",
            "schema": {
              "type": "string",
              "example": "Europe/Istanbul"
            }
          },
          {
            "name": "year",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "month",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 12
            }
          },
          {
            "name": "method",
            "in": "query",
            "description": "Calculation method; default depends on the country (Diyanet in Turkey)",
            "schema": {
              "type": "string",
              "enum": [
                "diyanet",
                "muslimWorldLeague",
                "isna",
                "egyptian",
                "ummAlQura",
                "karachi",
                "tehran",
                "jafari",
                "gulf",
                "kuwait",
                "qatar",
                "dubai",
                "singapore",
                "jakim",
                "kemenag",
                "uoif",
                "russia",
                "moonsighting",
                "morocco",
                "algeria",
                "tunisia",
                "jordan",
                "portugal"
              ]
            }
          },
          {
            "name": "madhab",
            "in": "query",
            "description": "Asr; default depends on the country (hanafi in South and Central Asia)",
            "schema": {
              "type": "string",
              "enum": [
                "shafi",
                "hanafi"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Every day of the month",
            "headers": {
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Reset": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "location": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "The resolved city (with tr/en URLs) or the coordinates"
                    },
                    "method": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        }
                      }
                    },
                    "timeZone": {
                      "type": "string"
                    },
                    "year": {
                      "type": "integer"
                    },
                    "month": {
                      "type": "integer"
                    },
                    "days": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "date": {
                            "type": "string",
                            "format": "date"
                          },
                          "hijri": {
                            "type": "object",
                            "properties": {
                              "day": {
                                "type": "integer"
                              },
                              "month": {
                                "type": "integer"
                              },
                              "year": {
                                "type": "integer"
                              },
                              "monthName": {
                                "type": "string"
                              }
                            }
                          },
                          "times": {
                            "type": "object",
                            "properties": {
                              "imsak": {
                                "type": "string",
                                "pattern": "^\\d{2}:\\d{2}$",
                                "example": "18:52"
                              },
                              "fajr": {
                                "type": "string",
                                "pattern": "^\\d{2}:\\d{2}$",
                                "example": "18:52"
                              },
                              "sunrise": {
                                "type": "string",
                                "pattern": "^\\d{2}:\\d{2}$",
                                "example": "18:52"
                              },
                              "dhuhr": {
                                "type": "string",
                                "pattern": "^\\d{2}:\\d{2}$",
                                "example": "18:52"
                              },
                              "asr": {
                                "type": "string",
                                "pattern": "^\\d{2}:\\d{2}$",
                                "example": "18:52"
                              },
                              "maghrib": {
                                "type": "string",
                                "pattern": "^\\d{2}:\\d{2}$",
                                "example": "18:52"
                              },
                              "isha": {
                                "type": "string",
                                "pattern": "^\\d{2}:\\d{2}$",
                                "example": "18:52"
                              }
                            },
                            "required": [
                              "imsak",
                              "fajr",
                              "sunrise",
                              "dhuhr",
                              "asr",
                              "maghrib",
                              "isha"
                            ]
                          },
                          "estimated": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/api/v1/next": {
      "get": {
        "operationId": "getNextPrayer",
        "summary": "The next prayer from now",
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "description": "City name ('Kadıköy', 'London, United Kingdom') or a minare.app path ('turkey/istanbul/kadikoy'). Use either city or lat+lon.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lat",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            }
          },
          {
            "name": "lon",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            }
          },
          {
            "name": "tz",
            "in": "query",
            "description": "IANA time zone for lat/lon; guessed from the nearest city when omitted",
            "schema": {
              "type": "string",
              "example": "Europe/Istanbul"
            }
          },
          {
            "name": "method",
            "in": "query",
            "description": "Calculation method; default depends on the country (Diyanet in Turkey)",
            "schema": {
              "type": "string",
              "enum": [
                "diyanet",
                "muslimWorldLeague",
                "isna",
                "egyptian",
                "ummAlQura",
                "karachi",
                "tehran",
                "jafari",
                "gulf",
                "kuwait",
                "qatar",
                "dubai",
                "singapore",
                "jakim",
                "kemenag",
                "uoif",
                "russia",
                "moonsighting",
                "morocco",
                "algeria",
                "tunisia",
                "jordan",
                "portugal"
              ]
            }
          },
          {
            "name": "madhab",
            "in": "query",
            "description": "Asr; default depends on the country (hanafi in South and Central Asia)",
            "schema": {
              "type": "string",
              "enum": [
                "shafi",
                "hanafi"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Next prayer",
            "headers": {
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Reset": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "location": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "The resolved city (with tr/en URLs) or the coordinates"
                    },
                    "now": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "next": {
                      "type": "object",
                      "properties": {
                        "prayer": {
                          "type": "string"
                        },
                        "time": {
                          "type": "string",
                          "pattern": "^\\d{2}:\\d{2}$",
                          "example": "18:52"
                        },
                        "iso": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "inSeconds": {
                          "type": "integer"
                        }
                      }
                    },
                    "previous": {
                      "type": [
                        "object",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/api/v1/qibla": {
      "get": {
        "operationId": "getQibla",
        "summary": "Qibla bearing and distance to the Kaaba",
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "description": "City name ('Kadıköy', 'London, United Kingdom') or a minare.app path ('turkey/istanbul/kadikoy'). Use either city or lat+lon.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lat",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            }
          },
          {
            "name": "lon",
            "in": "query",
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Qibla",
            "headers": {
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Reset": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "location": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "The resolved city (with tr/en URLs) or the coordinates"
                    },
                    "bearing": {
                      "type": "number",
                      "description": "Degrees clockwise from true north"
                    },
                    "distanceKm": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/api/v1/cities": {
      "get": {
        "operationId": "searchCities",
        "summary": "Search cities and Turkish districts",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 2
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Matching cities",
            "headers": {
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Reset": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "cities": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "The resolved city (with tr/en URLs) or the coordinates"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/api/v1/hijri": {
      "get": {
        "operationId": "getHijriDate",
        "summary": "Hijri (Umm al-Qura) date for a Gregorian date",
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Hijri date",
            "headers": {
              "RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Limit": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Remaining": {
                "schema": {
                  "type": "integer"
                }
              },
              "X-Quota-Reset": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "date": {
                      "type": "string"
                    },
                    "hijri": {
                      "type": "object"
                    },
                    "calendar": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "403": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "scheme": "bearer",
        "description": "Authorization: Bearer mk_…. Sign in with a passkey at https://minare.app/en/sign-in and create a key in the developer dashboard (https://minare.app/en/developers/dashboard). The Trial plan is free."
      },
      "apiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "The same key as a header. Keys: https://minare.app/en/developers/dashboard"
      }
    },
    "responses": {
      "Error": {
        "description": "Error",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "error": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "docs": {
                      "type": "string"
                    },
                    "pricing": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}