Skip to content
RoxyAPI
Get API Key

Ayurveda API reference

Ayurveda API for dosha profiles, the dinacharya daily routine and the ritucharya seasonal regimen, with a verse cited on every value. Read the vata, pitta and kapha constitution from a verified sidereal birth chart, compute brahma muhurta and the six dosha periods from the real sunrise at any location, resolve the Ayurvedic season from actual solar ingress instants under two published conventions, and serve the catalogue of three doshas, fifteen sub-doshas, six tastes and twenty qualities straight from the primary texts. Deterministic, cacheable and localized. One key covers every RoxyAPI domain, with Remote MCP and typed SDKs.

8 endpoints. Product page. Typed SDKs in six languages carry every operation below.

Kept in this tab only. Without a key, a small daily allowance still answers every request below.

Ayurvedic constitution from a birth chart - Dosha profile API

POST /api/v2/ayurveda/constitution

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.

Parameters

ParameterTypeDescription
lang querystring enumResponse 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. Default en.

Request body

FieldTypeDescription
date requiredstring (date)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 requiredstring (time)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 requirednumberBirth 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 requirednumberBirth longitude in decimal degrees. It sets the local sidereal time behind the rising sign, together with the latitude.
timezonenumber or stringTimezone 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.
ayanamsastring enumSidereal 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.
ayanamsaValuenumberCustom sidereal frame value in degrees. Required when ayanamsa is "custom" and ignored otherwise. Use it to reconcile exactly against a specific reference program.
signDoshaSchemestring enumWhich 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.
curl
curl -X POST "https://roxyapi.com/api/v2/ayurveda/constitution" \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"1990-07-04","time":"10:12:00","latitude":28.6139,"longitude":77.209}'

Response fields

FieldTypeDescription
frame requiredobjectThe sidereal frame this reading was cast in.
frame.ayanamsa requiredstringThe sidereal frame the chart was cast in, echoing the request. Always English, so it is safe to compare against.
frame.ayanamsaDegrees requirednumberThe 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.
lagnaSign requiredstringThe rising sign, lowercase and always English. It is the best attested of the three factors and carries the heaviest weight.
moonSign requiredstringThe 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 requiredarray of objectThe three scored factors, in the order they are weighted.
factors[].id requiredstringWhich 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.
factors[].input requiredstringWhat this factor read: a sign id for the two sign factors, or the space-separated grahas that reached the strength cutoff for the third.
factors[].doshas requiredarray of stringThe 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.
factors[].weight requirednumberHow 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.
factors[].source requiredobjectWhere one claim in this response comes from.
factors[].source.text requiredstringTitle of the work the claim is taken from, as it should be cited.
factors[].source.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
factors[].source.verse requiredstringVerse 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".
Show all fieldsShow fewer fields
FieldTypeDescription
factors[].source.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
factors[].source.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
factors[].source.publicDomain requiredbooleanWhether 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.
factors[].source.notestringA 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.
composite requiredobjectThe blended reading. The factors are cited and this is not, which is why it carries a convention label.
composite.vata requirednumberShare 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.
composite.pitta requirednumberShare of pitta in whole percent.
composite.kapha requirednumberShare of kapha in whole percent.
composite.dominant requiredstringThe humour holding the largest share. A Sanskrit identifier, never translated.
composite.secondary requiredstringThe humour holding the second largest share. Reported whether or not it reached the margin that would put it in the type label.
composite.type requiredstringThe 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.
composite.convention requiredstringThe 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.
composite.weighting requiredobjectEvery number behind the blend, published so a caller who disagrees can re-weigh the factors themselves.
composite.weighting.lagnaSign requirednumberWeight given to the rising sign factor.
composite.weighting.moonSign requirednumberWeight given to the Moon sign factor, lower than the rising sign because its classical warrant is the narrower of the two.
composite.weighting.strongestPlanet requirednumberWeight given to the strongest graha factor.
composite.weighting.strongPlanetThreshold requirednumberFraction 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.
composite.weighting.dualTypeMargin requirednumberPercentage-point gap below which the second humour joins the type label. When all three sit inside it the label is sama.
strengthRanking requiredarray of objectThe seven grahas ranked by shadbala, strongest first. Rahu and Ketu are not ranked, because shadbala is defined over the seven.
strengthRanking[].graha requiredstringGraha name, as a Vedic birth chart returns it.
strengthRanking[].totalVirupas requirednumberTotal shadbala in virupas, the six-fold strength measure. Higher is stronger, and the ranking below is taken from it.
strengthRanking[].rank requirednumberPosition in the ranking, 1 for the strongest of the seven.
strengthRanking[].strong requiredbooleanWhether this graha reached the strength cutoff and therefore contributed to the reading. More than one true value is what makes the reading a blend.
planetDoshas requiredarray of objectThe graha to humour and graha to constituent table, as reference. It is informational and does not vary with the request.
planetDoshas[].graha requiredstringGraha name, matching the name a Vedic birth chart uses, so this table joins to a chart with nothing in between.
planetDoshas[].sanskritName requiredstringThe graha name in Sanskrit, in the standard diacritic transliteration.
planetDoshas[].doshas requiredarray of stringThe 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.
planetDoshas[].dhatu requiredstringThe 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.
planetDoshas[].dhatuSanskrit requiredstringThe 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.
planetDoshas[].doshaSource requiredobjectWhere one claim in this response comes from.
planetDoshas[].doshaSource.text requiredstringTitle of the work the claim is taken from, as it should be cited.
planetDoshas[].doshaSource.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
planetDoshas[].doshaSource.verse requiredstringVerse 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".
planetDoshas[].doshaSource.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
planetDoshas[].doshaSource.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
planetDoshas[].doshaSource.publicDomain requiredbooleanWhether 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.
planetDoshas[].doshaSource.notestringA 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.
planetDoshas[].dhatuSource requiredobjectWhere one claim in this response comes from.
planetDoshas[].dhatuSource.text requiredstringTitle of the work the claim is taken from, as it should be cited.
planetDoshas[].dhatuSource.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
planetDoshas[].dhatuSource.verse requiredstringVerse 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".
planetDoshas[].dhatuSource.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
planetDoshas[].dhatuSource.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
planetDoshas[].dhatuSource.publicDomain requiredbooleanWhether 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.
planetDoshas[].dhatuSource.notestringA 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.
summary requiredstringThe reading in prose, composed from the factors rather than selected from stock text, and translated in place.
conventions requiredobjectThe conventions this reading was produced under.
conventions.signDoshaScheme requiredstringWhich sign table the two sign factors were read through. Echoes the request.
conventions.ayanamsa requiredstringWhich 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.
meta requiredobjectScope of the response.
meta.disclaimer requiredstringThe 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.
Example response
{
  "frame": {
    "ayanamsa": "lahiri",
    "ayanamsaDegrees": 23.72820922463809
  },
  "lagnaSign": "leo",
  "moonSign": "scorpio",
  "factors": [
    {
      "id": "lagna-sign",
      "input": "leo",
      "doshas": [
        "pitta"
      ],
      "weight": 2,
      "source": {
        "text": "Brihat Jataka",
        "chapter": "18",
        "verse": "note to 20, the Satyacharya extract",
        "translation": "N. Chidambaram Iyer",
        "year": 1885,
        "publicDomain": true,
        "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
      }
    }
  ],
  "composite": {
    "vata": 20,
    "pitta": 60,
    "kapha": 20,
    "dominant": "pitta",
    "secondary": "vata",
    "type": "pitta",
    "convention": "roxyapi/v1",
    "weighting": {
      "lagnaSign": 2,
      "moonSign": 1,
      "strongestPlanet": 2,
      "strongPlanetThreshold": 0.9,
      "dualTypeMargin": 10
    }
  },
  "strengthRanking": [
    {
      "graha": "Mars",
      "totalVirupas": 525.53,
      "rank": 1,
      "strong": true
    }
  ],
  "planetDoshas": [
    {
      "graha": "Sun",
      "sanskritName": "sūrya",
      "doshas": [
        "pitta"
      ],
      "dhatu": "bone",
      "dhatuSanskrit": "asthi",
      "doshaSource": {
        "text": "Brihat Jataka",
        "chapter": "18",
        "verse": "note to 20, the Satyacharya extract",
        "translation": "N. Chidambaram Iyer",
        "year": 1885,
        "publicDomain": true,
        "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
      },
      "dhatuSource": {
        "text": "Brihat Jataka",
        "chapter": "18",
        "verse": "note to 20, the Satyacharya extract",
        "translation": "N. Chidambaram Iyer",
        "year": 1885,
        "publicDomain": true,
        "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
      }
    }
  ],
  "summary": "The chart reads pitta, and pitta carries the largest share of it at 60 percent.",
  "conventions": {
    "signDoshaScheme": "satyacharya",
    "ayanamsa": "lahiri"
  },
  "meta": {
    "disclaimer": "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."
  }
}

