Copy page

Copy page as Markdown for LLMs

View as Markdown

View this page as plain text


Open in ChatGPT

Ask ChatGPT about this page

Open in Claude

Ask Claude about this page

Moon Phase Calendar

Generate a monthly lunar overview with the Moon Phase Calendar API, returning day-by-day moon phases, illumination, and exact phase-change timestamps for the selected month and location.


Step by Step Moon Phase Calendar API Postman Testing Integration

View the Postman Testing Guide


Supported Language Codes

Support Article URL: https://support.divineapi.com/general-api-support/translating-a-natal-apis-into-a-different-language

CodeLanguage
enEnglish
hiHindi
ptPortuguese
frFrench
deGerman
jaJapanese
trTurkish
ruRussian
itItalian
esSpanish
nlDutch
plPolish

Guide: These languages are supported by this API. You can use them by passing lan in the request body with the value of the language.


API Endpoint

POST https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar

Returns Moon Phase Calendar in the response.


Headers

NameTypeDescription
Authorization*StringYour API Access TokenExample: Bearer {token}

Request Body

NameTypeDescription
api_key*StringYour API key
month*IntegerMonth for which you want the moon phase calendar, e.g., 04
year*IntegerYear for which you want the moon phase calendar, e.g., 2025
place*StringPlace name, e.g., New Delhi
lat*FloatLatitude, e.g., 28.7041
lon*FloatLongitude, e.g., 77.1025
tzone*FloatTimezone, e.g., 5.5 (Timezone List)
lanStringLanguage code as per the table above. Default is en.

200: OK Moon Phase Calendar Fetched Successfully

