AI builder'lar için prompt'lar
Builder kodu sizden hızlı yazar. Bilmediği iki şey var, ikisi de belirli bir API’ye özgü: anahtarın nereye konacağı ve tarayıcıdan gelen isteğin neden geçmediği. İkisi de saatlerce hata ayıklamaya mal olur ve ikisi de prompt’taki tek bir paragrafla çözülür.
Aşağıda önce bu paragraf, ardından yedi tarif var.
Her tariften önce eklenmesi gereken kural
Section titled “Her tariften önce eklenmesi gereken kural”Bu bloğu tarif metninden önce builder’a kopyalayın. Konu kod stili değil, bu olmadan çalışmayacak şeyler.
AstroWay API house rules. Apply these to every request you generate.
1. The API key is a server secret. Never put aw_live_* or aw_test_* into client code, into a VITE_* or NEXT_PUBLIC_* variable, or into a fetch that runs in the browser. Create a server route and call the API from there.2. The browser cannot call https://api.astroway.info/v1/* with that key. The one exception is a publishable pk_live_* key created for your app's origin: responses to that origin carry access-control-allow-origin, and the key works only from origins on its own list. Two prefixes answer any browser with no key: /v1/public/* returns JSON you can use, and /v1/embed/* returns a finished HTML page meant for an iframe, not for fetch.3. The auth header is exactly "X-Api-Key: <key>". Authorization: Bearer is rejected with 401, and so is an api_key query parameter.4. Send the birth time zone as an IANA name: "timezone": "Europe/Kyiv". Do not compute a UTC offset yourself. Kyiv in May 1990 was UTC+4, not the +3 it is today, and a wrong offset moves every house cusp.5. Every response is {"ok": true, "data": {...}} or {"ok": false, "error": {"code": "...", "message": "..."}}. Read data on success and show error.message to the user on failure. Do not assume a bare object.6. Planet positions arrive as ecliptic longitude in degrees, with no sign name. Derive it: SIGNS[Math.floor(longitude / 30)] where SIGNS runs Aries, Taurus, Gemini, Cancer, Leo, Virgo, Libra, Scorpio, Sagittarius, Capricorn, Aquarius, Pisces. Degrees inside the sign are longitude % 30.7. Responses carry X-Credits-Used and X-Credits-Remaining. Log both on the server so the cost of a feature is visible before the bill is.8. Ask for the fields you will render. Every endpoint takes ?fields= as a comma-separated list of dotted paths and ?precision= as decimal places: POST /v1/chart?fields=planets.name,planets.longitude,houses.cusp&precision=2 answers in 559 bytes where the full response is 32,410. Same credits, and the tokens are yours to pay either way.9. Get a free key at https://api.astroway.info/dashboard/sign-up and use an aw_test_* sandbox key while building: it spends no credits.1. Çarklı doğum haritası
Section titled “1. Çarklı doğum haritası”Kullanıcının tek bir eylemine iki yanıt: harita verileri ve hazır bir SVG.
| Endpoint | Kredi |
|---|---|
/v1/chart | 20 |
/v1/render/wheel-western | 10 |
Build a single-page app: a birth data form (date, time, city with latitude andlongitude, IANA time zone) that renders a natal chart.
Server route POST /api/chart does two calls to AstroWay, in parallel: POST https://api.astroway.info/v1/chart POST https://api.astroway.info/v1/render/wheel-westernBoth take the same body: { "date": "1990-05-15", "time": "14:30:00", "timezone": "Europe/Kyiv", "latitude": 50.45, "longitude": 30.52 }Both need the X-Api-Key header.
/v1/chart returns data.planets (array with name, longitude, isRetrograde),data.houses.cusps (array of 12 longitudes) and data.aspects (array withplanet1, planet2 and a type object carrying name, symbol and color)./v1/render/wheel-western returns data.svg as a string.
The page shows the SVG at the top, then a table of planets with sign anddegree derived from longitude, then the aspect list using type.symbol andtype.color. Mark retrograde planets with an R.
Do not call AstroWay from the browser. The page calls /api/chart only.Üretimden sonra kontrol edin: SVG <img src> içine değil, işaretleme (markup) olarak eklenmiş olmalı; saat HH:mm:ss biçiminde bir string olarak gönderilmeli; anahtar bundle’a sızmamış olmalı (derlenmiş dosyalarda aw_ araması hiçbir sonuç vermemeli).
2. İki haritanın uyumu
Section titled “2. İki haritanın uyumu”Açıklama metni olmadan tek bir sayı ve bileşenleri. /v1/synastry/attraction-score, çift başına 50 kredi.
Build a compatibility page: two birth-data forms side by side, one button.
Server route POST /api/compat calls POST https://api.astroway.info/v1/synastry/attraction-scorewith body { "chart1": {...}, "chart2": {...} }, where each chart is { "date", "time", "timezone", "latitude", "longitude" }.
The response has data.score (a number), data.components (the parts that madeit) and data.notes. Render score as a large number with a progress ring, thencomponents as labelled bars, then notes as a list.
Never show the score without the components: a single number with no reasonbehind it is the thing users distrust.3. Günlük burç yorumu, hiç anahtar olmadan
Section titled “3. Günlük burç yorumu, hiç anahtar olmadan”Sunucu route’unun gerekmediği tek tarif: bu endpoint tarayıcıya yanıt verir ve kredi harcamaz.
Add a daily horoscope block to the page. Call this directly from the browser,no key and no server route needed:
GET https://api.astroway.info/v1/public/horoscope/daily?sign=leo&lang=en
Response: data.sign, data.date, data.period, data.horoscope (the text),data.disclaimer and data.language. Render a sign picker with the twelve signs,remember the choice in localStorage, and always show data.disclaimer under thetext.
The first request for a date that has not been generated yet can take a while,so show a skeleton, not a spinner that looks stuck.4. Human Design
Section titled “4. Human Design”Tip, strateji, otorite, profil, merkezler ve kanallar tek bir /v1/human-design çağrısıyla, 50 kredi.
Build a Human Design page: birth data form, then the chart summary.
Server route POST /api/hd calls POST https://api.astroway.info/v1/human-designwith { "date", "time", "timezone", "latitude", "longitude" }.
The response has data.type, data.strategy, data.notSelfTheme, data.authority,data.profile, data.definition, data.cross, data.centers, and the activationarrays data.personalityActivations and data.designActivations.
Lay it out as: type and strategy as the headline, authority and profile as twocards, centers as a list with defined ones filled and undefined ones outlined,activations in a collapsible table. Birth time matters here more than anywhereelse, so refuse to submit without it and say why.5. Kullanıcının markasıyla PDF rapor
Section titled “5. Kullanıcının markasıyla PDF rapor”Ekran göstermek yerine rapor satanlar için. /v1/reports/natal, belge başına 5000 kredi, bağlantı 24 saat geçerli.
Build a report generator: birth data form plus a branding form (company name,report title, accent colour), and a Generate button.
Server route POST /api/report calls POST https://api.astroway.info/v1/reports/natalwith { "chart": { "date", "time", "timezone", "latitude", "longitude" }, "whitelabel": { "companyName": "...", "reportName": "...", "themeColor": "#7c3aed", "footerText": "..." } }
The response has data.url, data.page_count, data.byte_length anddata.expires_at. The URL is valid for 24 hours only, so the server mustdownload the PDF immediately and store it on your side, then hand the useryour own link. Never give the AstroWay URL to the end user.
Show page_count and a download button. One report costs 5000 credits: put aconfirmation step before the call, not after.On altı raporun tam kataloğu, her birinin içeriği ve sayfa sayısı: Reports API.
6. Aylık transit takvimi
Section titled “6. Aylık transit takvimi”Bir tarih aralığındaki olayların listesi; hem akış hem takvim bundan çıkar. /v1/transit-calendar, aralık başına 100 kredi.
Build a month view of transits.
Server route POST /api/transits calls POST https://api.astroway.info/v1/transit-calendarwith { "natal": { "date", "time", "timezone", "latitude", "longitude" }, "startDate": "2026-10-01", "endDate": "2026-10-31" }
The response has data.count and data.events, plus the echoed startDate,endDate and maxOrb. Render events on a month grid, one dot per day withevents, and a day panel listing that day's events.
One call covers the whole window, so fetch the month once and filter in theclient. Do not call the API per day: that is thirty-one calls and thirty-onetimes the credits for the same answer.7. Tarot açılımı
Section titled “7. Tarot açılımı”Günlük etkileşim eklemenin en ucuz yolu. /v1/tarot/rider-waite/draw/three-card, açılım başına 10 kredi, günlük kart içinse sıfır.
Add a three-card tarot spread.
Server route POST /api/tarot calls POST https://api.astroway.info/v1/tarot/rider-waite/draw/three-cardwith an optional { "seed": 7 }. The response has data.spread, data.seed anddata.drawn.
Pass a seed derived from the user id and today's date, so the same person getsthe same spread all day and a new one tomorrow. Without a seed every reloaddeals a new hand, which reads as a slot machine.
For a zero-cost daily card the browser can call GET https://api.astroway.info/v1/public/tarot/dailydirectly, no key.Sekiz builder, tek fark
Section titled “Sekiz builder, tek fark”Yukarıdaki tarifler herkes için aynı. Tek fark, sunucu route’unun nerede çalıştığı ve anahtarın nereye konduğu.
| Builder | Sunucu çağrısı nerede çalışır | Anahtar nereye konur |
|---|---|---|
| Lovable | Supabase’de edge function | Supabase projesinin Secrets bölümü |
| Bolt | server function | Bolt’taki Secrets paneli |
| v0 | Vercel Functions üzerinde Next.js route handler | Vercel’de Secret türünde environment variable |
| Replit | sıradan bir sunucu süreci | Replit Secrets, ve ayrıca bir kez daha Deployments’ta |
| Cursor, Claude Code, Devin Desktop, Copilot | kendi stack’inizdeki | git dışında .env artı hosting’inizin secret deposu |
Dört ayrı tuzak, her biri bir akşama mal olur.
- Lovable ve Bolt frontend’i Vite ile derler, Vite de
VITE_önekli her değişkeni tarayıcıya verir. Anahtar oraya geçici olarak bile konmaz: herkese dağıtılan bundle’a girer. - Bolt önizlemeyi bir WebContainer içinde gösterir, bu da orada kapatılamayan gerçek CORS’a sahip gerçek bir tarayıcıdır. Burada server function “daha iyi” seçenek değil, çağrının gerçekleşmesinin tek yoludur.
- v0,
NEXT_PUBLIC_*değerlerini derleme aşamasında bundle’a gömer. Değeri dashboard’da değiştirmek yetmez: yeni bir deploy olana kadar uygulama eski anahtarla çalışır. Anahtar rotasyonu, rotasyon artı yeniden derleme demektir. - Replit, çalışma alanı secret’larını ve Deployments secret’larını ayrı tutar. Editörde çalışan şey, anahtarı Deployments panelinde bir kez daha ekleyene kadar yayından sonra boş anahtarla çöker.
Tablonun son dört satırı platform değil, deponuzdaki ajanlardır ve her birinin kendi sandbox’ı için ayrı bir ağ izin listesi vardır. Ajan az önce yazdığı kodu denemek istediğinde, alan adı eklenene kadar api.astroway.info çağrısı engellenebilir. Bunlar için daha kısa bir yol da var: MCP sunucumuzu bağlayın, ajan API’yi sizin kodunuz olmadan kendisi çağırsın. Talimatlar Ajan kurulumu sayfasında.
Ajanınız MCP değil de function calling konuşuyorsa
Section titled “Ajanınız MCP değil de function calling konuşuyorsa”Hazır araç tanımlarını alın ve doğrudan modele verin. OpenAPI belgesinden üretilirler, dolayısıyla modelin doldurduğu şema, endpoint’in doğruladığı şemanın ta kendisidir.
curl "https://api.astroway.info/v1/agent/tools?format=openai&select=starter" \-H "X-Api-Key: aw_live_YOUR_KEY"format openai ve anthropic değerlerini alır, select ise kataloğu tüm araçlar yerine başlangıç setine daraltır.