Try it

JSON, as the example above shows it.
Not sent

Dinacharya daily routine - Brahma muhurta and dosha clock API

POST /api/v2/ayurveda/dinacharya

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.

Parameters

ParameterTypeDescription
lang querystring enumResponse 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. Default en.

Request body

FieldTypeDescription
date requiredstring (date)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 requirednumberLatitude 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 requirednumberLongitude in decimal degrees. It sets the clock time of sunrise at this place.
timezonenumber or stringTimezone 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.
doshaClockstring enumHow 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.
curl
curl -X POST "https://roxyapi.com/api/v2/ayurveda/dinacharya" \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"2026-06-21","latitude":51.5074,"longitude":-0.1278}'

Response fields

FieldTypeDescription
date requiredstringThe local date this schedule is for, echoing the request.
sunrise requiredstringSunrise 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 requiredstringSunset at this place on this date, as an ISO 8601 instant in UTC.
nextSunrise requiredstringThe 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 requiredobjectThe 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.
brahmaMuhurta.start requiredstringWhen the window opens, 96 minutes before sunrise.
brahmaMuhurta.end requiredstringWhen the window closes, 48 minutes before sunrise.
brahmaMuhurta.muhurtaMinutes requirednumberLength 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.
brahmaMuhurta.muhurtasPerAhoratra requirednumberMuhurtas in one full day and night. Two texts state this and agree exactly on it while differing on the smaller units.
brahmaMuhurta.source requiredobjectWhere one claim in this response comes from.
brahmaMuhurta.source.text requiredstringTitle of the work the claim is taken from, as it should be cited.
brahmaMuhurta.source.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
brahmaMuhurta.source.verse requiredstringVerse 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".
brahmaMuhurta.source.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
Show all fieldsShow fewer fields
FieldTypeDescription
brahmaMuhurta.source.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
brahmaMuhurta.source.publicDomain requiredbooleanWhether 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.
brahmaMuhurta.source.notestringA 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.
doshaPeriods requiredarray of objectThe six blocks under the convention that was requested, in chronological order.
doshaPeriods[].dosha requiredstringThe 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.
doshaPeriods[].start requiredstringWhen the block opens, as an ISO 8601 instant in UTC.
doshaPeriods[].end requiredstringWhen the block closes, as an ISO 8601 instant in UTC.
doshaPeriods[].span requiredstringWhether the block sits in the day or the night. Always English, so it stays safe to switch on.
doshaPeriods[].thirdnumberWhich 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.
alternatePeriods requiredarray of objectThe same six blocks under the other convention, so a caller can show one and reconcile against the other without a second call.
alternatePeriods[].dosha requiredstringThe 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.
alternatePeriods[].start requiredstringWhen the block opens, as an ISO 8601 instant in UTC.
alternatePeriods[].end requiredstringWhen the block closes, as an ISO 8601 instant in UTC.
alternatePeriods[].span requiredstringWhether the block sits in the day or the night. Always English, so it stays safe to switch on.
alternatePeriods[].thirdnumberWhich 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.
routine requiredarray of objectThe daily sequence the chapter gives, in its own order.
routine[].order requirednumberPosition in the sequence the chapter gives, starting at 1.
routine[].id requiredstringStable identifier for the step. Always English and lowercase, so it is safe to compare against and to key a translation off.
routine[].sanskritName requiredstringThe step under its Sanskrit name, in the standard diacritic transliteration. Data rather than a translation, so it is identical under every language.
routine[].guidance requiredstringWhat 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.
routine[].timing requiredstringWhere 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.
routine[].source requiredobjectWhere one claim in this response comes from.
routine[].source.text requiredstringTitle of the work the claim is taken from, as it should be cited.
routine[].source.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
routine[].source.verse requiredstringVerse 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".
routine[].source.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
routine[].source.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
routine[].source.publicDomain requiredbooleanWhether 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.
routine[].source.notestringA 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.
summary requiredstringThe day in prose, composed and translated in place.
sources requiredarray of objectEvery work behind this response, once each.
sources[].text requiredstringTitle of the work the claim is taken from, as it should be cited.
sources[].chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
sources[].verse requiredstringVerse 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".
sources[].translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
sources[].year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
sources[].publicDomain requiredbooleanWhether 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.
sources[].notestringA 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.
conventions requiredobjectThe conventions this schedule was produced under.
conventions.doshaClock requiredstringWhich division the doshaPeriods array holds. Echoes the request; the other one is in alternatePeriods.
meta requiredobjectScope of the response.
meta.disclaimer requiredstringThe 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.
Example response
{
  "date": "2026-06-21",
  "sunrise": "2026-06-21T03:43:12.000Z",
  "sunset": "2026-06-21T20:21:30.000Z",
  "nextSunrise": "2026-06-22T03:43:30.000Z",
  "brahmaMuhurta": {
    "start": "2026-06-21T02:07:12.000Z",
    "end": "2026-06-21T02:55:12.000Z",
    "muhurtaMinutes": 48,
    "muhurtasPerAhoratra": 30,
    "source": {
      "text": "Brihat Jataka",
      "chapter": "18",
      "verse": "note to 20, the Satyacharya extract",
      "translation": "N. Chidambaram Iyer",
      "year": 1885,
      "publicDomain": true,
      "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
    }
  },
  "doshaPeriods": [
    {
      "dosha": "kapha",
      "start": "2026-06-21T03:43:12.000Z",
      "end": "2026-06-21T09:05:44.000Z",
      "span": "day",
      "third": 1
    }
  ],
  "alternatePeriods": [
    {
      "dosha": "kapha",
      "start": "2026-06-21T03:43:12.000Z",
      "end": "2026-06-21T09:05:44.000Z",
      "span": "day",
      "third": 1
    }
  ],
  "routine": [
    {
      "order": 1,
      "id": "waking",
      "sanskritName": "brāhmamuhūrta",
      "guidance": "One who is well rises in the brahma muhurta, the window that closes as sunrise approaches, for the protection of life.",
      "timing": "sunrise minus 96 minutes to sunrise minus 48 minutes",
      "source": {
        "text": "Brihat Jataka",
        "chapter": "18",
        "verse": "note to 20, the Satyacharya extract",
        "translation": "N. Chidambaram Iyer",
        "year": 1885,
        "publicDomain": true,
        "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
      }
    }
  ],
  "summary": "The brahma muhurta opens 96 minutes before sunrise and closes 48 minutes before it, a fixed window rather than a share of the night.",
  "sources": [
    {
      "text": "Brihat Jataka",
      "chapter": "18",
      "verse": "note to 20, the Satyacharya extract",
      "translation": "N. Chidambaram Iyer",
      "year": 1885,
      "publicDomain": true,
      "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
    }
  ],
  "conventions": {
    "doshaClock": "sunrise-anchored"
  },
  "meta": {
    "disclaimer": "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."
  }
}