{
    "success": 1,
    "data": {
        "month_phases": [
            {
                "date": "2025-04-01",
                "phase_no": 2,
                "phase_name": "Waxing Crescent Moon",
                "phase_degree": 32.6735,
                "moon_age": 2,
                "illumination": 4.46
            },
            {
                "date": "2025-04-02",
                "phase_no": 2,
                "phase_name": "Waxing Crescent Moon",
                "phase_degree": 46.5447,
                "moon_age": 3,
                "illumination": 9.85
            },
            {
                "date": "2025-04-03",
                "phase_no": 2,
                "phase_name": "Waxing Crescent Moon",
                "phase_degree": 60.0906,
                "moon_age": 4,
                "illumination": 17.04
            },
            {
                "date": "2025-04-04",
                "phase_no": 2,
                "phase_name": "Waxing Crescent Moon",
                "phase_degree": 73.2433,
                "moon_age": 5,
                "illumination": 25.73
            },
            {
                "date": "2025-04-05",
                "phase_no": 3,
                "phase_name": "First Quarter Moon",
                "phase_degree": 85.9783,
                "moon_age": 6,
                "illumination": 35.5
            },
            {
                "date": "2025-04-06",
                "phase_no": 4,
                "phase_name": "Waxing Gibbous Moon",
                "phase_degree": 98.308,
                "moon_age": 7,
                "illumination": 45.94
            },
            {
                "date": "2025-04-07",
                "phase_no": 4,
                "phase_name": "Waxing Gibbous Moon",
                "phase_degree": 110.2699,
                "moon_age": 8,
                "illumination": 56.55
            },
            {
                "date": "2025-04-08",
                "phase_no": 4,
                "phase_name": "Waxing Gibbous Moon",
                "phase_degree": 121.9165,
                "moon_age": 9,
                "illumination": 66.87
            },
            {
                "date": "2025-04-09",
                "phase_no": 4,
                "phase_name": "Waxing Gibbous Moon",
                "phase_degree": 133.3055,
                "moon_age": 10,
                "illumination": 76.43
            },
            {
                "date": "2025-04-10",
                "phase_no": 4,
                "phase_name": "Waxing Gibbous Moon",
                "phase_degree": 144.4938,
                "moon_age": 11,
                "illumination": 84.8
            },
            {
                "date": "2025-04-11",
                "phase_no": 4,
                "phase_name": "Waxing Gibbous Moon",
                "phase_degree": 155.5335,
                "moon_age": 12,
                "illumination": 91.59
            },
            {
                "date": "2025-04-12",
                "phase_no": 4,
                "phase_name": "Waxing Gibbous Moon",
                "phase_degree": 166.4707,
                "moon_age": 13,
                "illumination": 96.52
            },
            {
                "date": "2025-04-13",
                "phase_no": 5,
                "phase_name": "Full Moon",
                "phase_degree": 177.3452,
                "moon_age": 14,
                "illumination": 100
            },
            {
                "date": "2025-04-14",
                "phase_no": 6,
                "phase_name": "Waning Gibbous Moon",
                "phase_degree": 188.1924,
                "moon_age": 15,
                "illumination": 99.94
            },
            {
                "date": "2025-04-15",
                "phase_no": 6,
                "phase_name": "Waning Gibbous Moon",
                "phase_degree": 199.0452,
                "moon_age": 16,
                "illumination": 98.28
            },
            {
                "date": "2025-04-16",
                "phase_no": 6,
                "phase_name": "Waning Gibbous Moon",
                "phase_degree": 209.937,
                "moon_age": 17,
                "illumination": 94.45
            },
            {
                "date": "2025-04-17",
                "phase_no": 6,
                "phase_name": "Waning Gibbous Moon",
                "phase_degree": 220.9043,
                "moon_age": 18,
                "illumination": 88.62
            },
            {
                "date": "2025-04-18",
                "phase_no": 6,
                "phase_name": "Waning Gibbous Moon",
                "phase_degree": 231.9892,
                "moon_age": 19,
                "illumination": 81.04
            },
            {
                "date": "2025-04-19",
                "phase_no": 6,
                "phase_name": "Waning Gibbous Moon",
                "phase_degree": 243.24,
                "moon_age": 20,
                "illumination": 72.06
            },
            {
                "date": "2025-04-20",
                "phase_no": 6,
                "phase_name": "Waning Gibbous Moon",
                "phase_degree": 254.7118,
                "moon_age": 21,
                "illumination": 62.09
            },
            {
                "date": "2025-04-21",
                "phase_no": 7,
                "phase_name": "Last Quarter Moon",
                "phase_degree": 266.4642,
                "moon_age": 22,
                "illumination": 51.57
            },
            {
                "date": "2025-04-22",
                "phase_no": 8,
                "phase_name": "Waning Crescent Moon",
                "phase_degree": 278.5569,
                "moon_age": 23,
                "illumination": 40.98
            },
            {
                "date": "2025-04-23",
                "phase_no": 8,
                "phase_name": "Waning Crescent Moon",
                "phase_degree": 291.043,
                "moon_age": 24,
                "illumination": 30.8
            },
            {
                "date": "2025-04-24",
                "phase_no": 8,
                "phase_name": "Waning Crescent Moon",
                "phase_degree": 303.9585,
                "moon_age": 25,
                "illumination": 21.48
            },
            {
                "date": "2025-04-25",
                "phase_no": 8,
                "phase_name": "Waning Crescent Moon",
                "phase_degree": 317.3106,
                "moon_age": 26,
                "illumination": 13.45
            },
            {
                "date": "2025-04-26",
                "phase_no": 8,
                "phase_name": "Waning Crescent Moon",
                "phase_degree": 331.0647,
                "moon_age": 27,
                "illumination": 7.07
            },
            {
                "date": "2025-04-27",
                "phase_no": 8,
                "phase_name": "Waning Crescent Moon",
                "phase_degree": 345.1364,
                "moon_age": 28,
                "illumination": 2.63
            },
            {
                "date": "2025-04-28",
                "phase_no": 1,
                "phase_name": "New Moon",
                "phase_degree": 359.3929,
                "moon_age": 0,
                "illumination": 0
            },
            {
                "date": "2025-04-29",
                "phase_no": 2,
                "phase_name": "Waxing Crescent Moon",
                "phase_degree": 13.6668,
                "moon_age": 1,
                "illumination": 1.13
            },
            {
                "date": "2025-04-30",
                "phase_no": 2,
                "phase_name": "Waxing Crescent Moon",
                "phase_degree": 27.7824,
                "moon_age": 2,
                "illumination": 4.46
            }
        ],
        "phases_change_list": [
            {
                "datetime": "2025-04-01 21:19:00",
                "phase_no": 2,
                "phase_name": "Waxing Crescent Moon",
                "phase_degree": 45
            },
            {
                "datetime": "2025-04-05 07:45:00",
                "phase_no": 3,
                "phase_name": "First Quarter Moon",
                "phase_degree": 90
            },
            {
                "datetime": "2025-04-09 03:37:00",
                "phase_no": 4,
                "phase_name": "Waxing Gibbous Moon",
                "phase_degree": 135
            },
            {
                "datetime": "2025-04-13 05:53:00",
                "phase_no": 5,
                "phase_name": "Full Moon",
                "phase_degree": 180
            },
            {
                "datetime": "2025-04-17 08:55:00",
                "phase_no": 6,
                "phase_name": "Waning Gibbous Moon",
                "phase_degree": 225
            },
            {
                "datetime": "2025-04-21 07:06:00",
                "phase_no": 7,
                "phase_name": "Last Quarter Moon",
                "phase_degree": 270
            },
            {
                "datetime": "2025-04-24 19:55:00",
                "phase_no": 8,
                "phase_name": "Waning Crescent Moon",
                "phase_degree": 315
            },
            {
                "datetime": "2025-04-28 01:02:00",
                "phase_no": 1,
                "phase_name": "New Moon",
                "phase_degree": 0
            }
        ]
    }
}

