openapi: 3.2.0 info: title: Roxy Ayurveda API version: 2.0.0 description: '# RoxyAPI: the Spiritual OS layer for agentic AI > **Base URL:** `https://roxyapi.com/api/v2`.' x-error-codes: - code: validation_error status: 400 meaning: A field is missing or invalid. The body lists every failing field at once in issues, each with its path and the expected shape. - code: bad_request status: 400 meaning: The request was rejected as a whole, for example a body that is not valid JSON or a date range that ends before it starts. - code: date_out_of_range status: 400 meaning: A date lies outside the span the planetary positions are served for. The error names the supported dates. - code: api_key_required status: 401 meaning: No API key was sent. - code: invalid_api_key status: 401 meaning: The key sent is malformed or cannot be verified. - code: api_key_revoked status: 401 meaning: The key was valid once and has since been revoked from the account page. - code: subscription_not_found status: 401 meaning: The key verifies, but the subscription behind it no longer exists. - code: subscription_inactive status: 401 meaning: The subscription behind the key is cancelled, expired or suspended, or a trial is past its end date. - code: publishable_key_not_allowed_on_mcp status: 401 meaning: A publishable key was used on a Remote MCP server, which takes a secret key. - code: invalid_client_ip status: 401 meaning: A keyless request could not be attributed to a caller. - code: unauthorized status: 401 meaning: Authentication failed with no more specific reason to give. - code: forbidden status: 403 meaning: The key is valid, but this request is not permitted. - code: origin_required status: 403 meaning: A publishable key with an origin allowlist was used with no Origin header, as from a server or a native app. - code: origin_not_allowed status: 403 meaning: The calling site is not on the origin allowlist of this publishable key. - code: not_found status: 404 meaning: Nothing is served at this path, or the identifier in it does not exist. A path miss adds suggestions, the closest real endpoints. - code: method_not_allowed status: 405 meaning: The path exists for a different HTTP method. The body lists the accepted methods in allow, as does the Allow header. - code: conflict status: 409 meaning: The request cannot be applied in the current state. - code: gone status: 410 meaning: The path was removed permanently. - code: payload_too_large status: 413 meaning: The request body is larger than the API accepts. - code: unsupported_media_type status: 415 meaning: 'A request with a body was sent without Content-Type: application/json.' - code: unprocessable_entity status: 422 meaning: Every field is valid, but the combination cannot be computed. - code: rate_limit_exceeded status: 429 meaning: The monthly request allowance is used up. Retry-After gives the seconds to the reset. - code: rate_limit_per_minute status: 429 meaning: The per-minute limit of the plan was reached. Retry-After gives the seconds to the next minute, and the monthly allowance is not charged. - code: rate_limited status: 429 meaning: A rate limit was reached, reported without the plan detail. - code: free_tier_exhausted status: 429 meaning: A keyless request has used up its trial allowance. - code: internal_error status: 500 meaning: The request failed inside our service. Retry with exponential backoff. - code: compute_saturated status: 503 meaning: Heavy calculations are briefly at capacity. Send the same request again after Retry-After seconds. - code: error status: null meaning: A fallback for a status with no more specific code. The status and the error field carry the signal. contact: name: RoxyAPI Support url: https://roxyapi.com/contact license: name: Proprietary url: https://roxyapi.com/policy/terms servers: - url: https://roxyapi.com/api/v2 description: Production API v2 security: - apiKey: [] tags: - name: Ayurveda description: Ayurveda API for dosha profiles, the dinacharya daily routine and the ritucharya seasonal regimen, with a verse cited on every value. paths: /ayurveda/constitution: post: operationId: calculateAyurvedicConstitution tags: - Ayurveda summary: Ayurvedic constitution from a birth chart - Dosha profile API description: 'Read the Ayurvedic constitution from a sidereal birth chart and return the vata, pitta and kapha shares with a verse behind every factor. Three factors are scored, each one carrying a classical rule that it shows the native humour: the rising sign, the sign the Moon occupies, and the strongest graha by shadbala. The composite that blends them is a RoxyAPI convention rather than a classical one, so its version and its weights ship inside the response, and every response states that this is general wellness and cultural interest only.' security: - apiKey: [] parameters: - schema: type: string enum: - en - tr - de - es - hi - pt - fr - ru - zh-Hans - zh-Hant default: en example: en description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' required: false description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' name: lang in: query requestBody: content: application/json: schema: $ref: '#/components/schemas/AyurvedaConstitutionRequest' responses: '200': description: The constitution, its cited factors, and the graha table behind them. content: application/json: schema: type: object properties: frame: type: object properties: ayanamsa: type: string example: lahiri description: The sidereal frame the chart was cast in, echoing the request. Always English, so it is safe to compare against. ayanamsaDegrees: type: number example: 23.72820922463809 description: The frame offset in degrees at the birth instant, read once and used for both sign factors and for the strength ranking, so the three cannot come from frames a fraction of a degree apart. required: - ayanamsa - ayanamsaDegrees description: The sidereal frame this reading was cast in. lagnaSign: type: string example: leo description: The rising sign, lowercase and always English. It is the best attested of the three factors and carries the heaviest weight. moonSign: type: string example: scorpio description: The sign the Moon occupies, lowercase and always English. It is read through the same sign table as the rising sign, on the warrant of the verse that equates the two. factors: type: array items: type: object properties: id: type: string example: lagna-sign description: Which factor this is. One of lagna-sign, moon-sign or strongest-planet. Always English and stable, so it is safe to switch on. There are three and only three, because the two indicators often listed beside them, the lagna lord and the Sun, carry no classical rule that they show the native humour. input: type: string example: leo description: 'What this factor read: a sign id for the two sign factors, or the space-separated grahas that reached the strength cutoff for the third.' doshas: type: array items: type: string example: - pitta description: The humours this factor carries, as the Sanskrit identifiers vata, pitta and kapha. Never translated, so they stay safe to compare against. Where a factor carries more than one they are stored in the standing order and that order means nothing, because the two translations of the source order them differently and their sets are identical. weight: type: number example: 2 description: How much of the composite this factor is given. The weights are a RoxyAPI convention and no primary text states them, which is why every one of them is published here rather than kept private. source: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - id - input - doshas - weight - source description: One cited factor of the reading. description: The three scored factors, in the order they are weighted. composite: type: object properties: vata: type: number example: 20 description: Share of vata in whole percent. The three shares always sum to exactly 100, by largest remainder, so a caller can render them as a bar without normalising first. pitta: type: number example: 60 description: Share of pitta in whole percent. kapha: type: number example: 20 description: Share of kapha in whole percent. dominant: type: string example: pitta description: The humour holding the largest share. A Sanskrit identifier, never translated. secondary: type: string example: vata description: The humour holding the second largest share. Reported whether or not it reached the margin that would put it in the type label. type: type: string example: pitta description: 'The derived label: one humour when it leads clearly, two joined by a hyphen when the second is within the published margin, and sama when all three sit inside that band. Built from Sanskrit identifiers, so it stays the same string in every language.' convention: type: string example: roxyapi/v1 description: The version of the blending convention this composite was built under. It is ours and not classical, and it is versioned so a caller comparing two readings taken months apart can tell whether the rule moved. weighting: type: object properties: lagnaSign: type: number example: 2 description: Weight given to the rising sign factor. moonSign: type: number example: 1 description: Weight given to the Moon sign factor, lower than the rising sign because its classical warrant is the narrower of the two. strongestPlanet: type: number example: 2 description: Weight given to the strongest graha factor. strongPlanetThreshold: type: number example: 0.9 description: Fraction of the leading shadbala total at which a second graha also counts as strong. The verse licenses a blended result where several planets attain strength and gives no number for several, so this one is ours. dualTypeMargin: type: number example: 10 description: Percentage-point gap below which the second humour joins the type label. When all three sit inside it the label is sama. required: - lagnaSign - moonSign - strongestPlanet - strongPlanetThreshold - dualTypeMargin description: Every number behind the blend, published so a caller who disagrees can re-weigh the factors themselves. required: - vata - pitta - kapha - dominant - secondary - type - convention - weighting description: The blended reading. The factors are cited and this is not, which is why it carries a convention label. strengthRanking: type: array items: type: object properties: graha: type: string example: Mars description: Graha name, as a Vedic birth chart returns it. totalVirupas: type: number example: 525.53 description: Total shadbala in virupas, the six-fold strength measure. Higher is stronger, and the ranking below is taken from it. rank: type: number example: 1 description: Position in the ranking, 1 for the strongest of the seven. strong: type: boolean example: true description: Whether this graha reached the strength cutoff and therefore contributed to the reading. More than one true value is what makes the reading a blend. required: - graha - totalVirupas - rank - strong description: One graha of the strength ranking. description: The seven grahas ranked by shadbala, strongest first. Rahu and Ketu are not ranked, because shadbala is defined over the seven. planetDoshas: type: array items: type: object properties: graha: type: string example: Sun description: Graha name, matching the name a Vedic birth chart uses, so this table joins to a chart with nothing in between. sanskritName: type: string example: sūrya description: The graha name in Sanskrit, in the standard diacritic transliteration. doshas: type: array items: type: string example: - pitta description: The humours the verses give this graha. The Moon and Venus rows carry vata before kapha in both published translations, which is the row material in general circulation most often reverses. dhatu: type: string example: bone description: The bodily constituent this graha rules, in English. Saturn returns a deliberately neutral rendering, because the one Sanskrit word behind it is attested as sinew, tendon, muscle and nerve alike and the two published translations split on it. dhatuSanskrit: type: string example: asthi description: The same constituent in Sanskrit. Read this rather than the English wherever the two translations disagree. These seven are not the standard seven dhatus and three of them will not line up against such a list. doshaSource: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. dhatuSource: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - graha - sanskritName - doshas - dhatu - dhatuSanskrit - doshaSource - dhatuSource description: One graha of the informational seven-graha table. Rahu and Ketu are absent because the verses assign a humour to the seven grahas only, and nothing classical supplies one for the nodes. description: The graha to humour and graha to constituent table, as reference. It is informational and does not vary with the request. summary: type: string example: The chart reads pitta, and pitta carries the largest share of it at 60 percent. description: The reading in prose, composed from the factors rather than selected from stock text, and translated in place. conventions: type: object properties: signDoshaScheme: type: string example: satyacharya description: Which sign table the two sign factors were read through. Echoes the request. ayanamsa: type: string example: lahiri description: Which sidereal frame the chart was cast in. Echoes the request, and is repeated here beside the other conventions so one object answers what was chosen. required: - signDoshaScheme - ayanamsa description: The conventions this reading was produced under. meta: type: object properties: disclaimer: type: string example: For general wellness and cultural interest only. This is not medical advice, and it is unrelated to the diagnosis, cure, mitigation, prevention or treatment of any disease or condition. Consult a qualified professional. description: The scope of everything in this response, in the requested language. Present on every response from this API, and intended to be shown to the reader rather than stripped. required: - disclaimer description: Scope of the response. required: - frame - lagnaSign - moonSign - factors - composite - strengthRanking - planetDoshas - summary - conventions - meta '400': description: Validation error. `issues[]` lists every failed field. content: application/json: schema: type: object properties: error: type: string description: First issue summary. code: type: string enum: - validation_error doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. issues: type: array description: Every validation failure. Use this to rebuild a valid request. items: type: object properties: path: type: string description: Dot-separated field path, or "(root)" for top-level. message: type: string code: type: string description: Zod issue code (invalid_type, too_small, too_big, invalid_string, ...). expected: type: string description: Expected type for invalid_type. minimum: description: Minimum bound for too_small issues. oneOf: - type: number - type: string maximum: description: Maximum bound for too_big issues. oneOf: - type: number - type: string inclusive: type: boolean format: type: string description: Format name for string issues (regex, email, url, uuid). pattern: type: string description: Regex pattern when format is regex. required: - path - message required: - error - code - doc_url - issues '401': description: Invalid or missing API key content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '405': description: Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header. headers: Allow: description: Comma-separated list of allowed methods (RFC 9110). schema: type: string content: application/json: schema: type: object properties: error: type: string code: type: string enum: - method_not_allowed doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. allow: type: array items: type: string description: Allowed HTTP methods for this path. Mirrors the Allow response header. docs: type: string description: Link to the product page for this domain. required: - error - code - doc_url - allow '429': description: Monthly rate limit exceeded content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url /ayurveda/dinacharya: post: operationId: getDinacharyaSchedule tags: - Ayurveda summary: Dinacharya daily routine - Brahma muhurta and dosha clock API description: 'Compute the dinacharya daily routine for one date and one place: sunrise, sunset, the brahma muhurta window, and the six dosha periods of the day and the night. The default division cuts the actual day and the actual night into thirds, which is what the frame chapter states, and the modern clock grid is returned alongside it under its own label so a caller can show either. The brahma muhurta is a fixed window of 96 to 48 minutes before sunrise rather than a share of the night, which is the reading the classical commentary settles on.' security: - apiKey: [] parameters: - schema: type: string enum: - en - tr - de - es - hi - pt - fr - ru - zh-Hans - zh-Hant default: en example: en description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' required: false description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' name: lang in: query requestBody: content: application/json: schema: $ref: '#/components/schemas/AyurvedaDinacharyaRequest' responses: '200': description: The day divided, with the routine the chapter gives. content: application/json: schema: type: object properties: date: type: string example: '2026-06-21' description: The local date this schedule is for, echoing the request. sunrise: type: string example: '2026-06-21T03:43:12.000Z' description: Sunrise at this place on this date, as an ISO 8601 instant in UTC. The day begins here, which is why every block below is measured from it rather than from midnight. sunset: type: string example: '2026-06-21T20:21:30.000Z' description: Sunset at this place on this date, as an ISO 8601 instant in UTC. nextSunrise: type: string example: '2026-06-22T03:43:30.000Z' description: The following sunrise, as an ISO 8601 instant in UTC. It closes the night, so the three night blocks are cut between this and the sunset above. brahmaMuhurta: type: object properties: start: type: string example: '2026-06-21T02:07:12.000Z' description: When the window opens, 96 minutes before sunrise. end: type: string example: '2026-06-21T02:55:12.000Z' description: When the window closes, 48 minutes before sunrise. muhurtaMinutes: type: number example: 48 description: Length of one muhurta in minutes. Thirty of them make one day AND night together, not thirty in the daylight alone, and reading it the other way doubles every number here. muhurtasPerAhoratra: type: number example: 30 description: Muhurtas in one full day and night. Two texts state this and agree exactly on it while differing on the smaller units. source: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - start - end - muhurtaMinutes - muhurtasPerAhoratra - source description: The pre-dawn window, as a fixed offset from sunrise. It is not scaled to the length of the night, and calculators that scale it are following a reading the commentary rejects. doshaPeriods: type: array items: type: object properties: dosha: type: string example: kapha description: The humour this block belongs to, as the Sanskrit identifier. Never translated, so it stays safe to compare against and to use as a style key. start: type: string example: '2026-06-21T03:43:12.000Z' description: When the block opens, as an ISO 8601 instant in UTC. end: type: string example: '2026-06-21T09:05:44.000Z' description: When the block closes, as an ISO 8601 instant in UTC. span: type: string example: day description: Whether the block sits in the day or the night. Always English, so it stays safe to switch on. third: type: number example: 1 description: Which third of its half the block is, 1 for the first, 2 for the middle and 3 for the last. Present only on the sunrise-anchored division, because the clock grid divides no actual day and has no thirds to report. required: - dosha - start - end - span description: One of the six dosha periods. description: The six blocks under the convention that was requested, in chronological order. alternatePeriods: type: array items: type: object properties: dosha: type: string example: kapha description: The humour this block belongs to, as the Sanskrit identifier. Never translated, so it stays safe to compare against and to use as a style key. start: type: string example: '2026-06-21T03:43:12.000Z' description: When the block opens, as an ISO 8601 instant in UTC. end: type: string example: '2026-06-21T09:05:44.000Z' description: When the block closes, as an ISO 8601 instant in UTC. span: type: string example: day description: Whether the block sits in the day or the night. Always English, so it stays safe to switch on. third: type: number example: 1 description: Which third of its half the block is, 1 for the first, 2 for the middle and 3 for the last. Present only on the sunrise-anchored division, because the clock grid divides no actual day and has no thirds to report. required: - dosha - start - end - span description: One of the six dosha periods. description: The same six blocks under the other convention, so a caller can show one and reconcile against the other without a second call. routine: type: array items: type: object properties: order: type: number example: 1 description: Position in the sequence the chapter gives, starting at 1. id: type: string example: waking description: Stable identifier for the step. Always English and lowercase, so it is safe to compare against and to key a translation off. sanskritName: type: string example: brāhmamuhūrta description: The step under its Sanskrit name, in the standard diacritic transliteration. Data rather than a translation, so it is identical under every language. guidance: type: string example: One who is well rises in the brahma muhurta, the window that closes as sunrise approaches, for the protection of life. description: What the step is, written from the source and translated in place. The chapter also names specific substances and gives lists of who should abstain; neither is carried here. timing: type: string example: sunrise minus 96 minutes to sunrise minus 48 minutes description: Where the step sits in the sequence. Only the first step carries a real offset, because the chapter orders the day rather than scheduling it; the clock for this place is in the fields above. source: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - order - id - sanskritName - guidance - timing - source description: One step of the daily routine. description: The daily sequence the chapter gives, in its own order. summary: type: string example: The brahma muhurta opens 96 minutes before sunrise and closes 48 minutes before it, a fixed window rather than a share of the night. description: The day in prose, composed and translated in place. sources: type: array items: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. description: Every work behind this response, once each. conventions: type: object properties: doshaClock: type: string example: sunrise-anchored description: Which division the doshaPeriods array holds. Echoes the request; the other one is in alternatePeriods. required: - doshaClock description: The conventions this schedule was produced under. meta: type: object properties: disclaimer: type: string example: For general wellness and cultural interest only. This is not medical advice, and it is unrelated to the diagnosis, cure, mitigation, prevention or treatment of any disease or condition. Consult a qualified professional. description: The scope of everything in this response, in the requested language. Present on every response from this API, and intended to be shown to the reader rather than stripped. required: - disclaimer description: Scope of the response. required: - date - sunrise - sunset - nextSunrise - brahmaMuhurta - doshaPeriods - alternatePeriods - routine - summary - sources - conventions - meta '400': description: Validation error. `issues[]` lists every failed field. content: application/json: schema: type: object properties: error: type: string description: First issue summary. code: type: string enum: - validation_error doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. issues: type: array description: Every validation failure. Use this to rebuild a valid request. items: type: object properties: path: type: string description: Dot-separated field path, or "(root)" for top-level. message: type: string code: type: string description: Zod issue code (invalid_type, too_small, too_big, invalid_string, ...). expected: type: string description: Expected type for invalid_type. minimum: description: Minimum bound for too_small issues. oneOf: - type: number - type: string maximum: description: Maximum bound for too_big issues. oneOf: - type: number - type: string inclusive: type: boolean format: type: string description: Format name for string issues (regex, email, url, uuid). pattern: type: string description: Regex pattern when format is regex. required: - path - message required: - error - code - doc_url - issues '401': description: Invalid or missing API key content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '405': description: Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header. headers: Allow: description: Comma-separated list of allowed methods (RFC 9110). schema: type: string content: application/json: schema: type: object properties: error: type: string code: type: string enum: - method_not_allowed doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. allow: type: array items: type: string description: Allowed HTTP methods for this path. Mirrors the Allow response header. docs: type: string description: Link to the product page for this domain. required: - error - code - doc_url - allow '429': description: Monthly rate limit exceeded content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url /ayurveda/ritucharya: post: operationId: getRitucharya tags: - Ayurveda summary: Ayurveda seasonal regimen - Ritucharya and ritu resolution API description: Resolve the ritucharya, the Ayurvedic season, for a date from the real solar ingress instants and return the regimen the primary text gives for it. The response carries the season with its exact opening and closing instants, the half of the year the sun is in, where each dosha stands in the seasonal cycle, the taste that grows across the season, and the behaviour items the chapter states. Season boundaries are measured in the tropical zodiac by default, which is what published almanacs use, and the sidereal reading is available as a convention and runs about 24 days later. security: - apiKey: [] parameters: - schema: type: string enum: - en - tr - de - es - hi - pt - fr - ru - zh-Hans - zh-Hant default: en example: en description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' required: false description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' name: lang in: query requestBody: content: application/json: schema: $ref: '#/components/schemas/AyurvedaRitucharyaRequest' responses: '200': description: The season, its boundaries, and what the chapter states for it. content: application/json: schema: type: object properties: date: type: string example: '2026-03-01' description: The date this reading is for, echoing the request. ritu: type: object properties: id: type: string example: vasanta description: The season as a Sanskrit identifier, always English-safe and never translated. One of sisira, vasanta, grisma, varsa, sarad and hemanta, plus pravrt which only the alternate scheme carries. sanskritName: type: string example: vasanta description: The season in the standard diacritic transliteration. devanagari: type: string example: वसन्त description: The season in Devanagari. Data rather than a translation, so it is identical under every language. gloss: type: string example: spring description: What the season is called in the requested language. This is the gloss and it does translate; the identifier above does not. classicalRitu: type: string example: vasanta description: The default-scheme season the classical layer was read from. Equal to the id in the ordinary case, and different under the alternate scheme, whose own verse states no strength cycle, taste cycle or dosha cycle for its seasons. start: type: string example: '2026-02-18T15:51:27.000Z' description: When the season opened, as an ISO 8601 instant in UTC. This is the ingress into the first of its two solar months, computed rather than tabulated, so it is exact to the second. end: type: string example: '2026-04-20T01:39:12.000Z' description: When the season closes, as an ISO 8601 instant in UTC. It is the ingress that opens the next season, so two consecutive calls join without a gap. solarMonths: type: array items: type: object properties: index: type: number example: 11 description: Zero-based rasi index, 0 for Aries, so a caller can order the twelve without a name table. id: type: string example: pisces description: The rasi as the lowercase English sign id every other RoxyAPI domain uses. sanskritName: type: string example: Meena description: The solar month under the name a panchang prints for it. Data, identical in every language. required: - index - id - sanskritName description: One of the two solar months the season spans. description: The two solar months the season spans, in order. A solar month is the interval the sun spends inside one rasi, which is why every boundary above is an ingress instant. required: - id - sanskritName - devanagari - gloss - classicalRitu - start - end - solarMonths description: The season in force on this date. ayana: type: object properties: id: type: string example: uttarayana description: The half-year course of the sun, as a Sanskrit identifier. Never translated. It names what the sun is doing rather than what the weather is, so it is the same for every observer on the same day and is never rotated for the hemisphere. source: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - id - source description: Which course the sun is in. phase: type: object properties: id: type: string example: adana description: 'Whether the sun is taking or giving across this half of the year, as a Sanskrit identifier. Never translated, and deliberately so: the published translations render the two terms with four different English words between them, so an English value would not be stable enough to compare against.' tastes: type: array items: type: object properties: id: type: string example: kashaya description: The taste as a Sanskrit identifier. Never translated, so it stays safe to compare against and joins straight to the tastes catalogue. sanskritName: type: string example: kaṣāya description: The same taste in the standard diacritic transliteration. english: type: string example: astringent description: The taste in the requested language. This is the gloss and it does translate. required: - id - sanskritName - english description: One of the six tastes, referenced from the seasonal cycle. description: The three tastes that grow across this half of the year, in the order the verse gives them, one per season. This is the sequence the season taste below is one member of. source: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - id - tastes - source description: The taking or giving half of the year. strength: type: object properties: level: type: string example: moderate description: 'Bodily strength in this season: highest, moderate or lowest. Always English so it stays safe to switch on. The strongest pair is the cold season and the dewy season, which are adjacent in the cycle but sit at opposite ends of the two courses, and that wrap-around is the part a positional reading of the verse gets wrong.' source: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - level - source description: Where the season sits in the strength cycle. tasteIncreasing: type: object properties: id: type: string example: kashaya description: The taste as a Sanskrit identifier. Never translated, so it stays safe to compare against and joins straight to the tastes catalogue. sanskritName: type: string example: kaṣāya description: The same taste in the standard diacritic transliteration. english: type: string example: astringent description: The taste in the requested language. This is the gloss and it does translate. source: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - id - sanskritName - english - source description: 'The taste that grows IN NATURE across this season. It is not the taste to favour: the regimen for the same season is broadly the opposite, which is why this field is never named for a recommendation.' doshaCycle: type: array items: type: object properties: dosha: type: string example: kapha description: The humour, as a Sanskrit identifier. Never translated. state: type: string example: aggravated description: 'Where the humour stands: accumulating, aggravated or settling. Always English so it stays safe to switch on. The three are positions and qualities rather than complaints, which is what the definitions below say.' meaning: type: string example: Going out of its own channel, with its own marks showing. description: What the state is, in the requested language, defined by where the humour sits and how it behaves. note: type: string example: One public-domain translation of Charaka Sutrasthana 6.22 places the accumulation in hemanta instead. description: A recorded disagreement about this row, present only where one exists. required: - dosha - state - meaning description: One humour and where the season puts it. description: Which humours the season moves, and how. A season moves at most three of the nine slots and often fewer, so an empty entry for a humour means the cycle simply says nothing about it in this season. regimen: type: array items: type: object properties: id: type: string example: vasanta-activity description: Stable identifier for the item. Always English and lowercase, so it is safe to compare against. guidance: type: string example: Take up physical exercise, dry rubbing, mouth rinsing and frequent washing in comfortably warm water. description: 'The behaviour item, written from the source and translated in place. Behaviours, qualities and tastes only: the chapter also names specific substances and prescribes clinical procedures, and neither is carried here.' source: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - id - guidance - source description: One item of the seasonal regimen. description: What the chapter states for this season. Roughly half its verses leave no item here once substances and clinical procedures are set aside, and those verses are absent rather than padded. summary: type: string example: The solar months of Meena and Mesha fall in vasanta, spring. description: The season in prose, composed and translated in place. sources: type: array items: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. description: Every work behind this response, once each. conventions: type: object properties: ritucharyaScheme: type: string example: sutrasthana-6 description: Which six-season division was applied. Echoes the request. rituZodiac: type: string example: sayana description: Which zodiac the boundaries were measured in. Echoes the request, and the two answers can differ by about 24 days. hemisphere: type: string example: northern description: Which half of the world the season names are stated for. Echoes the request and is never inferred from a latitude. required: - ritucharyaScheme - rituZodiac - hemisphere description: The conventions this reading was produced under. meta: type: object properties: disclaimer: type: string example: For general wellness and cultural interest only. This is not medical advice, and it is unrelated to the diagnosis, cure, mitigation, prevention or treatment of any disease or condition. Consult a qualified professional. description: The scope of everything in this response, in the requested language. Present on every response from this API, and intended to be shown to the reader rather than stripped. required: - disclaimer description: Scope of the response. required: - date - ritu - ayana - phase - strength - tasteIncreasing - doshaCycle - regimen - summary - sources - conventions - meta '400': description: Validation error. `issues[]` lists every failed field. content: application/json: schema: type: object properties: error: type: string description: First issue summary. code: type: string enum: - validation_error doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. issues: type: array description: Every validation failure. Use this to rebuild a valid request. items: type: object properties: path: type: string description: Dot-separated field path, or "(root)" for top-level. message: type: string code: type: string description: Zod issue code (invalid_type, too_small, too_big, invalid_string, ...). expected: type: string description: Expected type for invalid_type. minimum: description: Minimum bound for too_small issues. oneOf: - type: number - type: string maximum: description: Maximum bound for too_big issues. oneOf: - type: number - type: string inclusive: type: boolean format: type: string description: Format name for string issues (regex, email, url, uuid). pattern: type: string description: Regex pattern when format is regex. required: - path - message required: - error - code - doc_url - issues '401': description: Invalid or missing API key content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '405': description: Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header. headers: Allow: description: Comma-separated list of allowed methods (RFC 9110). schema: type: string content: application/json: schema: type: object properties: error: type: string code: type: string enum: - method_not_allowed doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. allow: type: array items: type: string description: Allowed HTTP methods for this path. Mirrors the Allow response header. docs: type: string description: Link to the product page for this domain. required: - error - code - doc_url - allow '429': description: Monthly rate limit exceeded content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url /ayurveda/daily: get: operationId: getDailyAyurvedaReading tags: - Ayurveda summary: Daily Ayurveda reading - Dosha clock and brahma muhurta by location API description: 'Get one days Ayurveda reading for a place: sunrise, the brahma muhurta window, the six dosha periods cut from the actual day and night, and the season the date falls in with where each dosha stands in its yearly cycle. It composes the routine and the season routes for one location so a widget needs one call rather than two. The default conventions apply throughout and are echoed; call those two routes directly to choose a different season scheme, zodiac, hemisphere or dosha clock.' security: - apiKey: [] parameters: - schema: type: string enum: - en - tr - de - es - hi - pt - fr - ru - zh-Hans - zh-Hant default: en example: en description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' required: false description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' name: lang in: query - schema: type: string format: date example: '2026-06-21' description: Reading date in YYYY-MM-DD format. Past and future dates are both supported, for editorial scheduling and backfill. Defaults to the current day in the timezone parameter. required: false description: Reading date in YYYY-MM-DD format. Past and future dates are both supported, for editorial scheduling and backfill. Defaults to the current day in the timezone parameter. name: date in: query - schema: type: number minimum: -90 maximum: 90 example: 51.5074 description: Latitude in decimal degrees. It sets how long the day and the night actually are, which is what the dosha periods are cut from. required: true description: Latitude in decimal degrees. It sets how long the day and the night actually are, which is what the dosha periods are cut from. name: latitude in: query - schema: type: number minimum: -180 maximum: 180 example: -0.1278 description: Longitude in decimal degrees. It sets the clock time of sunrise at this place. required: true description: Longitude in decimal degrees. It sets the clock time of sunrise at this place. name: longitude in: query - schema: type: string example: Europe/London description: Selects which day counts as current when date is omitted, and which local day sunrise is computed for. Defaults to UTC, so the reading rolls over at 00:00 UTC. Accepts an IANA name (e.g. "Europe/London"), decimal hours (e.g. 5.5 for IST), or a fixed UTC offset (e.g. "-05:00"). required: false description: Selects which day counts as current when date is omitted, and which local day sunrise is computed for. Defaults to UTC, so the reading rolls over at 00:00 UTC. Accepts an IANA name (e.g. "Europe/London"), decimal hours (e.g. 5.5 for IST), or a fixed UTC offset (e.g. "-05:00"). name: timezone in: query responses: '200': description: The day, composed from the routine and the season. content: application/json: schema: type: object properties: date: type: string example: '2026-06-21' description: The date of this reading. Echoes the date requested, or the current day in the timezone parameter when it was omitted. sunrise: type: string example: '2026-06-21T03:43:12.000Z' description: Sunrise at this place, as an ISO 8601 instant in UTC. sunset: type: string example: '2026-06-21T20:21:30.000Z' description: Sunset at this place, as an ISO 8601 instant in UTC. brahmaMuhurta: type: object properties: start: type: string example: '2026-06-21T02:07:12.000Z' description: When the window opens, 96 minutes before sunrise. end: type: string example: '2026-06-21T02:55:12.000Z' description: When the window closes, 48 minutes before sunrise. required: - start - end description: The pre-dawn window as a fixed offset from sunrise, not a share of the night. doshaPeriods: type: array items: type: object properties: dosha: type: string example: kapha description: The humour this block belongs to, as a Sanskrit identifier. start: type: string example: '2026-06-21T03:43:12.000Z' description: When the block opens, as an ISO 8601 instant in UTC. end: type: string example: '2026-06-21T09:05:44.000Z' description: When the block closes, as an ISO 8601 instant in UTC. span: type: string example: day description: Whether the block sits in the day or the night. required: - dosha - start - end - span description: One of the six dosha periods. description: The six blocks, cut from the actual day and night at this place into thirds. ritu: type: object properties: id: type: string example: grisma description: The season as a Sanskrit identifier. Never translated. sanskritName: type: string example: grīṣma description: The season in the standard diacritic transliteration. gloss: type: string example: summer description: What the season is called in the requested language. start: type: string example: '2026-04-20T01:39:12.000Z' description: When the season opened, as an ISO 8601 instant in UTC. end: type: string example: '2026-06-21T14:24:36.000Z' description: When it closes, as an ISO 8601 instant in UTC. ayana: type: string example: uttarayana description: The half-year course of the sun, as a Sanskrit identifier. It names what the sun is doing, so it is the same for every observer on the same day. phase: type: string example: adana description: Whether the sun is taking or giving across this half of the year, as a Sanskrit identifier. strength: type: string example: lowest description: 'Bodily strength in this season: highest, moderate or lowest. Always English so it stays safe to switch on.' tasteIncreasing: type: string example: katu description: The taste that grows in nature across this season, as a Sanskrit identifier. It is what the season brings rather than what to favour in it. required: - id - sanskritName - gloss - start - end - ayana - phase - strength - tasteIncreasing description: The season this date falls in. doshaCycle: type: array items: type: object properties: dosha: type: string example: kapha description: The humour, as a Sanskrit identifier. state: type: string example: settling description: 'Where the season puts it: accumulating, aggravated or settling. Always English so it stays safe to switch on.' required: - dosha - state description: One humour and where the season puts it. description: Which humours this season moves, and how. A season moves at most three of the nine slots and often fewer. summary: type: string example: The day sits in grisma, and pitta holds the part of it this reading was taken in. description: The day in prose, composed and translated in place. sources: type: array items: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. description: Every work behind this response, once each. conventions: type: object properties: doshaClock: type: string example: sunrise-anchored description: How the six periods were cut. This route always uses the default; the routine route takes the choice. ritucharyaScheme: type: string example: sutrasthana-6 description: Which six-season division was applied. This route always uses the default; the season route takes the choice. rituZodiac: type: string example: sayana description: Which zodiac the season boundaries were measured in. This route always uses the default. hemisphere: type: string example: northern description: Which half of the world the season name is stated for. This route always uses the default and never infers it from the latitude. required: - doshaClock - ritucharyaScheme - rituZodiac - hemisphere description: The conventions this reading was produced under. All four are the defaults, stated rather than assumed. meta: type: object properties: disclaimer: type: string example: For general wellness and cultural interest only. This is not medical advice, and it is unrelated to the diagnosis, cure, mitigation, prevention or treatment of any disease or condition. Consult a qualified professional. description: The scope of everything in this response, in the requested language. Present on every response from this API, and intended to be shown to the reader rather than stripped. required: - disclaimer description: Scope of the response. required: - date - sunrise - sunset - brahmaMuhurta - doshaPeriods - ritu - doshaCycle - summary - sources - conventions - meta '400': description: Validation error. `issues[]` lists every failed field. content: application/json: schema: type: object properties: error: type: string description: First issue summary. code: type: string enum: - validation_error doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. issues: type: array description: Every validation failure. Use this to rebuild a valid request. items: type: object properties: path: type: string description: Dot-separated field path, or "(root)" for top-level. message: type: string code: type: string description: Zod issue code (invalid_type, too_small, too_big, invalid_string, ...). expected: type: string description: Expected type for invalid_type. minimum: description: Minimum bound for too_small issues. oneOf: - type: number - type: string maximum: description: Maximum bound for too_big issues. oneOf: - type: number - type: string inclusive: type: boolean format: type: string description: Format name for string issues (regex, email, url, uuid). pattern: type: string description: Regex pattern when format is regex. required: - path - message required: - error - code - doc_url - issues '401': description: Invalid or missing API key content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '405': description: Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header. headers: Allow: description: Comma-separated list of allowed methods (RFC 9110). schema: type: string content: application/json: schema: type: object properties: error: type: string code: type: string enum: - method_not_allowed doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. allow: type: array items: type: string description: Allowed HTTP methods for this path. Mirrors the Allow response header. docs: type: string description: Link to the product page for this domain. required: - error - code - doc_url - allow '429': description: Monthly rate limit exceeded content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url /ayurveda/doshas: get: operationId: listDoshas tags: - Ayurveda summary: List the three doshas - Dosha catalogue API description: Return vata, pitta and kapha with the qualities, seats and five sub-doshas each carries, and the three states the seasonal cycle moves them through. Every quality is one of the twenty gunas and every state is described as a position and a quality rather than as a complaint, which is what lets the catalogue join to the tastes and qualities endpoints without a lookup table in between. Each entry carries the verse it comes from, and the second primary text is recorded where it reads the list differently. security: - apiKey: [] parameters: - schema: type: string enum: - en - tr - de - es - hi - pt - fr - ru - zh-Hans - zh-Hant default: en example: en description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' required: false description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' name: lang in: query - schema: type: integer minimum: 1 maximum: 3 default: 3 example: 3 description: 'Maximum items to return per page. Range: 1-3, default 3.' required: false description: 'Maximum items to return per page. Range: 1-3, default 3.' name: limit in: query - schema: type: integer minimum: 0 default: 0 example: 0 description: Number of items to skip for pagination. Default 0. required: false description: Number of items to skip for pagination. Default 0. name: offset in: query responses: '200': description: The three doshas. content: application/json: schema: type: object properties: total: type: number example: 3 description: Total number of doshas, which is always three. limit: type: number example: 3 description: Maximum doshas returned in this page. offset: type: number example: 0 description: Number of doshas skipped before this page. doshas: type: array items: type: object properties: id: type: string example: vata description: 'The dosha as a Sanskrit identifier: vata, pitta or kapha. Never translated in any language, because a caller switches on it, and a translated dosha name is a different concept rather than the same one in another language.' sanskritName: type: string example: vāta description: The same name in the standard diacritic transliteration. devanagari: type: string example: वात description: The same name in Devanagari. Data, identical in every language. alsoCalled: type: array items: type: string example: - vāyu - anila - māruta - samīraṇa description: Other names the primary texts use for the same dosha. Data rather than translations, and useful when reading a verse that names one of them instead. element: type: string example: vayu, air description: The single mahabhuta the classical verses give this dosha. Classically each dosha gets one element, not a pair. modernElementPair: type: string example: air with ether description: The two-element pairing in general modern circulation. It carries no classical citation in this API, which is why it travels in its own field instead of inside the cited one. qualities: type: array items: type: string example: - ruksa, dry - laghu, light - sita, cold description: The qualities the frame chapter gives this dosha, each as its Sanskrit word and its gloss. The three sets overlap, so the twenty gunas are not partitioned three ways between them. qualityGunas: type: array items: type: string example: - ruksha - laghu - khara - sukshma - cala description: Identifiers from the twenty gunas for the qualities the guna verse names with the SAME Sanskrit word, so this joins straight to the qualities endpoint. Where the dosha chapter uses a synonym, or a word the guna verse does not carry, the entry is absent rather than mapped by resemblance. seats: type: array items: type: string example: - the colon - the hips - the thighs description: Where the dosha sits, in the requested language. specialSeat: type: string example: the colon description: The seat the chapter singles out above the others. seatsVariant: type: string example: Charaka Sutrasthana 20.8 names the bladder and the feet where this chapter names the ear and the organ of touch. description: How the second primary text reads the same list. The two are recorded side by side and never merged, because the special seat of pitta genuinely differs between them. functions: type: array items: type: string example: - upholds the structure and the working of the body - impels speech description: What the dosha does when it is even. For vata the text states this for the dosha as a whole; for the other two it states it only through the five sub-doshas, and those are what appear here. subDoshas: type: array items: type: object properties: id: type: string example: prana description: Stable identifier for the sub-dosha. Always English-safe and lowercase, and never translated, so it is safe to compare against. sanskritName: type: string example: prāṇa description: The same name in the standard diacritic transliteration. devanagari: type: string example: प्राण description: The same name in Devanagari. Data rather than a translation, so it is identical under every language. seat: type: string example: the head description: Where the sub-dosha sits, in the requested language. moves: type: string example: the chest and the throat description: Where the sub-dosha moves, where the chapter states one. Present on the five vatas and absent elsewhere, because the chapter gives a range of movement only for those. function: type: string example: upholds the intellect, the heart, the senses and the mind, and carries out spitting, sneezing, belching, the inward breath and the swallowing of food description: What the sub-dosha does, in the requested language. source: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - id - sanskritName - devanagari - seat - function - source description: One of the five sub-doshas. description: The five sub-doshas, each with its seat and its work. The five vata NAMES are carried by two texts; every seat and function of the fifteen rests on one chapter alone. states: type: object properties: balanced: type: string example: even, and staying within its own seat, with nothing disturbed description: The even state, described as a position and a quality rather than as an absence of complaints. accumulating: type: string example: increasing within its own seat, with an aversion to more of its own qualities and a wish for the opposite ones description: The first state of the seasonal cycle, described the same way. aggravated: type: string example: moving beyond its own seat, with dryness, lightness and movement conspicuous description: The second state of the seasonal cycle, described the same way. settlesWith: type: string example: unctuous, heavy, warm, smooth and stable qualities description: The qualities that bring the dosha back to even, which is the like-increases-like rule applied in reverse. source: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - balanced - accumulating - aggravated - settlesWith - source description: The three states, as positions and qualities. source: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - id - sanskritName - devanagari - alsoCalled - element - modernElementPair - qualities - qualityGunas - seats - specialSeat - seatsVariant - functions - subDoshas - states - source description: One dosha with its qualities, seats, pentad and states. description: The doshas for this page, in the standing order the texts name them. sources: type: array items: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. description: Every work behind this response, once each. meta: type: object properties: disclaimer: type: string example: For general wellness and cultural interest only. This is not medical advice, and it is unrelated to the diagnosis, cure, mitigation, prevention or treatment of any disease or condition. Consult a qualified professional. description: The scope of everything in this response, in the requested language. Present on every response from this API, and intended to be shown to the reader rather than stripped. required: - disclaimer description: Scope of the response. required: - total - limit - offset - doshas - sources - meta '400': description: Validation error. `issues[]` lists every failed field. content: application/json: schema: type: object properties: error: type: string description: First issue summary. code: type: string enum: - validation_error doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. issues: type: array description: Every validation failure. Use this to rebuild a valid request. items: type: object properties: path: type: string description: Dot-separated field path, or "(root)" for top-level. message: type: string code: type: string description: Zod issue code (invalid_type, too_small, too_big, invalid_string, ...). expected: type: string description: Expected type for invalid_type. minimum: description: Minimum bound for too_small issues. oneOf: - type: number - type: string maximum: description: Maximum bound for too_big issues. oneOf: - type: number - type: string inclusive: type: boolean format: type: string description: Format name for string issues (regex, email, url, uuid). pattern: type: string description: Regex pattern when format is regex. required: - path - message required: - error - code - doc_url - issues '401': description: Invalid or missing API key content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '405': description: Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header. headers: Allow: description: Comma-separated list of allowed methods (RFC 9110). schema: type: string content: application/json: schema: type: object properties: error: type: string code: type: string enum: - method_not_allowed doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. allow: type: array items: type: string description: Allowed HTTP methods for this path. Mirrors the Allow response header. docs: type: string description: Link to the product page for this domain. required: - error - code - doc_url - allow '429': description: Monthly rate limit exceeded content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url /ayurveda/doshas/{id}: get: operationId: getDosha tags: - Ayurveda summary: Get one dosha - Vata pitta kapha profile API description: Return one dosha with its elements, qualities, seats, five sub-doshas and three states. Use it to render a dosha card or a glossary entry without pulling the whole catalogue, and read qualityGunas to join it to the twenty qualities. security: - apiKey: [] parameters: - schema: type: string enum: - vata - pitta - kapha example: vata description: Dosha identifier, case-insensitive. One of vata, pitta or kapha. required: true description: Dosha identifier, case-insensitive. One of vata, pitta or kapha. name: id in: path - schema: type: string enum: - en - tr - de - es - hi - pt - fr - ru - zh-Hans - zh-Hant default: en example: en description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' required: false description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' name: lang in: query responses: '200': description: The dosha. content: application/json: schema: type: object properties: dosha: type: object properties: id: type: string example: vata description: 'The dosha as a Sanskrit identifier: vata, pitta or kapha. Never translated in any language, because a caller switches on it, and a translated dosha name is a different concept rather than the same one in another language.' sanskritName: type: string example: vāta description: The same name in the standard diacritic transliteration. devanagari: type: string example: वात description: The same name in Devanagari. Data, identical in every language. alsoCalled: type: array items: type: string example: - vāyu - anila - māruta - samīraṇa description: Other names the primary texts use for the same dosha. Data rather than translations, and useful when reading a verse that names one of them instead. element: type: string example: vayu, air description: The single mahabhuta the classical verses give this dosha. Classically each dosha gets one element, not a pair. modernElementPair: type: string example: air with ether description: The two-element pairing in general modern circulation. It carries no classical citation in this API, which is why it travels in its own field instead of inside the cited one. qualities: type: array items: type: string example: - ruksa, dry - laghu, light - sita, cold description: The qualities the frame chapter gives this dosha, each as its Sanskrit word and its gloss. The three sets overlap, so the twenty gunas are not partitioned three ways between them. qualityGunas: type: array items: type: string example: - ruksha - laghu - khara - sukshma - cala description: Identifiers from the twenty gunas for the qualities the guna verse names with the SAME Sanskrit word, so this joins straight to the qualities endpoint. Where the dosha chapter uses a synonym, or a word the guna verse does not carry, the entry is absent rather than mapped by resemblance. seats: type: array items: type: string example: - the colon - the hips - the thighs description: Where the dosha sits, in the requested language. specialSeat: type: string example: the colon description: The seat the chapter singles out above the others. seatsVariant: type: string example: Charaka Sutrasthana 20.8 names the bladder and the feet where this chapter names the ear and the organ of touch. description: How the second primary text reads the same list. The two are recorded side by side and never merged, because the special seat of pitta genuinely differs between them. functions: type: array items: type: string example: - upholds the structure and the working of the body - impels speech description: What the dosha does when it is even. For vata the text states this for the dosha as a whole; for the other two it states it only through the five sub-doshas, and those are what appear here. subDoshas: type: array items: type: object properties: id: type: string example: prana description: Stable identifier for the sub-dosha. Always English-safe and lowercase, and never translated, so it is safe to compare against. sanskritName: type: string example: prāṇa description: The same name in the standard diacritic transliteration. devanagari: type: string example: प्राण description: The same name in Devanagari. Data rather than a translation, so it is identical under every language. seat: type: string example: the head description: Where the sub-dosha sits, in the requested language. moves: type: string example: the chest and the throat description: Where the sub-dosha moves, where the chapter states one. Present on the five vatas and absent elsewhere, because the chapter gives a range of movement only for those. function: type: string example: upholds the intellect, the heart, the senses and the mind, and carries out spitting, sneezing, belching, the inward breath and the swallowing of food description: What the sub-dosha does, in the requested language. source: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - id - sanskritName - devanagari - seat - function - source description: One of the five sub-doshas. description: The five sub-doshas, each with its seat and its work. The five vata NAMES are carried by two texts; every seat and function of the fifteen rests on one chapter alone. states: type: object properties: balanced: type: string example: even, and staying within its own seat, with nothing disturbed description: The even state, described as a position and a quality rather than as an absence of complaints. accumulating: type: string example: increasing within its own seat, with an aversion to more of its own qualities and a wish for the opposite ones description: The first state of the seasonal cycle, described the same way. aggravated: type: string example: moving beyond its own seat, with dryness, lightness and movement conspicuous description: The second state of the seasonal cycle, described the same way. settlesWith: type: string example: unctuous, heavy, warm, smooth and stable qualities description: The qualities that bring the dosha back to even, which is the like-increases-like rule applied in reverse. source: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - balanced - accumulating - aggravated - settlesWith - source description: The three states, as positions and qualities. source: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. required: - id - sanskritName - devanagari - alsoCalled - element - modernElementPair - qualities - qualityGunas - seats - specialSeat - seatsVariant - functions - subDoshas - states - source description: One dosha with its qualities, seats, pentad and states. sources: type: array items: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. description: Every work behind this response, once each. meta: type: object properties: disclaimer: type: string example: For general wellness and cultural interest only. This is not medical advice, and it is unrelated to the diagnosis, cure, mitigation, prevention or treatment of any disease or condition. Consult a qualified professional. description: The scope of everything in this response, in the requested language. Present on every response from this API, and intended to be shown to the reader rather than stripped. required: - disclaimer description: Scope of the response. required: - dosha - sources - meta '400': description: Validation error. `issues[]` lists every failed field. content: application/json: schema: type: object properties: error: type: string description: First issue summary. code: type: string enum: - validation_error doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. issues: type: array description: Every validation failure. Use this to rebuild a valid request. items: type: object properties: path: type: string description: Dot-separated field path, or "(root)" for top-level. message: type: string code: type: string description: Zod issue code (invalid_type, too_small, too_big, invalid_string, ...). expected: type: string description: Expected type for invalid_type. minimum: description: Minimum bound for too_small issues. oneOf: - type: number - type: string maximum: description: Maximum bound for too_big issues. oneOf: - type: number - type: string inclusive: type: boolean format: type: string description: Format name for string issues (regex, email, url, uuid). pattern: type: string description: Regex pattern when format is regex. required: - path - message required: - error - code - doc_url - issues '401': description: Invalid or missing API key content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '405': description: Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header. headers: Allow: description: Comma-separated list of allowed methods (RFC 9110). schema: type: string content: application/json: schema: type: object properties: error: type: string code: type: string enum: - method_not_allowed doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. allow: type: array items: type: string description: Allowed HTTP methods for this path. Mirrors the Allow response header. docs: type: string description: Link to the product page for this domain. required: - error - code - doc_url - allow '429': description: Monthly rate limit exceeded content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url /ayurveda/tastes: get: operationId: listRasas tags: - Ayurveda summary: List the six tastes - Ayurveda rasa and dosha matrix API description: Return the six rasas, the tastes of Ayurveda, with the complete eighteen-cell matrix of which taste lowers and raises which dosha, in both directions. The order is the one the root verse gives, which is also the order of strength it states, and it puts bitter before pungent where most modern lists reverse them. The matrix is returned on each taste and again as a per-dosha index, so a caller can read it either way without deriving one from the other. security: - apiKey: [] parameters: - schema: type: string enum: - en - tr - de - es - hi - pt - fr - ru - zh-Hans - zh-Hant default: en example: en description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' required: false description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' name: lang in: query - schema: type: integer minimum: 1 maximum: 6 default: 6 example: 6 description: 'Maximum items to return per page. Range: 1-6, default 6.' required: false description: 'Maximum items to return per page. Range: 1-6, default 6.' name: limit in: query - schema: type: integer minimum: 0 default: 0 example: 0 description: Number of items to skip for pagination. Default 0. required: false description: Number of items to skip for pagination. Default 0. name: offset in: query responses: '200': description: The six tastes and the matrix. content: application/json: schema: type: object properties: total: type: number example: 6 description: Total number of tastes, which is always six. limit: type: number example: 6 description: Maximum tastes returned in this page. offset: type: number example: 0 description: Number of tastes skipped before this page. strengthOrder: type: array items: type: string example: - madhura - amla - lavana - tikta - katu - kashaya description: The six in the order the verse names them, which the verse then says is the order in which they give strength, most first. The order is a claim rather than a presentation choice, so it is published separately from the page above. rasas: type: array items: type: object properties: id: type: string example: madhura description: The taste as a Sanskrit identifier. Never translated, so it stays safe to compare against and to key a lookup on. The six are madhura, amla, lavana, tikta, katu and kashaya. sanskritName: type: string example: madhura description: The same name in the standard diacritic transliteration. devanagari: type: string example: मधुर description: The same name in Devanagari. Data, identical in every language. textForm: type: string example: svādu description: The form the root verse itself uses, where it differs from the identifier. The verse spells the pungent taste one way and the rest of the literature spells it another, and both are carried so a reader checking the Sanskrit does not conclude a row is missing. english: type: string example: sweet description: The taste in the requested language. This is the gloss and it does translate. elements: type: array items: type: string example: - ap, water description: The mahabhutas the taste arises from. Single-sourced, and from an edition that is not public domain, so the reference ships and the wording does not. That edition gives the sweet taste ONE element where material in general circulation gives it a pair. decreases: type: array items: type: string example: - vata - pitta description: The doshas this taste lowers, as Sanskrit identifiers. Each taste lowers exactly three across the three doshas and raises the others, which is the structure that makes the matrix complete. increases: type: array items: type: string example: - kapha description: The doshas this taste raises, as Sanskrit identifiers. required: - id - sanskritName - devanagari - textForm - english - elements - decreases - increases description: One of the six tastes. description: The tastes for this page, in the order the root verse names them. matrix: type: object additionalProperties: type: object properties: decreasedBy: type: array items: type: string example: - madhura - amla - lavana description: The three tastes that lower this dosha. increasedBy: type: array items: type: string example: - tikta - katu - kashaya description: The three tastes that raise it. required: - decreasedBy - increasedBy example: decreasedBy: - madhura - amla - lavana increasedBy: - tikta - katu - kashaya description: 'What a caller finds under any dosha key: the three tastes that lower it and the three that raise it.' example: vata: decreasedBy: - madhura - amla - lavana increasedBy: - tikta - katu - kashaya description: The same eighteen cells indexed by dosha rather than by taste, keyed vata, pitta and kapha. Derived from the rows above rather than restated, so the two views cannot disagree. sources: type: array items: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. description: Every work behind this response, once each. meta: type: object properties: disclaimer: type: string example: For general wellness and cultural interest only. This is not medical advice, and it is unrelated to the diagnosis, cure, mitigation, prevention or treatment of any disease or condition. Consult a qualified professional. description: The scope of everything in this response, in the requested language. Present on every response from this API, and intended to be shown to the reader rather than stripped. required: - disclaimer description: Scope of the response. required: - total - limit - offset - strengthOrder - rasas - matrix - sources - meta '400': description: Validation error. `issues[]` lists every failed field. content: application/json: schema: type: object properties: error: type: string description: First issue summary. code: type: string enum: - validation_error doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. issues: type: array description: Every validation failure. Use this to rebuild a valid request. items: type: object properties: path: type: string description: Dot-separated field path, or "(root)" for top-level. message: type: string code: type: string description: Zod issue code (invalid_type, too_small, too_big, invalid_string, ...). expected: type: string description: Expected type for invalid_type. minimum: description: Minimum bound for too_small issues. oneOf: - type: number - type: string maximum: description: Maximum bound for too_big issues. oneOf: - type: number - type: string inclusive: type: boolean format: type: string description: Format name for string issues (regex, email, url, uuid). pattern: type: string description: Regex pattern when format is regex. required: - path - message required: - error - code - doc_url - issues '401': description: Invalid or missing API key content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '405': description: Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header. headers: Allow: description: Comma-separated list of allowed methods (RFC 9110). schema: type: string content: application/json: schema: type: object properties: error: type: string code: type: string enum: - method_not_allowed doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. allow: type: array items: type: string description: Allowed HTTP methods for this path. Mirrors the Allow response header. docs: type: string description: Link to the product page for this domain. required: - error - code - doc_url - allow '429': description: Monthly rate limit exceeded content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url /ayurveda/qualities: get: operationId: listGunas tags: - Ayurveda summary: List the twenty qualities - Ayurveda guna pairs API description: Return the twenty gunas, the qualities of Ayurveda, as the ten opposed pairs the commentaries spell out, each member with the single action word attached to it, and the half-verse that states the like-increases-like rule the whole domain runs on. Each quality carries the doshas that hold it, so the pairs join straight to the dosha catalogue. One pair carries a recorded disagreement between the two commentaries, and the response states it rather than resolving it silently, because the choice decides which dosha that pair joins to. security: - apiKey: [] parameters: - schema: type: string enum: - en - tr - de - es - hi - pt - fr - ru - zh-Hans - zh-Hant default: en example: en description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' required: false description: 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.' name: lang in: query - schema: type: integer minimum: 1 maximum: 10 default: 10 example: 10 description: 'Maximum items to return per page. Range: 1-10, default 10.' required: false description: 'Maximum items to return per page. Range: 1-10, default 10.' name: limit in: query - schema: type: integer minimum: 0 default: 0 example: 0 description: Number of items to skip for pagination. Default 0. required: false description: Number of items to skip for pagination. Default 0. name: offset in: query responses: '200': description: The ten pairs and the rule they operate under. content: application/json: schema: type: object properties: total: type: number example: 10 description: Total number of pairs, which is always ten, covering twenty qualities. limit: type: number example: 10 description: Maximum pairs returned in this page. offset: type: number example: 0 description: Number of pairs skipped before this page. rule: type: string example: Increase of all things comes about through what is alike, and the reverse through what is opposite. description: The half-verse the whole domain turns on, translated in place. It is stated of ALL things rather than of food, which is why the same sentence governs the dosha states, the taste matrix, the seasonal regimen and the daily routine alike. pairs: type: array items: type: object properties: number: type: number example: 1 description: Position of the pair, 1 to 10, in the order the root verse names the first member of each. a: type: object properties: id: type: string example: guru description: The quality as a Sanskrit identifier. Never translated, so it stays safe to compare against and joins straight to the qualityGunas array on each dosha. sanskritName: type: string example: guru description: The same name in the standard diacritic transliteration. english: type: string example: heavy description: The quality in the requested language. This is the gloss and it does translate. action: type: string example: building up description: What this quality does, from the one action word the commentary gives each of the twenty. This is what turns the list from a glossary into the mechanism the rest of the domain runs on. actionSanskrit: type: string example: bṛṃhaṇa description: The same action word in Sanskrit. Data rather than a translation, so a reader can find the clause it comes from. doshas: type: array items: type: string example: - kapha description: Which doshas carry this quality, as Sanskrit identifiers, taken from the dosha catalogue rather than restated here. Empty where no dosha carries it under the same Sanskrit word, and note that the three dosha sets overlap, so the twenty are not partitioned three ways. required: - id - sanskritName - english - action - actionSanskrit - doshas description: One of the twenty qualities. b: type: object properties: id: type: string example: guru description: The quality as a Sanskrit identifier. Never translated, so it stays safe to compare against and joins straight to the qualityGunas array on each dosha. sanskritName: type: string example: guru description: The same name in the standard diacritic transliteration. english: type: string example: heavy description: The quality in the requested language. This is the gloss and it does translate. action: type: string example: building up description: What this quality does, from the one action word the commentary gives each of the twenty. This is what turns the list from a glossary into the mechanism the rest of the domain runs on. actionSanskrit: type: string example: bṛṃhaṇa description: The same action word in Sanskrit. Data rather than a translation, so a reader can find the clause it comes from. doshas: type: array items: type: string example: - kapha description: Which doshas carry this quality, as Sanskrit identifiers, taken from the dosha catalogue rather than restated here. Empty where no dosha carries it under the same Sanskrit word, and note that the three dosha sets overlap, so the twenty are not partitioned three ways. required: - id - sanskritName - english - action - actionSanskrit - doshas description: One of the twenty qualities. note: type: string example: 'The two commentaries name this member differently: cala here, sara in the other.' description: A recorded disagreement about this pair, present only where one exists. It is stated rather than resolved silently because the choice changes which dosha the pair joins to. required: - number - a - b description: One opposed pair of qualities. description: The pairs for this page. The root verse names only the first member of each and then says twenty counting their opposites; the opposites and every action word come from the commentaries. sources: type: array items: type: object properties: text: type: string example: Brihat Jataka description: Title of the work the claim is taken from, as it should be cited. chapter: type: string example: '18' description: Chapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy. verse: type: string example: note to 20, the Satyacharya extract description: Verse or verse range, printed as the source prints it, so it is a string and not always numeric. Where the claim sits in an appended note or a commentary rather than in a numbered verse, this value is prose, as in "note to 20". Join it to the chapter with a dot only when it is numeric, and otherwise render it after the chapter with a comma, so the pair reads "18, note to 20" rather than "18.note to 20". translation: type: - string - 'null' example: N. Chidambaram Iyer description: The named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists. year: type: - number - 'null' example: 1885 description: Publication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted. publicDomain: type: boolean example: true description: Whether the cited translation may be quoted. When false the verse reference is the citation and the translator wording is not reproduced anywhere in this API, so a caller reproducing a source must go to the verse rather than to us. note: type: string example: 'Chapter 18, not 19: the running head on the printed pages reads CH. 19.' description: A recorded disagreement between sources, or a stated limit on what the citation covers. Present only where one exists, and never resolved silently in favour of one reading. required: - text - chapter - verse - translation - year - publicDomain description: Where one claim in this response comes from. description: Every work behind this response, once each. meta: type: object properties: disclaimer: type: string example: For general wellness and cultural interest only. This is not medical advice, and it is unrelated to the diagnosis, cure, mitigation, prevention or treatment of any disease or condition. Consult a qualified professional. description: The scope of everything in this response, in the requested language. Present on every response from this API, and intended to be shown to the reader rather than stripped. required: - disclaimer description: Scope of the response. required: - total - limit - offset - rule - pairs - sources - meta '400': description: Validation error. `issues[]` lists every failed field. content: application/json: schema: type: object properties: error: type: string description: First issue summary. code: type: string enum: - validation_error doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. issues: type: array description: Every validation failure. Use this to rebuild a valid request. items: type: object properties: path: type: string description: Dot-separated field path, or "(root)" for top-level. message: type: string code: type: string description: Zod issue code (invalid_type, too_small, too_big, invalid_string, ...). expected: type: string description: Expected type for invalid_type. minimum: description: Minimum bound for too_small issues. oneOf: - type: number - type: string maximum: description: Maximum bound for too_big issues. oneOf: - type: number - type: string inclusive: type: boolean format: type: string description: Format name for string issues (regex, email, url, uuid). pattern: type: string description: Regex pattern when format is regex. required: - path - message required: - error - code - doc_url - issues '401': description: Invalid or missing API key content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '405': description: Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header. headers: Allow: description: Comma-separated list of allowed methods (RFC 9110). schema: type: string content: application/json: schema: type: object properties: error: type: string code: type: string enum: - method_not_allowed doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. allow: type: array items: type: string description: Allowed HTTP methods for this path. Mirrors the Allow response header. docs: type: string description: Link to the product page for this domain. required: - error - code - doc_url - allow '429': description: Monthly rate limit exceeded content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string description: Human-readable error message. May change wording. code: type: string description: Machine-readable error code. Stable identifier. doc_url: type: string description: Absolute URL of the documented explanation of this code, anchored at the code itself, for example https://roxyapi.com/docs/errors#not_found. required: - error - code - doc_url components: schemas: AyurvedaRitucharyaRequest: type: object properties: date: type: string format: date example: '2026-03-01' description: The date to resolve, in YYYY-MM-DD format. The season is read at midday UTC on this date, because a season boundary is an instant and a calendar day has to be reduced to one; on a day that carries a boundary, the half the midday falls in is the answer. Within about two months of either end of the supported span, a date whose season opens or closes outside that span answers 400. ritucharyaScheme: type: string enum: - sutrasthana-6 - vimana-8 default: sutrasthana-6 example: sutrasthana-6 description: 'Which six-season division the year is cut into. "sutrasthana-6" is the standard set of sisira, vasanta, grisma, varsa, sarad and hemanta, and is the default. "vimana-8" is the alternate division in which three seasons of extreme character alternate with three of moderate character and pravrt, the season of the first rains, replaces sisira. The alternate is not a relabelling: five of the six boundaries move, and because its verse gives no solar-month boundaries the month allocation is a RoxyAPI convention, stated in the response.' rituZodiac: type: string enum: - sayana - nirayana default: sayana example: sayana description: Which zodiac the solar-month boundaries are measured in. "sayana" is the tropical reading, which is what published almanacs use for seasons and is the default. "nirayana" is the sidereal reading in the Lahiri frame, which runs about 24 days later. The gap is the size of the ayanamsa, so near a boundary the two answer with different seasons for the same date, which is why the value is echoed in every response. hemisphere: type: string enum: - northern - southern default: northern example: northern description: 'Which half of the world the season names are stated for. Defaults to "northern", which is the half the primary text describes. It is NEVER inferred from a latitude: a silent flip would change the answer without the caller asking, and no classical text handles the southern case at all. Passing "southern" rotates the six season names by three places, following a modern almanac rather than a verse, and the response says so and states what was not rotated with them.' required: - date AyurvedaConstitutionRequest: type: object properties: date: type: string format: date example: '1990-07-04' description: Birth date in YYYY-MM-DD format. It sets the sidereal positions the whole reading is built from, so an approximate date gives an approximate constitution. time: type: string format: time example: '10:12:00' description: Birth time in 24-hour HH:MM:SS format. The rising sign turns roughly every two hours and carries the heaviest weight of the three factors, so time is the input a reading is most sensitive to. latitude: type: number minimum: -90 maximum: 90 example: 28.6139 description: Birth latitude in decimal degrees. It sets the local sidereal time behind the rising sign, and it feeds the strength of each graha through the sunrise at that place. longitude: type: number minimum: -180 maximum: 180 example: 77.209 description: Birth longitude in decimal degrees. It sets the local sidereal time behind the rising sign, together with the latitude. timezone: anyOf: - type: number minimum: -14 maximum: 14 - type: string default: 5.5 description: Timezone as an IANA name such as "Asia/Kolkata", or as decimal hours from UTC such as 5.5. An IANA name is resolved to the offset in force on the birth date, so a summer-time birth is placed correctly. Defaults to 5.5. example: 5.5 ayanamsa: type: string enum: - kp-newcomb - kp-old - lahiri - raman - custom default: lahiri example: lahiri description: Sidereal frame the chart is cast in. "lahiri" is the traditional Vedic standard used by most software and is the default. "raman" sits about 1.45 degrees below it. "kp-newcomb" and "kp-old" are the two Krishnamurti Paddhati frames. "custom" takes your own value in degrees via ayanamsaValue. The frame rotates the whole zodiac, so a graha within 1.45 degrees of a boundary can change rashi when you switch, which moves both sign factors of the reading. ayanamsaValue: type: number example: 24 description: Custom sidereal frame value in degrees. Required when ayanamsa is "custom" and ignored otherwise. Use it to reconcile exactly against a specific reference program. signDoshaScheme: type: string enum: - satyacharya - bphs default: satyacharya example: satyacharya description: Which classical sign table the rising sign and the Moon sign are read through. "satyacharya" is the twelve-sign extract appended to Brihat Jataka 18.20, carried in two independent public-domain translations that agree on all twelve rows, and is the default. "bphs" is the Brihat Parasara Hora Sastra rule by elemental triplicity. The two agree exactly on three signs of twelve, overlap in part on seven, and share no humour at all on Scorpio or Sagittarius, so the choice can change the reading outright and is echoed in the response. required: - date - time - latitude - longitude AyurvedaDinacharyaRequest: type: object properties: date: type: string format: date example: '2026-06-21' description: The local calendar date, in YYYY-MM-DD format. Sunrise and sunset are computed for this date at the given place, and the whole routine follows from them, so the answer changes through the year at any latitude away from the equator. latitude: type: number minimum: -90 maximum: 90 example: 51.5074 description: 'Latitude in decimal degrees. It sets how long the day and the night actually are, which is the whole difference between this and a printed timetable: at 51 north in June the day runs about sixteen and a half hours and its thirds are five and a half hours each.' longitude: type: number minimum: -180 maximum: 180 example: -0.1278 description: Longitude in decimal degrees. It sets the clock time of sunrise at this place. timezone: anyOf: - type: number minimum: -14 maximum: 14 - type: string default: 0 description: Timezone as an IANA name such as "Europe/London", or as decimal hours from UTC such as 5.5. An IANA name is resolved to the offset in force on the requested date, and on the clock-hour grid at the local hour each block opens, so on a daylight-saving change every block keeps its printed hour and one that falls in the skipped hour moves forward past it. It decides which local day is meant and, on the clock-hour grid, where the blocks fall. Defaults to 0. example: Europe/London doshaClock: type: string enum: - sunrise-anchored - clock-hours default: sunrise-anchored example: sunrise-anchored description: How the six dosha periods are cut. "sunrise-anchored" divides the actual day and the actual night at this place into thirds, which is the division the frame chapter states, and is the default. "clock-hours" is the modern grid of six four-hour blocks from six in the morning; no classical text assigns clock hours, and the grid is only exact at an equinox near the equator. Both sets are returned whichever is chosen, so a caller can show one and reconcile against the other. required: - date - latitude - longitude securitySchemes: apiKey: type: apiKey in: header name: X-API-Key description: Your API key for accessing RoxyAPI. Alternatively, you can pass the API key as a query parameter "api_key". externalDocs: description: Complete API Documentation with Examples url: https://roxyapi.com/docs