- Docs
- Integrations
- Make (Integromat)
Make astrology automation with the HTTP module
Ship a daily horoscope email, a natal chart on form submit, or a tarot card to Slack every morning, on Make in about 15 minutes. No code.
The whole integration is one HTTP module and one saved key. After that, every one of the 261+ endpoints is the same module with a different URL and body. Make parses the JSON for you, so every field of a chart or a reading becomes a draggable item in the next module.
The call that proves it
Run this in a terminal first. A 200 here means the key is good, so anything that breaks afterwards is scenario wiring.
curl "https://roxyapi.com/api/v2/astrology/horoscope/aries/daily" \
-H "X-API-Key: $ROXY_API_KEY"
No key yet? One key covers every domain and checkout is instant: pricing.
Now the same call as a module. Make stores the key in a keychain, so it never sits in the scenario itself and never travels in an export.
- In your scenario click +, search HTTP, and pick the HTTP app. Choose Version 4 if the version dropdown appears, since Version 3 is the legacy app with a different layout.
- Choose Make a request.
- Authentication type
API key. - Click Credentials, or Add next to Choose a key. Name
RoxyAPI key. Key paste your key from your account. API key placementIn the header. API key parameter nameX-API-Key. Click Create. - URL
https://roxyapi.com/api/v2/astrology/horoscope/aries/daily. MethodGET. - Parse response
Yes. - Run the module on its own and read the output.
You get clean JSON with no wrapper: sign, date, overview, love, career, health, finance, advice, column, events, luckyNumber, luckyColor, compatibleSigns, activeTransits, moonSign, moonPhase, energyRating. Every one of those is now draggable into any Gmail, Slack, Google Docs or Airtable field downstream.
Leave the Headers section empty
The HTTP module has its own Credentials field for authentication, and the Make docs are explicit that the key belongs there rather than in Headers. A key typed into Headers is stored in the scenario, so it travels in every export and blueprint you share. Reuse the keychain instead and the export carries only a reference. Edit or rotate it later from Keys in the left sidebar, and every module using it follows.
Send birth data with a POST
Charts, panchang, dasha, compatibility and synastry all take a birth moment.
- Method
POST. - URL
https://roxyapi.com/api/v2/astrology/natal-chart. - Body content type
application/JSON. - Body input method
Data structure, then map each field. Make escapes JSON reserved characters for you, which matters the moment a value comes from free-text user input. PickJSON stringonly if you want to paste the raw body yourself. - The five required fields, whichever input method you picked:
{ "date": "{{1.birth_date}}", "time": "{{1.birth_time}}", "latitude": {{1.latitude}}, "longitude": {{1.longitude}}, "timezone": "{{1.timezone}}" }
date is YYYY-MM-DD and time is HH:MM:SS. Optional houseSystem (placidus by default) and nodeType (true by default) sit alongside them.
curl -X POST "https://roxyapi.com/api/v2/astrology/natal-chart" \
-H "X-API-Key: $ROXY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"date": "1990-05-12",
"time": "14:30:00",
"latitude": 40.7128,
"longitude": -74.0060,
"timezone": "America/New_York"
}'
For reference if you later port a scenario into a Make Custom App or a plain script:
import { createRoxy } from '@roxyapi/sdk';
const roxy = createRoxy(process.env.ROXY_API_KEY!);
const { data } = await roxy.astrology.generateNatalChart({
body: {
date: '1990-05-12',
time: '14:30:00',
latitude: 40.7128,
longitude: -74.0060,
timezone: 'America/New_York',
},
});
Resolve the city first, never ask for coordinates
Nobody knows their birth latitude. Put one more HTTP module on GET https://roxyapi.com/api/v2/location/search?q=berlin ahead of the chart module and read latitude, longitude and timezone off the first entry in the cities array. The timezone comes back as an IANA name, which is what you want: the server resolves it to the right offset for the birth date, so a summer birth and a winter birth are both correct. A decimal offset such as 5.5 is accepted but knows nothing about daylight saving.
The planets field is an array, so Make exposes it as a repeatable collection. Use an Iterator to loop over it, or pull one out inline:
get(map(2.planets; sign; name; Sun); 1)
Ship a daily horoscope email
Two modules, with a daily scenario schedule.
- Add HTTP → Make a request on
https://roxyapi.com/api/v2/astrology/horoscope/aries/dailywith theRoxyAPI keykeychain and Parse response Yes. - Add Gmail → Send an email, subject
Your daily horoscope, and mapoverview,love, andcareerfrom the HTTP output into the body. Use the module picker so the references match your scenario. - Open Schedule settings from the scenario toolbar, choose Daily, and set 08:00. Scheduling is a scenario setting, not a separate module. Follow the Make scheduling guide for the current controls.
Run once before activation and inspect both the API bundle and the delivered message. The same reading fields can feed a Slack channel message or a Telegram bot message instead of email. Confirm the intended recipients and delivery timezone, then activate the scenario.
For all twelve signs, add an Iterator over the sign list and a Sleep between iterations rather than twelve simultaneous calls.
Add ?lang= to any URL for one of ten languages (en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant). Machine values such as sign stay English; the prose translates.
Cache what does not change
Make does not cache HTTP responses, and a horoscope is the same all day for one sign. Use a Data store, which is built in:
- Create a data store with a
sign,dateand payload field. - Data store, Get a record keyed
horoscope_aries_2026-04-13. - A Router with two routes: cache hit goes straight to the email, cache miss calls HTTP then Data store, Add/Replace a Record.
One fetch per sign per day, whatever the traffic. The caching guide lists how long each kind of result stays valid.
Gotchas
The bundle picker shows nothing after the call
Parse response is off, so the output is one raw string. Set it to Yes and run the module once; every field becomes mappable from then on.
Free text breaks my JSON body
Use Body input method Data structure rather than JSON string. Make escapes reserved characters in the values for you; a hand-written JSON string does not.
I get a 400 and cannot tell which field is wrong
A 400 uses { error, code, doc_url }; inspect the documented response rather than assuming a separate issues[] array. Retry only temporary 429 limits and 5xx, never a 400.
429 halfway through an Iterator
Read the response code: rate_limit_per_minute means the short-term request limit, while rate_limit_exceeded means the monthly allowance. Follow Retry-After for a temporary limit; sleeping does not replenish an exhausted monthly allowance. Cache repeated reads and check the error codes before choosing whether to retry or change the plan.
The HTTP module looks nothing like this page
You are on HTTP (legacy), Version 3, which has separate per-auth modules and no Credentials field. Add the module again and choose Version 4.
Pick the next endpoint
- Domain guides, for which endpoints to call and in what order: Western Astrology, Vedic Astrology, KP Astrology, Human Design, Forecast, Chinese Astrology, Feng Shui, Biorhythm, Tarot, Numerology, I-Ching, Dreams, Crystals, Angel Numbers, Ayurveda, Kabbalah, Vastu, Mesoamerican Astrology.
- Common in scenarios:
GET /astrology/horoscope/{sign}/daily,GET /astrology/horoscope/{sign}/weekly,POST /astrology/natal-chart,POST /astrology/compatibility-score,POST /vedic-astrology/birth-chart,POST /tarot/spreads/three-card,POST /numerology/life-path,POST /biorhythm/daily. - n8n and Zapier run the same patterns on adjacent platforms.
- Want the model to pick the endpoint instead of you? Remote MCP exposes 258+ tools to an AI agent, and the AI chatbot tutorial builds one end to end.
FAQ
Can Make call an astrology API without any code?
Yes. One HTTP module, one keychain, and a URL is the whole setup. Set Authentication type to API key, place the key in the header under the name X-API-Key, turn Parse response on, and every field of the result becomes draggable in later modules. One key reaches all 18 domains.
Where do I put the API key in a Make HTTP module?
In Credentials, as an API key keychain with placement In the header and parameter name X-API-Key. Not in the Headers section: a key typed there is stored inside the scenario and travels in every blueprint export. The keychain is edited later from Keys in the left sidebar, and every module that uses it picks up the change.
How do I send birth date, time and place to a chart endpoint from Make?
Set the method to POST, Body content type to application/JSON, and Body input method to Data structure, then map date, time, latitude, longitude and timezone. Resolve the city with GET /location/search?q={city} in a module before it, so the person types a place name and never a coordinate.
How do I stop a Make scenario from burning through my request quota?
Cache. A daily horoscope is identical all day for one sign, so store the response in a Make data store keyed by sign and date, and use a Router to serve from the store on a hit. That turns any amount of traffic into one call per sign per day.
Does the free Make plan work with RoxyAPI?
Yes. The HTTP app, data stores, Iterator, Router and Sleep are all standard modules. You need a RoxyAPI key, and a single key covers every domain, so no part of the wiring depends on a paid Make tier.