Example Integrations

Below are examples of how you might call this method via cURL, NodeJS, JavaScript (jQuery AJAX), and Python.


cURL

curl --location 'https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar' \
--header 'Authorization: Bearer {Your Auth Token}' \
--form 'api_key="{Your API Key}"' \
--form 'month="04"' \
--form 'year="2025"' \
--form 'place="New Delhi, India"' \
--form 'lat="28.7041"' \
--form 'lon="77.1025"' \
--form 'tzone="5.5"' \
--form 'lan="en"'

NodeJS

var request = require('request');

var options = {
  method: 'POST',
  url: 'https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar',
  headers: {
    'Authorization': 'Bearer {Your Auth Token}'
  },
  formData: {
    'api_key': '{Your API Key}',
    'month': '04',
    'year': '2025',
    'place': 'New Delhi, India',
    'lat': '28.7041',
    'lon': '77.1025',
    'tzone': '5.5',
    'lan': 'en'
  }
};

request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

JavaScript (jQuery AJAX)

var form = new FormData();
form.append("api_key", "{Your API Key}");
form.append("month", "04");
form.append("year", "2025");
form.append("place", "New Delhi, India");
form.append("lat", "28.7041");
form.append("lon", "77.1025");
form.append("tzone", "5.5");
form.append("lan", "en");

var settings = {
  url: "https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar",
  method: "POST",
  timeout: 0,
  headers: {
    "Authorization": "Bearer {Your Auth Token}"
  },
  processData: false,
  mimeType: "multipart/form-data",
  contentType: false,
  data: form
};

$.ajax(settings).done(function (response) {
  console.log(response);
});

Python

import requests

url = "https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar"

payload = {
    'api_key': '{Your API Key}',
    'month': '04',
    'year': '2025',
    'place': 'New Delhi, India',
    'lat': '28.7041',
    'lon': '77.1025',
    'tzone': '5.5',
    'lan': 'en'
}

headers = {
    'Authorization': 'Bearer {Your Auth Token}'
}

response = requests.post(url, headers=headers, data=payload)
print(response.text)
Example Code
curl -X POST "https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar" \
  -H "Authorization: Bearer {Your Auth Token}" \
  --form 'api_key="{Your API Key}"' \
  --form 'month="04"' \
  --form 'year="2025"' \
  --form 'place="New Delhi, India"' \
  --form 'lat="28.7041"' \
  --form 'lon="77.1025"' \
  --form 'tzone="5.5"' \
  --form 'lan="en"'