Try it

JSON, as the example above shows it.
Not sent

Ayurveda seasonal regimen - Ritucharya and ritu resolution API

POST /api/v2/ayurveda/ritucharya

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.

Parameters

ParameterTypeDescription
lang querystring enumResponse 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. Default en.

Request body

FieldTypeDescription
date requiredstring (date)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.
ritucharyaSchemestring enumWhich 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.
rituZodiacstring enumWhich 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.
hemispherestring enumWhich 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.
curl
curl -X POST "https://roxyapi.com/api/v2/ayurveda/ritucharya" \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"2026-03-01"}'

Response fields

FieldTypeDescription
date requiredstringThe date this reading is for, echoing the request.
ritu requiredobjectThe season in force on this date.
ritu.id requiredstringThe 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.
ritu.sanskritName requiredstringThe season in the standard diacritic transliteration.
ritu.devanagari requiredstringThe season in Devanagari. Data rather than a translation, so it is identical under every language.
ritu.gloss requiredstringWhat the season is called in the requested language. This is the gloss and it does translate; the identifier above does not.
ritu.classicalRitu requiredstringThe 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.
ritu.start requiredstringWhen 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.
ritu.end requiredstringWhen 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.
ritu.solarMonths requiredarray of objectThe 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.
ritu.solarMonths[].index requirednumberZero-based rasi index, 0 for Aries, so a caller can order the twelve without a name table.
ritu.solarMonths[].id requiredstringThe rasi as the lowercase English sign id every other RoxyAPI domain uses.
ritu.solarMonths[].sanskritName requiredstringThe solar month under the name a panchang prints for it. Data, identical in every language.
ayana requiredobjectWhich course the sun is in.
Show all fieldsShow fewer fields
FieldTypeDescription
ayana.id requiredstringThe 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.
ayana.source requiredobjectWhere one claim in this response comes from.
ayana.source.text requiredstringTitle of the work the claim is taken from, as it should be cited.
ayana.source.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
ayana.source.verse requiredstringVerse 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".
ayana.source.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
ayana.source.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
ayana.source.publicDomain requiredbooleanWhether 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.
ayana.source.notestringA 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.
phase requiredobjectThe taking or giving half of the year.
phase.id requiredstringWhether 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.
phase.tastes requiredarray of objectThe 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.
phase.tastes[].id requiredstringThe taste as a Sanskrit identifier. Never translated, so it stays safe to compare against and joins straight to the tastes catalogue.
phase.tastes[].sanskritName requiredstringThe same taste in the standard diacritic transliteration.
phase.tastes[].english requiredstringThe taste in the requested language. This is the gloss and it does translate.
phase.source requiredobjectWhere one claim in this response comes from.
phase.source.text requiredstringTitle of the work the claim is taken from, as it should be cited.
phase.source.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
phase.source.verse requiredstringVerse 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".
phase.source.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
phase.source.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
phase.source.publicDomain requiredbooleanWhether 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.
phase.source.notestringA 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.
strength requiredobjectWhere the season sits in the strength cycle.
strength.level requiredstringBodily 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.
strength.source requiredobjectWhere one claim in this response comes from.
strength.source.text requiredstringTitle of the work the claim is taken from, as it should be cited.
strength.source.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
strength.source.verse requiredstringVerse 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".
strength.source.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
strength.source.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
strength.source.publicDomain requiredbooleanWhether 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.
strength.source.notestringA 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.
tasteIncreasing requiredobjectThe 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.
tasteIncreasing.id requiredstringThe taste as a Sanskrit identifier. Never translated, so it stays safe to compare against and joins straight to the tastes catalogue.
tasteIncreasing.sanskritName requiredstringThe same taste in the standard diacritic transliteration.
tasteIncreasing.english requiredstringThe taste in the requested language. This is the gloss and it does translate.
tasteIncreasing.source requiredobjectWhere one claim in this response comes from.
tasteIncreasing.source.text requiredstringTitle of the work the claim is taken from, as it should be cited.
tasteIncreasing.source.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
tasteIncreasing.source.verse requiredstringVerse 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".
tasteIncreasing.source.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
tasteIncreasing.source.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
tasteIncreasing.source.publicDomain requiredbooleanWhether 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.
tasteIncreasing.source.notestringA 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.
doshaCycle requiredarray of objectWhich 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.
doshaCycle[].dosha requiredstringThe humour, as a Sanskrit identifier. Never translated.
doshaCycle[].state requiredstringWhere 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.
doshaCycle[].meaning requiredstringWhat the state is, in the requested language, defined by where the humour sits and how it behaves.
doshaCycle[].notestringA recorded disagreement about this row, present only where one exists.
regimen requiredarray of objectWhat 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.
regimen[].id requiredstringStable identifier for the item. Always English and lowercase, so it is safe to compare against.
regimen[].guidance requiredstringThe 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.
regimen[].source requiredobjectWhere one claim in this response comes from.
regimen[].source.text requiredstringTitle of the work the claim is taken from, as it should be cited.
regimen[].source.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
regimen[].source.verse requiredstringVerse 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".
regimen[].source.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
regimen[].source.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
regimen[].source.publicDomain requiredbooleanWhether 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.
regimen[].source.notestringA 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.
summary requiredstringThe season in prose, composed and translated in place.
sources requiredarray of objectEvery work behind this response, once each.
sources[].text requiredstringTitle of the work the claim is taken from, as it should be cited.
sources[].chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
sources[].verse requiredstringVerse 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".
Example response
{
  "date": "2026-03-01",
  "ritu": {
    "id": "vasanta",
    "sanskritName": "vasanta",
    "devanagari": "वसन्त",
    "gloss": "spring",
    "classicalRitu": "vasanta",
    "start": "2026-02-18T15:51:27.000Z",
    "end": "2026-04-20T01:39:12.000Z",
    "solarMonths": [
      {
        "index": 11,
        "id": "pisces",
        "sanskritName": "Meena"
      }
    ]
  },
  "ayana": {
    "id": "uttarayana",
    "source": {
      "text": "Brihat Jataka",
      "chapter": "18",
      "verse": "note to 20, the Satyacharya extract",
      "translation": "N. Chidambaram Iyer",
      "year": 1885,
      "publicDomain": true,
      "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
    }
  },
  "phase": {
    "id": "adana",
    "tastes": [
      {
        "id": "kashaya",
        "sanskritName": "kaṣāya",
        "english": "astringent"
      }
    ],
    "source": {
      "text": "Brihat Jataka",
      "chapter": "18",
      "verse": "note to 20, the Satyacharya extract",
      "translation": "N. Chidambaram Iyer",
      "year": 1885,
      "publicDomain": true,
      "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
    }
  },
  "strength": {
    "level": "moderate",
    "source": {
      "text": "Brihat Jataka",
      "chapter": "18",
      "verse": "note to 20, the Satyacharya extract",
      "translation": "N. Chidambaram Iyer",
      "year": 1885,
      "publicDomain": true,
      "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
    }
  },
  "tasteIncreasing": {
    "id": "kashaya",
    "sanskritName": "kaṣāya",
    "english": "astringent",
    "source": {
      "text": "Brihat Jataka",
      "chapter": "18",
      "verse": "note to 20, the Satyacharya extract",
      "translation": "N. Chidambaram Iyer",
      "year": 1885,
      "publicDomain": true,
      "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
    }
  },
  "doshaCycle": [
    {
      "dosha": "kapha",
      "state": "aggravated",
      "meaning": "Going out of its own channel, with its own marks showing.",
      "note": "One public-domain translation of Charaka Sutrasthana 6.22 places the accumulation in hemanta instead."
    }
  ],
  "regimen": [
    {
      "id": "vasanta-activity",
      "guidance": "Take up physical exercise, dry rubbing, mouth rinsing and frequent washing in comfortably warm water.",
      "source": {
        "text": "Brihat Jataka",
        "chapter": "18",
        "verse": "note to 20, the Satyacharya extract",
        "translation": "N. Chidambaram Iyer",
        "year": 1885,
        "publicDomain": true,
        "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
      }
    }
  ],
  "summary": "The solar months of Meena and Mesha fall in vasanta, spring.",
  "sources": [
    {
      "text": "Brihat Jataka",
      "chapter": "18",
      "verse": "note to 20, the Satyacharya extract",
      "translation": "N. Chidambaram Iyer",
      "year": 1885,
      "publicDomain": true,
      "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
    }
  ],
  "conventions": {
    "ritucharyaScheme": "sutrasthana-6",
    "rituZodiac": "sayana",
    "hemisphere": "northern"
  },
  "meta": {
    "disclaimer": "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."
  }
}

