/v1/conversations/:idConversations API
Fetch a single conversation's messages.
About the engine
Part of the AI Astrologer engine
A conversational layer over the astrology engine. Every response is anchored in a deterministic chart context - not a generic chatbot - and gated by a defense-in-depth safety layer that intercepts medical, financial, and self-harm prompts. Multi-turn memory keyed on caller-owned conversation_id; tone + confidence labels; a structured `practices` array on every reply. Streaming variant available for token-by-token UI.
Request
Try it from the command line
# 'id' is a conversation_id from GET /v1/conversations.
curl -X GET 'https://api.astronode.dev/v1/conversations/demo-conv-01' \
-H 'Authorization: Bearer aie_test_REPLACE_WITH_YOUR_API_KEY' \
-H 'Accept: application/json'Every AstroNode endpoint needs a bearer token from your dashboard. Test keys (aie_test_*) work on the free tier - 1,000 requests / month, no card.
Request schema
Fields GET /v1/conversations/:id accepts
Path parameters
| Field | Type | Notes |
|---|---|---|
idrequired | string | len 1..120 |
Generated from the same OpenAPI 3.1 document the API validates against, so this table cannot drift from the endpoint without the build failing.
Response
What you get back
Every AstroNode response uses the same envelope: request_id, data (the endpoint-specific payload), interpretation (optional narrative block), and meta (engine version + computed_at timestamp). This endpoint documents 200, 401, 404, 429, 500.
Fields inside data
| Field | Type | Notes |
|---|---|---|
conversationrequired | object | - |
conversation.idrequired | string | - |
conversation.statusrequired | enum | ACTIVE | CLOSED | BLOCKED |
conversation.created_atrequired | string | - |
conversation.updated_atrequired | string | - |
conversation.message_countrequired | integer | 0..9007199254740991 |
conversation.last_user_message_previewrequired | object | - |
conversation.last_message_atrequired | object | - |
messagesrequired | object[] | - |
messages[].idrequired | string | - |
messages[].rolerequired | enum | USER | ASSISTANT |
messages[].contentrequired | string | - |
messages[].tonerequired | object | - |
messages[].confidencerequired | object | - |
messages[].practicesrequired | object[] | - |
messages[].practices[].planetrequired | enum | The graha the practice works with. Sun | Moon | Mars | Mercury | Jupiter | Venus | Saturn | Rahu |
messages[].practices[].kindrequired | enum | Practice type - for client-side rendering / filtering. The full classical spread: beej `mantra`, `weekday` observance, charitable `donation`, `color` therapy, `gemstone`, `metal`,… mantra | weekday | donation | color | gemstone | metal | lifestyle |
messages[].practices[].summaryrequired | string | One short sentence describing the practice. |
messages[].safety_flagrequired | object | - |
messages[].created_atrequired | string | - |
Engine highlights
What the AI Astrologer engine ships
- Bounded reasoning - every reply grounded in the user's deterministic chart context
- Multi-turn memory keyed on caller-owned `conversation_id`
- Defense-in-depth safety layer on input + output (medical / financial / self-harm)
- Structured `practices` array on every response (planet, kind, summary)
- Tone (supportive | reflective | grounded | calm | neutral) and confidence (low | moderate | high) labels
- Optional `partner` block triggers compatibility-aware reasoning
- Strict JSON-schema response enforcement on Gemini + Groq + OpenAI providers
- Streaming variant for token-by-token UI
- Conversation history endpoints for resume + per-user transcripts
Ready to call GET /v1/conversations/:id?
Free tier covers 1,000 requests / month. Razorpay-billed, GST-compliant invoices when you upgrade.
Informational, not predictive. Not medical, legal, or financial advice.