const FormData = require('form-data');
const axios = require('axios');

const form = new FormData();
form.append('api_key', '{Your API Key}');
form.append('month', '04');
form.append('year', '2025');
form.append('place', 'New Delhi, India');
form.append('lat', '28.7041');
form.append('lon', '77.1025');
form.append('tzone', '5.5');
form.append('lan', 'en');

const response = await axios.post('https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar', form, {
  headers: {
    ...form.getHeaders(),
    'Authorization': 'Bearer {Your Auth Token}',
  }
});

console.log(response.data);
import requests

url = "https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar"
headers = {
    "Authorization": "Bearer {Your Auth Token}",
}
payload = {
    "api_key": "{Your API Key}",
    "month": "04",
    "year": "2025",
    "place": "New Delhi, India",
    "lat": "28.7041",
    "lon": "77.1025",
    "tzone": "5.5",
    "lan": "en",
}

response = requests.post(url, headers=headers, data=payload)

print(response.json())
const formData = new FormData();
formData.append('api_key', '{Your API Key}');
formData.append('month', '04');
formData.append('year', '2025');
formData.append('place', 'New Delhi, India');
formData.append('lat', '28.7041');
formData.append('lon', '77.1025');
formData.append('tzone', '5.5');
formData.append('lan', 'en');

const response = await fetch('https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar', {
  method: 'POST',
  headers: {
      'Authorization': "Bearer {Your Auth Token}",
    },
  body: formData,
});

const data = await response.json();
console.log(data);
<?php

use GuzzleHttp\Client;

$client = new Client();

$response = $client->request('POST', 'https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar', [
    'headers' => [
        'Authorization' => 'Bearer {Your Auth Token}',
    ],
    'multipart' => [
        ['name' => 'api_key', 'contents' => '{Your API Key}'],
        ['name' => 'month', 'contents' => '04'],
        ['name' => 'year', 'contents' => '2025'],
        ['name' => 'place', 'contents' => 'New Delhi, India'],
        ['name' => 'lat', 'contents' => '28.7041'],
        ['name' => 'lon', 'contents' => '77.1025'],
        ['name' => 'tzone', 'contents' => '5.5'],
        ['name' => 'lan', 'contents' => 'en'],
    ],
]);

echo $response->getBody();
package main

import (
    "bytes"
    "fmt"
    "mime/multipart"
    "net/http"
    "io"
)

func main() {
    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)
    writer.WriteField("api_key", "{Your API Key}")
    writer.WriteField("month", "04")
    writer.WriteField("year", "2025")
    writer.WriteField("place", "New Delhi, India")
    writer.WriteField("lat", "28.7041")
    writer.WriteField("lon", "77.1025")
    writer.WriteField("tzone", "5.5")
    writer.WriteField("lan", "en")
    writer.Close()

    req, _ := http.NewRequest("POST", "https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar", body)
    req.Header.Set("Content-Type", writer.FormDataContentType())
    req.Header.Set("Authorization", "Bearer {Your Auth Token}")

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    body2, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body2))
}
import okhttp3.*;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        OkHttpClient client = new OkHttpClient();

        RequestBody body = new MultipartBody.Builder()
            .setType(MultipartBody.FORM)
            .addFormDataPart("api_key", "{Your API Key}")
            .addFormDataPart("month", "04")
            .addFormDataPart("year", "2025")
            .addFormDataPart("place", "New Delhi, India")
            .addFormDataPart("lat", "28.7041")
            .addFormDataPart("lon", "77.1025")
            .addFormDataPart("tzone", "5.5")
            .addFormDataPart("lan", "en")
            .build();

        Request request = new Request.Builder()
            .url("https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar")
            .post(body)
            .addHeader("Authorization", "Bearer {Your Auth Token}")
            .build();

        Response response = client.newCall(request).execute();
        System.out.println(response.body().string());
    }
}
import Foundation