Try it

JSON, as the example above shows it.
Not sent

Daily Ayurveda reading - Dosha clock and brahma muhurta by location API

GET /api/v2/ayurveda/daily

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.

Parameters

ParameterTypeDescription
lang querystring enumResponse 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. Default en.
date querystring (date)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.
latitude required querynumberLatitude in decimal degrees. It sets how long the day and the night actually are, which is what the dosha periods are cut from.
longitude required querynumberLongitude in decimal degrees. It sets the clock time of sunrise at this place.
timezone querystringSelects 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").
curl
curl "https://roxyapi.com/api/v2/ayurveda/daily?latitude=51.5074&longitude=-0.1278" \
  -H "X-API-Key: YOUR_KEY"

Response fields

FieldTypeDescription
date requiredstringThe date of this reading. Echoes the date requested, or the current day in the timezone parameter when it was omitted.
sunrise requiredstringSunrise at this place, as an ISO 8601 instant in UTC.
sunset requiredstringSunset at this place, as an ISO 8601 instant in UTC.
brahmaMuhurta requiredobjectThe pre-dawn window as a fixed offset from sunrise, not a share of the night.
brahmaMuhurta.start requiredstringWhen the window opens, 96 minutes before sunrise.
brahmaMuhurta.end requiredstringWhen the window closes, 48 minutes before sunrise.
doshaPeriods requiredarray of objectThe six blocks, cut from the actual day and night at this place into thirds.
doshaPeriods[].dosha requiredstringThe humour this block belongs to, as a Sanskrit identifier.
doshaPeriods[].start requiredstringWhen the block opens, as an ISO 8601 instant in UTC.
doshaPeriods[].end requiredstringWhen the block closes, as an ISO 8601 instant in UTC.
doshaPeriods[].span requiredstringWhether the block sits in the day or the night.
ritu requiredobjectThe season this date falls in.
ritu.id requiredstringThe season as a Sanskrit identifier. Never translated.
ritu.sanskritName requiredstringThe season in the standard diacritic transliteration.
Show all fieldsShow fewer fields
FieldTypeDescription
ritu.gloss requiredstringWhat the season is called in the requested language.
ritu.start requiredstringWhen the season opened, as an ISO 8601 instant in UTC.
ritu.end requiredstringWhen it closes, as an ISO 8601 instant in UTC.
ritu.ayana requiredstringThe 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.
ritu.phase requiredstringWhether the sun is taking or giving across this half of the year, as a Sanskrit identifier.
ritu.strength requiredstringBodily strength in this season: highest, moderate or lowest. Always English so it stays safe to switch on.
ritu.tasteIncreasing requiredstringThe 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.
doshaCycle requiredarray of objectWhich humours this season moves, and how. A season moves at most three of the nine slots and often fewer.
doshaCycle[].dosha requiredstringThe humour, as a Sanskrit identifier.
doshaCycle[].state requiredstringWhere the season puts it: accumulating, aggravated or settling. Always English so it stays safe to switch on.
summary requiredstringThe day in prose, composed and translated in place.
sources requiredarray of objectEvery work behind this response, once each.
sources[].text requiredstringTitle of the work the claim is taken from, as it should be cited.
sources[].chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
sources[].verse requiredstringVerse 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".
sources[].translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
sources[].year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
sources[].publicDomain requiredbooleanWhether 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.
sources[].notestringA 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.
conventions requiredobjectThe conventions this reading was produced under. All four are the defaults, stated rather than assumed.
conventions.doshaClock requiredstringHow the six periods were cut. This route always uses the default; the routine route takes the choice.
conventions.ritucharyaScheme requiredstringWhich six-season division was applied. This route always uses the default; the season route takes the choice.
conventions.rituZodiac requiredstringWhich zodiac the season boundaries were measured in. This route always uses the default.
conventions.hemisphere requiredstringWhich half of the world the season name is stated for. This route always uses the default and never infers it from the latitude.
meta requiredobjectScope of the response.
meta.disclaimer requiredstringThe 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.
Example response
{
  "date": "2026-06-21",
  "sunrise": "2026-06-21T03:43:12.000Z",
  "sunset": "2026-06-21T20:21:30.000Z",
  "brahmaMuhurta": {
    "start": "2026-06-21T02:07:12.000Z",
    "end": "2026-06-21T02:55:12.000Z"
  },
  "doshaPeriods": [
    {
      "dosha": "kapha",
      "start": "2026-06-21T03:43:12.000Z",
      "end": "2026-06-21T09:05:44.000Z",
      "span": "day"
    }
  ],
  "ritu": {
    "id": "grisma",
    "sanskritName": "grīṣma",
    "gloss": "summer",
    "start": "2026-04-20T01:39:12.000Z",
    "end": "2026-06-21T14:24:36.000Z",
    "ayana": "uttarayana",
    "phase": "adana",
    "strength": "lowest",
    "tasteIncreasing": "katu"
  },
  "doshaCycle": [
    {
      "dosha": "kapha",
      "state": "settling"
    }
  ],
  "summary": "The day sits in grisma, and pitta holds the part of it this reading was taken in.",
  "sources": [
    {
      "text": "Brihat Jataka",
      "chapter": "18",
      "verse": "note to 20, the Satyacharya extract",
      "translation": "N. Chidambaram Iyer",
      "year": 1885,
      "publicDomain": true,
      "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
    }
  ],
  "conventions": {
    "doshaClock": "sunrise-anchored",
    "ritucharyaScheme": "sutrasthana-6",
    "rituZodiac": "sayana",
    "hemisphere": "northern"
  },
  "meta": {
    "disclaimer": "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."
  }
}

