Ship a daily horoscope email, a Life Path lookup on form submit, or a tarot card to Slack every morning, on Zapier in about 15 minutes. No code, and it works on the free plan.
There is no RoxyAPI app in the Zapier catalog, and you do not need one. Webhooks by Zapier calls any REST API from any Zap and is available on the Free plan, so one action reaches all 261+ endpoints. If you would rather the key never live inside the Zap at all, API by Zapier stores it in a connection instead. Both paths are below.
The call that proves it
Run this in a terminal first. A 200 here means the key is good, so anything that fails next is Zap wiring.
In the Headers section, key X-API-Key, value your key from your account.
Continue, then Test step.
The response is clean JSON with no wrapper, and every field is mappable in later steps:
json
{
"sign": "Aries",
"date": "2026-04-03",
"overview": "Mercury draws a trine to Jupiter today, drawing the running commentary into your twelfth house, where rest, retreat and the unfinished business of the mind take their turn...",
"love": "The Moon bargains from Libra, in the seventh house you keep partnerships and relationships in, where another person is party to the outcome and has to be counted, and the ask is the ground to feel solid before anything is risked on it...",
"career": "The Sun guards Aries, in your first house, where a person is read off how they carry themselves rather than off what they claim, and it wants one thing carried through to the end in the open...",
"health": "The Sun forms a semi-square to Uranus today, sending the part that wants to be seen through your first house of identity and self-expression, where the first impression gets made before anything has been explained...",
"finance": "The Moon enters Scorpio today, played out in your eighth house, the one for transformation and shared resources...",
"advice": "Mercury trines Jupiter today, at the level of the twelfth house you keep solitude and inner reflection in...",
"luckyNumber": 8,
"luckyColor": "Red",
"moonSign": "Libra",
"moonPhase": "Waning Gibbous Moon",
"energyRating": 6
}
For a dynamic sign, replace aries in the URL with a mapped field from the trigger.
Keep the key out of the Zap
Header values typed into a Webhooks action are stored in the Zap itself, so anyone with edit access can read them and they travel in a shared copy. API by Zapier exists for exactly this: the credentials live in a connection and are added to the request for you.
Go to the Apps page and click + Add connection.
Search for and select API by Zapier, then Add connection.
Authentication typeStatic Headers (API key).
HeadersX-API-Key: your_key, one header per line.
Domain filterroxyapi.com, so the connection cannot be pointed anywhere else.
Test URLhttps://roxyapi.com/api/v2/astrology/moon-phase/current, which returns 200 with a valid key.
Then add an action, pick API by Zapier, choose the API Request event and your connection, and fill in Method, URL and, for a POST, Body. Do not re-add the auth header on the step; the connection supplies it.
API by Zapier is in beta and is a premium app, so it needs a paid Zapier account. Webhooks by Zapier does not. Pick whichever matches the account you are on, and rename each API step in the editor so the flow is readable.
Send birth data with a POST
Charts, panchang, dasha, compatibility and synastry all take a birth moment.
Fill the Data section, one key on the left and the mapped trigger field on the right:
Key
Value
date
the birth date, YYYY-MM-DD
time
the birth time, HH:MM:SS
latitude
latitude as a number
longitude
longitude as a number
timezone
IANA zone, for example America/New_York
All five are required. Optional houseSystem (placidus by default) and nodeType (true by default) go in the same Data section.
POST /astrology/compatibility-score and POST /astrology/synastry each take a person1 and a person2 object rather than flat fields. Two ways to send that.
On a templated POST action, Zapier builds a child object from a double underscore in the key, so the Data section reads:
Key
Value
person1__date
first birth date
person1__time
first birth time
person1__latitude
first latitude
person1__longitude
first longitude
person1__timezone
first IANA zone
person2__date
second birth date
and so on for the rest of person2.
For anything deeper, switch Event to Custom Request:
No form respondent knows their birth latitude. Add a Webhooks by Zapier, GET step on https://roxyapi.com/api/v2/location/search?q=berlin before the chart step and map 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 correct offset for the birth date, so a summer birth and a winter birth are both right. A decimal offset such as 5.5 is accepted but knows nothing about daylight saving.
Ship a daily horoscope email
Three steps.
Schedule by Zapier trigger, daily at 08:00.
Webhooks by Zapier, GET on https://roxyapi.com/api/v2/astrology/horoscope/aries/daily with the X-API-Key header.
Email by Zapier, or a Mailchimp or Gmail action. Subject Your Aries horoscope for today, body built from overview, love, career, luckyNumber and luckyColor.
Other useful triggers for RoxyAPI Zaps: Webhooks by Zapier, Catch Hook for a form on another system, and the form connectors (Tally, Typeform, Google Forms, Jotform).
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
Zapier does not cache responses, and a horoscope is identical all day for one sign. Store it in Storage by Zapier keyed by sign and date, for example horoscope_aries_2026-04-13, and put a Filter by Zapier step in front of the webhook so a cache hit skips the call. For anything higher volume, Make and n8n have full data stores. The caching guide lists how long each kind of result stays valid.
Gotchas
Fields I never mapped are showing up in the request
The Data section was left blank, and Zapier then forwards every field from the previous step as the payload. Fill Data with only the keys the endpoint takes.
A nested body comes back as a 400
The Data section on a templated action is flat unless you use the double underscore convention, so person1__date builds the object and person1.date does not. For anything deeper than one level, switch to Custom Request and type the raw JSON.
Custom Request gets rejected
Custom Request does not parse or format anything, and it does not set a content type. Add Content-Type: application/json in Headers and validate the JSON before you paste it.
I get a 400 and cannot tell which field is wrong
A 400 carries issues[] listing every field problem at once, so read that array instead of guessing one field at a time. All errors come back as { error, code, doc_url }. Retry 429 with code rate_limit_per_minute and 503 with code compute_saturated after the Retry-After seconds. Retry 500 with code internal_error with exponential backoff. A request that fails on our side with a 5xx does not count against your monthly allowance, so retrying it is free. A 429 with code rate_limit_exceeded means the monthly allowance is used up: retrying cannot help before the reset, and Retry-After gives the seconds to it. Fix the request for any other 4xx, because it will fail the same way until it changes. Every official SDK already retries these for you, twice and honouring Retry-After, so a call made through an SDK needs no second retry loop.
My key is readable by anyone who can edit the Zap
Header values on a Webhooks action are stored in the Zap. Move to API by Zapier with a Static Headers connection and a domain filter, or rotate the key after sharing.
429 partway through a run
Read the response code: rate_limit_per_minute is the per-minute limit, so wait Retry-After seconds and retry; rate_limit_exceeded means the monthly allowance is used up. Add a Delay by Zapier step ahead of tight loops, cache in Storage, or move up a plan. See authentication for the quota headers on every response.
Can a Zap use the RoxyAPI Remote MCP servers?
No, and the direction is the thing to remember: Zapier MCP publishes Zapier actions to an outside AI client. It does not let a Zap consume a third party Remote MCP server. Inside a Zap, use the Webhooks or API by Zapier path above. For the agent side, n8n connects to a Remote MCP server directly.
The response was truncated
Webhooks by Zapier caps an action payload at 5 MB. A full Vedic birth chart is well inside that, but if you assemble several results into one step, split them.
Make and n8n run the same patterns and both have real data stores.
The AI chatbot tutorial covers the conversational path instead of a scheduled Zap.
FAQ
Do I need a paid Zapier plan to call an astrology API?
No. Webhooks by Zapier is available on the Free plan, so a GET or POST action reaches every RoxyAPI endpoint with no upgrade. A paid plan is only needed for API by Zapier, which is the premium app that stores your key in a connection instead of in the Zap.
How do I add an API key header in Zapier?
On a Webhooks by Zapier action, fill the Headers section with the key X-API-Key and your key as the value. To keep the key out of the Zap itself, create an API by Zapier connection with Authentication type Static Headers (API key), a header line of X-API-Key: your_key, and a domain filter of roxyapi.com.
Why does my Zapier POST to a compatibility endpoint fail?
Because the body is nested. Compatibility and synastry take a person1 and a person2 object, and the Data section is flat unless you use Zapier double underscore convention: write person1__date, person1__time and so on, and Zapier builds the object for you. For anything deeper, switch the event to Custom Request, type the raw JSON, and add Content-Type: application/json to Headers.
Can I use RoxyAPI Remote MCP inside a Zap?
No. Zapier MCP works the other way round, publishing Zapier actions to an outside AI client. Inside a Zap, call the REST endpoints through Webhooks by Zapier or API by Zapier. If you want an automation platform whose agent connects to Remote MCP directly, n8n does that.
How do I stop a Zap from burning through my request quota?
Cache. A daily horoscope is identical all day for one sign, so write it to Storage by Zapier keyed by sign and date and put a Filter step ahead of the webhook so a cache hit skips the call. That turns any amount of traffic into one call per sign per day.
R
RosieYour AI guide to RoxyAPI
R
Hi, I am Rosie, your guide to the RoxyAPI insight tools.
Ask me to read your birth chart, pull a card, or map your numbers, and I will interpret what it means for you. Unlike most AIs, I never make the numbers up: every reading runs on real, verified calculations. Curious about the API, pricing, or docs instead? Ask me that too.