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

The Moon Phase Calendar API returns a day-by-day lunar phase breakdown for a given month and location, along with exact timestamps when the Moon changes from one major phase to another. This is useful for astrology dashboards, planners, and lunar-cycle-based guidance.


Step by Step Moon Phase Calendar API Postman Testing Integration

https://support.divineapi.com/western-astrology-apis/testing-western-api-moon-phase-calendar-api-using-postman


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 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 response.


Headers

NameTypeDescription
Authorization*StringYour API Access Token, e.g. Bearer {token}

Request Body

NameTypeDescription
api_key*StringYour API key
month*IntegerMonth for which to fetch the calendar, e.g. 04
year*IntegerYear for which to fetch the 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 (see Timezone List)
lanStringLanguage code, default: en
node_typeStringmeannode or truenode (defult: meannode)

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 Code Implementations

Below are example implementations in various programming environments.


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="05"' \
--form 'year="2023"' \
--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': '05',
    'year': '2023',
    'gender': 'male',
    'place': 'New Delhi, India',
    'lat': '28.7041',
    'lon': '77.1025',
    'tzone': '5.5'
  }
};
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", "05");
form.append("year", "2023");
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}',
'full_name': 'Rahul Kumar',
'month': '05',
'year': '2023',
'place': 'New Delhi, India',
'lat': '28.7041',
'lon': '77.1025',
'tzone': '5.5',
'lan': 'en'}

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

response = requests.request("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="05"' \
  --form 'year="2023"' \
  --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', '05');
form.append('year', '2023');
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": "05",
    "year": "2023",
    "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', '05');
formData.append('year', '2023');
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' => '05'],
        ['name' => 'year', 'contents' => '2023'],
        ['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", "05")
    writer.WriteField("year", "2023")
    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", "05")
            .addFormDataPart("year", "2023")
            .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("05\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("2023\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", "05")
        .addFormDataPart("year", "2023")
        .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("05"), "month");
        content.Add(new StringContent("2023"), "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);
    }
}