Try it

Not sent

List the three doshas - Dosha catalogue API

GET /api/v2/ayurveda/doshas

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.

Parameters

ParameterTypeDescription
lang querystring enumResponse 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. Default en.
limit queryintegerMaximum items to return per page. Range: 1-3, default 3. Default 3.
offset queryintegerNumber of items to skip for pagination. Default 0. Default 0.
curl
curl "https://roxyapi.com/api/v2/ayurveda/doshas" \
  -H "X-API-Key: YOUR_KEY"

Response fields

FieldTypeDescription
total requirednumberTotal number of doshas, which is always three.
limit requirednumberMaximum doshas returned in this page.
offset requirednumberNumber of doshas skipped before this page.
doshas requiredarray of objectThe doshas for this page, in the standing order the texts name them.
doshas[].id requiredstringThe 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.
doshas[].sanskritName requiredstringThe same name in the standard diacritic transliteration.
doshas[].devanagari requiredstringThe same name in Devanagari. Data, identical in every language.
doshas[].alsoCalled requiredarray of stringOther 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.
doshas[].element requiredstringThe single mahabhuta the classical verses give this dosha. Classically each dosha gets one element, not a pair.
doshas[].modernElementPair requiredstringThe 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.
doshas[].qualities requiredarray of stringThe 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.
doshas[].qualityGunas requiredarray of stringIdentifiers 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.
doshas[].seats requiredarray of stringWhere the dosha sits, in the requested language.
doshas[].specialSeat requiredstringThe seat the chapter singles out above the others.
Show all fieldsShow fewer fields
FieldTypeDescription
doshas[].seatsVariant requiredstringHow 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.
doshas[].functions requiredarray of stringWhat 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.
doshas[].subDoshas requiredarray of objectThe 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.
doshas[].subDoshas[].id requiredstringStable identifier for the sub-dosha. Always English-safe and lowercase, and never translated, so it is safe to compare against.
doshas[].subDoshas[].sanskritName requiredstringThe same name in the standard diacritic transliteration.
doshas[].subDoshas[].devanagari requiredstringThe same name in Devanagari. Data rather than a translation, so it is identical under every language.
doshas[].subDoshas[].seat requiredstringWhere the sub-dosha sits, in the requested language.
doshas[].subDoshas[].movesstringWhere 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.
doshas[].subDoshas[].function requiredstringWhat the sub-dosha does, in the requested language.
doshas[].subDoshas[].source requiredobjectWhere one claim in this response comes from.
doshas[].subDoshas[].source.text requiredstringTitle of the work the claim is taken from, as it should be cited.
doshas[].subDoshas[].source.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
doshas[].subDoshas[].source.verse requiredstringVerse 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".
doshas[].subDoshas[].source.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
doshas[].subDoshas[].source.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
doshas[].subDoshas[].source.publicDomain requiredbooleanWhether 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.
doshas[].subDoshas[].source.notestringA 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.
doshas[].states requiredobjectThe three states, as positions and qualities.
doshas[].states.balanced requiredstringThe even state, described as a position and a quality rather than as an absence of complaints.
doshas[].states.accumulating requiredstringThe first state of the seasonal cycle, described the same way.
doshas[].states.aggravated requiredstringThe second state of the seasonal cycle, described the same way.
doshas[].states.settlesWith requiredstringThe qualities that bring the dosha back to even, which is the like-increases-like rule applied in reverse.
doshas[].states.source requiredobjectWhere one claim in this response comes from.
doshas[].states.source.text requiredstringTitle of the work the claim is taken from, as it should be cited.
doshas[].states.source.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
doshas[].states.source.verse requiredstringVerse 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".
doshas[].states.source.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
doshas[].states.source.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
doshas[].states.source.publicDomain requiredbooleanWhether 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.
doshas[].states.source.notestringA 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.
doshas[].source requiredobjectWhere one claim in this response comes from.
doshas[].source.text requiredstringTitle of the work the claim is taken from, as it should be cited.
doshas[].source.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
doshas[].source.verse requiredstringVerse 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".
doshas[].source.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
doshas[].source.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
doshas[].source.publicDomain requiredbooleanWhether 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.
doshas[].source.notestringA 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.
sources requiredarray of objectEvery work behind this response, once each.
sources[].text requiredstringTitle of the work the claim is taken from, as it should be cited.
sources[].chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
sources[].verse requiredstringVerse 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".
sources[].translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
sources[].year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
sources[].publicDomain requiredbooleanWhether 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.
sources[].notestringA 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.
meta requiredobjectScope of the response.
meta.disclaimer requiredstringThe 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.
Example response
{
  "total": 3,
  "limit": 3,
  "offset": 0,
  "doshas": [
    {
      "id": "vata",
      "sanskritName": "vāta",
      "devanagari": "वात",
      "alsoCalled": [
        "vāyu",
        "anila"
      ],
      "element": "vayu, air",
      "modernElementPair": "air with ether",
      "qualities": [
        "ruksa, dry",
        "laghu, light"
      ],
      "qualityGunas": [
        "ruksha",
        "laghu"
      ],
      "seats": [
        "the colon",
        "the hips"
      ],
      "specialSeat": "the colon",
      "seatsVariant": "Charaka Sutrasthana 20.8 names the bladder and the feet where this chapter names the ear and the organ of touch.",
      "functions": [
        "upholds the structure and the working of the body",
        "impels speech"
      ],
      "subDoshas": [
        {
          "id": "prana",
          "sanskritName": "prāṇa",
          "devanagari": "प्राण",
          "seat": "the head",
          "moves": "the chest and the throat",
          "function": "upholds the intellect, the heart, the senses and the mind, and carries out spitting, sneezing, belching, the inward breath and the swallowing of food",
          "source": {
            "text": "Brihat Jataka",
            "chapter": "18",
            "verse": "note to 20, the Satyacharya extract",
            "translation": "N. Chidambaram Iyer",
            "year": 1885,
            "publicDomain": true,
            "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
          }
        }
      ],
      "states": {
        "balanced": "even, and staying within its own seat, with nothing disturbed",
        "accumulating": "increasing within its own seat, with an aversion to more of its own qualities and a wish for the opposite ones",
        "aggravated": "moving beyond its own seat, with dryness, lightness and movement conspicuous",
        "settlesWith": "unctuous, heavy, warm, smooth and stable qualities",
        "source": {
          "text": "Brihat Jataka",
          "chapter": "18",
          "verse": "note to 20, the Satyacharya extract",
          "translation": "N. Chidambaram Iyer",
          "year": 1885,
          "publicDomain": true,
          "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
        }
      },
      "source": {
        "text": "Brihat Jataka",
        "chapter": "18",
        "verse": "note to 20, the Satyacharya extract",
        "translation": "N. Chidambaram Iyer",
        "year": 1885,
        "publicDomain": true,
        "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
      }
    }
  ],
  "sources": [
    {
      "text": "Brihat Jataka",
      "chapter": "18",
      "verse": "note to 20, the Satyacharya extract",
      "translation": "N. Chidambaram Iyer",
      "year": 1885,
      "publicDomain": true,
      "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
    }
  ],
  "meta": {
    "disclaimer": "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."
  }
}