let url = URL(string: "https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer {Your Auth Token}", forHTTPHeaderField: "Authorization")

let boundary = "Boundary-\(UUID().uuidString)"
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

var bodyData = Data()
bodyData.append("--\(boundary)\r\n".data(using: .utf8)!)
bodyData.append("Content-Disposition: form-data; name=\"api_key\"\r\n\r\n".data(using: .utf8)!)
bodyData.append("{Your API Key}\r\n".data(using: .utf8)!)
bodyData.append("--\(boundary)\r\n".data(using: .utf8)!)
bodyData.append("Content-Disposition: form-data; name=\"month\"\r\n\r\n".data(using: .utf8)!)
bodyData.append("04\r\n".data(using: .utf8)!)
bodyData.append("--\(boundary)\r\n".data(using: .utf8)!)
bodyData.append("Content-Disposition: form-data; name=\"year\"\r\n\r\n".data(using: .utf8)!)
bodyData.append("2025\r\n".data(using: .utf8)!)
bodyData.append("--\(boundary)\r\n".data(using: .utf8)!)
bodyData.append("Content-Disposition: form-data; name=\"place\"\r\n\r\n".data(using: .utf8)!)
bodyData.append("New Delhi, India\r\n".data(using: .utf8)!)
bodyData.append("--\(boundary)\r\n".data(using: .utf8)!)
bodyData.append("Content-Disposition: form-data; name=\"lat\"\r\n\r\n".data(using: .utf8)!)
bodyData.append("28.7041\r\n".data(using: .utf8)!)
bodyData.append("--\(boundary)\r\n".data(using: .utf8)!)
bodyData.append("Content-Disposition: form-data; name=\"lon\"\r\n\r\n".data(using: .utf8)!)
bodyData.append("77.1025\r\n".data(using: .utf8)!)
bodyData.append("--\(boundary)\r\n".data(using: .utf8)!)
bodyData.append("Content-Disposition: form-data; name=\"tzone\"\r\n\r\n".data(using: .utf8)!)
bodyData.append("5.5\r\n".data(using: .utf8)!)
bodyData.append("--\(boundary)\r\n".data(using: .utf8)!)
bodyData.append("Content-Disposition: form-data; name=\"lan\"\r\n\r\n".data(using: .utf8)!)
bodyData.append("en\r\n".data(using: .utf8)!)
bodyData.append("--\(boundary)--\r\n".data(using: .utf8)!)
request.httpBody = bodyData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    if let data = data {
        print(String(data: data, encoding: .utf8) ?? "")
    }
}
task.resume()
import okhttp3.*

fun main() {
    val client = OkHttpClient()

    val body = MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .addFormDataPart("api_key", "{Your API Key}")
        .addFormDataPart("month", "04")
        .addFormDataPart("year", "2025")
        .addFormDataPart("place", "New Delhi, India")
        .addFormDataPart("lat", "28.7041")
        .addFormDataPart("lon", "77.1025")
        .addFormDataPart("tzone", "5.5")
        .addFormDataPart("lan", "en")
        .build()

    val request = Request.Builder()
        .url("https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar")
        .post(body!!)
        .addHeader("Authorization", "Bearer {Your Auth Token}")
        .build()

    client.newCall(request).execute().use { response ->
        println(response.body?.string())
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", "Bearer {Your Auth Token}");

        var content = new MultipartFormDataContent();
        content.Add(new StringContent("{Your API Key}"), "api_key");
        content.Add(new StringContent("04"), "month");
        content.Add(new StringContent("2025"), "year");
        content.Add(new StringContent("New Delhi, India"), "place");
        content.Add(new StringContent("28.7041"), "lat");
        content.Add(new StringContent("77.1025"), "lon");
        content.Add(new StringContent("5.5"), "tzone");
        content.Add(new StringContent("en"), "lan");

        var response = await client.PostAsync("https://astroapi-4.divineapi.com/western-api/v1/moon-phase-calendar", content);
        var result = await response.Content.ReadAsStringAsync();
        Console.WriteLine(result);
    }
}