Try it

Not sent

Get one dosha - Vata pitta kapha profile API

GET /api/v2/ayurveda/doshas/{id}

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.

Parameters

ParameterTypeDescription
id required pathstring enumDosha identifier, case-insensitive. One of vata, pitta or kapha.
lang querystring enumResponse 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. Default en.
curl
curl "https://roxyapi.com/api/v2/ayurveda/doshas/vata" \
  -H "X-API-Key: YOUR_KEY"

Response fields

FieldTypeDescription
dosha requiredobjectOne dosha with its qualities, seats, pentad and states.
dosha.id requiredstringThe 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.
dosha.sanskritName requiredstringThe same name in the standard diacritic transliteration.
dosha.devanagari requiredstringThe same name in Devanagari. Data, identical in every language.
dosha.alsoCalled requiredarray of stringOther 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.
dosha.element requiredstringThe single mahabhuta the classical verses give this dosha. Classically each dosha gets one element, not a pair.
dosha.modernElementPair requiredstringThe 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.
dosha.qualities requiredarray of stringThe 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.
dosha.qualityGunas requiredarray of stringIdentifiers 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.
dosha.seats requiredarray of stringWhere the dosha sits, in the requested language.
dosha.specialSeat requiredstringThe seat the chapter singles out above the others.
dosha.seatsVariant requiredstringHow 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.
dosha.functions requiredarray of stringWhat 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.
dosha.subDoshas requiredarray of objectThe 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.
Show all fieldsShow fewer fields
FieldTypeDescription
dosha.subDoshas[].id requiredstringStable identifier for the sub-dosha. Always English-safe and lowercase, and never translated, so it is safe to compare against.
dosha.subDoshas[].sanskritName requiredstringThe same name in the standard diacritic transliteration.
dosha.subDoshas[].devanagari requiredstringThe same name in Devanagari. Data rather than a translation, so it is identical under every language.
dosha.subDoshas[].seat requiredstringWhere the sub-dosha sits, in the requested language.
dosha.subDoshas[].movesstringWhere 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.
dosha.subDoshas[].function requiredstringWhat the sub-dosha does, in the requested language.
dosha.subDoshas[].source requiredobjectWhere one claim in this response comes from.
dosha.subDoshas[].source.text requiredstringTitle of the work the claim is taken from, as it should be cited.
dosha.subDoshas[].source.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
dosha.subDoshas[].source.verse requiredstringVerse 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".
dosha.subDoshas[].source.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
dosha.subDoshas[].source.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
dosha.subDoshas[].source.publicDomain requiredbooleanWhether 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.
dosha.subDoshas[].source.notestringA 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.
dosha.states requiredobjectThe three states, as positions and qualities.
dosha.states.balanced requiredstringThe even state, described as a position and a quality rather than as an absence of complaints.
dosha.states.accumulating requiredstringThe first state of the seasonal cycle, described the same way.
dosha.states.aggravated requiredstringThe second state of the seasonal cycle, described the same way.
dosha.states.settlesWith requiredstringThe qualities that bring the dosha back to even, which is the like-increases-like rule applied in reverse.
dosha.states.source requiredobjectWhere one claim in this response comes from.
dosha.states.source.text requiredstringTitle of the work the claim is taken from, as it should be cited.
dosha.states.source.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
dosha.states.source.verse requiredstringVerse 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".
dosha.states.source.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
dosha.states.source.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
dosha.states.source.publicDomain requiredbooleanWhether 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.
dosha.states.source.notestringA 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.
dosha.source requiredobjectWhere one claim in this response comes from.
dosha.source.text requiredstringTitle of the work the claim is taken from, as it should be cited.
dosha.source.chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
dosha.source.verse requiredstringVerse 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".
dosha.source.translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
dosha.source.year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
dosha.source.publicDomain requiredbooleanWhether 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.
dosha.source.notestringA 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.
sources requiredarray of objectEvery work behind this response, once each.
sources[].text requiredstringTitle of the work the claim is taken from, as it should be cited.
sources[].chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
sources[].verse requiredstringVerse 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".
sources[].translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
sources[].year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
sources[].publicDomain requiredbooleanWhether 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.
sources[].notestringA 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.
meta requiredobjectScope of the response.
meta.disclaimer requiredstringThe 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.
Example response
{
  "dosha": {
    "id": "vata",
    "sanskritName": "vāta",
    "devanagari": "वात",
    "alsoCalled": [
      "vāyu",
      "anila"
    ],
    "element": "vayu, air",
    "modernElementPair": "air with ether",
    "qualities": [
      "ruksa, dry",
      "laghu, light"
    ],
    "qualityGunas": [
      "ruksha",
      "laghu"
    ],
    "seats": [
      "the colon",
      "the hips"
    ],
    "specialSeat": "the colon",
    "seatsVariant": "Charaka Sutrasthana 20.8 names the bladder and the feet where this chapter names the ear and the organ of touch.",
    "functions": [
      "upholds the structure and the working of the body",
      "impels speech"
    ],
    "subDoshas": [
      {
        "id": "prana",
        "sanskritName": "prāṇa",
        "devanagari": "प्राण",
        "seat": "the head",
        "moves": "the chest and the throat",
        "function": "upholds the intellect, the heart, the senses and the mind, and carries out spitting, sneezing, belching, the inward breath and the swallowing of food",
        "source": {
          "text": "Brihat Jataka",
          "chapter": "18",
          "verse": "note to 20, the Satyacharya extract",
          "translation": "N. Chidambaram Iyer",
          "year": 1885,
          "publicDomain": true,
          "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
        }
      }
    ],
    "states": {
      "balanced": "even, and staying within its own seat, with nothing disturbed",
      "accumulating": "increasing within its own seat, with an aversion to more of its own qualities and a wish for the opposite ones",
      "aggravated": "moving beyond its own seat, with dryness, lightness and movement conspicuous",
      "settlesWith": "unctuous, heavy, warm, smooth and stable qualities",
      "source": {
        "text": "Brihat Jataka",
        "chapter": "18",
        "verse": "note to 20, the Satyacharya extract",
        "translation": "N. Chidambaram Iyer",
        "year": 1885,
        "publicDomain": true,
        "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
      }
    },
    "source": {
      "text": "Brihat Jataka",
      "chapter": "18",
      "verse": "note to 20, the Satyacharya extract",
      "translation": "N. Chidambaram Iyer",
      "year": 1885,
      "publicDomain": true,
      "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
    }
  },
  "sources": [
    {
      "text": "Brihat Jataka",
      "chapter": "18",
      "verse": "note to 20, the Satyacharya extract",
      "translation": "N. Chidambaram Iyer",
      "year": 1885,
      "publicDomain": true,
      "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
    }
  ],
  "meta": {
    "disclaimer": "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."
  }
}

Try it

Not sent

List the six tastes - Ayurveda rasa and dosha matrix API

GET /api/v2/ayurveda/tastes

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.

Parameters

ParameterTypeDescription
lang querystring enumResponse 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. Default en.
limit queryintegerMaximum items to return per page. Range: 1-6, default 6. Default 6.
offset queryintegerNumber of items to skip for pagination. Default 0. Default 0.
curl
curl "https://roxyapi.com/api/v2/ayurveda/tastes" \
  -H "X-API-Key: YOUR_KEY"

Response fields

FieldTypeDescription
total requirednumberTotal number of tastes, which is always six.
limit requirednumberMaximum tastes returned in this page.
offset requirednumberNumber of tastes skipped before this page.
strengthOrder requiredarray of stringThe 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 requiredarray of objectThe tastes for this page, in the order the root verse names them.
rasas[].id requiredstringThe 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.
rasas[].sanskritName requiredstringThe same name in the standard diacritic transliteration.
rasas[].devanagari requiredstringThe same name in Devanagari. Data, identical in every language.
rasas[].textForm requiredstringThe 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.
rasas[].english requiredstringThe taste in the requested language. This is the gloss and it does translate.
rasas[].elements requiredarray of stringThe 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.
rasas[].decreases requiredarray of stringThe 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.
rasas[].increases requiredarray of stringThe doshas this taste raises, as Sanskrit identifiers.
matrix requiredobjectThe 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.
Show all fieldsShow fewer fields
FieldTypeDescription
sources requiredarray of objectEvery work behind this response, once each.
sources[].text requiredstringTitle of the work the claim is taken from, as it should be cited.
sources[].chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
sources[].verse requiredstringVerse 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".
sources[].translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
sources[].year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
sources[].publicDomain requiredbooleanWhether 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.
sources[].notestringA 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.
meta requiredobjectScope of the response.
meta.disclaimer requiredstringThe 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.
Example response
{
  "total": 6,
  "limit": 6,
  "offset": 0,
  "strengthOrder": [
    "madhura",
    "amla"
  ],
  "rasas": [
    {
      "id": "madhura",
      "sanskritName": "madhura",
      "devanagari": "मधुर",
      "textForm": "svādu",
      "english": "sweet",
      "elements": [
        "ap, water"
      ],
      "decreases": [
        "vata",
        "pitta"
      ],
      "increases": [
        "kapha"
      ]
    }
  ],
  "matrix": {
    "vata": {
      "decreasedBy": [
        "madhura",
        "amla"
      ],
      "increasedBy": [
        "tikta",
        "katu"
      ]
    }
  },
  "sources": [
    {
      "text": "Brihat Jataka",
      "chapter": "18",
      "verse": "note to 20, the Satyacharya extract",
      "translation": "N. Chidambaram Iyer",
      "year": 1885,
      "publicDomain": true,
      "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
    }
  ],
  "meta": {
    "disclaimer": "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."
  }
}

Try it

Not sent

List the twenty qualities - Ayurveda guna pairs API

GET /api/v2/ayurveda/qualities

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.

Parameters

ParameterTypeDescription
lang querystring enumResponse 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. Default en.
limit queryintegerMaximum items to return per page. Range: 1-10, default 10. Default 10.
offset queryintegerNumber of items to skip for pagination. Default 0. Default 0.
curl
curl "https://roxyapi.com/api/v2/ayurveda/qualities" \
  -H "X-API-Key: YOUR_KEY"

Response fields

FieldTypeDescription
total requirednumberTotal number of pairs, which is always ten, covering twenty qualities.
limit requirednumberMaximum pairs returned in this page.
offset requirednumberNumber of pairs skipped before this page.
rule requiredstringThe 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 requiredarray of objectThe 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.
pairs[].number requirednumberPosition of the pair, 1 to 10, in the order the root verse names the first member of each.
pairs[].a requiredobjectOne of the twenty qualities.
pairs[].a.id requiredstringThe quality as a Sanskrit identifier. Never translated, so it stays safe to compare against and joins straight to the qualityGunas array on each dosha.
pairs[].a.sanskritName requiredstringThe same name in the standard diacritic transliteration.
pairs[].a.english requiredstringThe quality in the requested language. This is the gloss and it does translate.
pairs[].a.action requiredstringWhat 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.
pairs[].a.actionSanskrit requiredstringThe same action word in Sanskrit. Data rather than a translation, so a reader can find the clause it comes from.
pairs[].a.doshas requiredarray of stringWhich 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.
pairs[].b requiredobjectOne of the twenty qualities.
Show all fieldsShow fewer fields
FieldTypeDescription
pairs[].b.id requiredstringThe quality as a Sanskrit identifier. Never translated, so it stays safe to compare against and joins straight to the qualityGunas array on each dosha.
pairs[].b.sanskritName requiredstringThe same name in the standard diacritic transliteration.
pairs[].b.english requiredstringThe quality in the requested language. This is the gloss and it does translate.
pairs[].b.action requiredstringWhat 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.
pairs[].b.actionSanskrit requiredstringThe same action word in Sanskrit. Data rather than a translation, so a reader can find the clause it comes from.
pairs[].b.doshas requiredarray of stringWhich 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.
pairs[].notestringA 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.
sources requiredarray of objectEvery work behind this response, once each.
sources[].text requiredstringTitle of the work the claim is taken from, as it should be cited.
sources[].chapter requiredstringChapter or sthana, as printed in that edition. Use it with the verse to find the passage in any copy.
sources[].verse requiredstringVerse 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".
sources[].translation requiredstringnullThe named translator, or null where the English shipped here was written from the Sanskrit because no public-domain translation of that work exists.
sources[].year requirednumbernullPublication year of the named translation, or null where no translation is cited. Use it with publicDomain to judge what may be quoted.
sources[].publicDomain requiredbooleanWhether 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.
sources[].notestringA 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.
meta requiredobjectScope of the response.
meta.disclaimer requiredstringThe 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.
Example response
{
  "total": 10,
  "limit": 10,
  "offset": 0,
  "rule": "Increase of all things comes about through what is alike, and the reverse through what is opposite.",
  "pairs": [
    {
      "number": 1,
      "a": {
        "id": "guru",
        "sanskritName": "guru",
        "english": "heavy",
        "action": "building up",
        "actionSanskrit": "bṛṃhaṇa",
        "doshas": [
          "kapha"
        ]
      },
      "b": {
        "id": "guru",
        "sanskritName": "guru",
        "english": "heavy",
        "action": "building up",
        "actionSanskrit": "bṛṃhaṇa",
        "doshas": [
          "kapha"
        ]
      },
      "note": "The two commentaries name this member differently: cala here, sara in the other."
    }
  ],
  "sources": [
    {
      "text": "Brihat Jataka",
      "chapter": "18",
      "verse": "note to 20, the Satyacharya extract",
      "translation": "N. Chidambaram Iyer",
      "year": 1885,
      "publicDomain": true,
      "note": "Chapter 18, not 19: the running head on the printed pages reads CH. 19."
    }
  ],
  "meta": {
    "disclaimer": "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."
  }
}

Try it

Not sent