Room placement and score
curl -X POST https://api.astroway.info/v1/vastu/rooms \ -H "X-Api-Key: aw_live_..." \ -H "Content-Type: application/json" \ -d '{ "rooms": [ { "type": "kitchen", "direction": "SE" }, { "type": "master-bedroom", "bearing": 225 }, { "type": "toilet", "direction": "NE" } ] }'const res = await fetch('https://api.astroway.info/v1/vastu/rooms', { method: 'POST', headers: { 'X-Api-Key': process.env.ASTROWAY_API_KEY, 'Content-Type': 'application/json', }, body: JSON.stringify({ "rooms": [ { "type": "kitchen", "direction": "SE" }, { "type": "master-bedroom", "bearing": 225 }, { "type": "toilet", "direction": "NE" } ] }),});const { ok, data, error } = await res.json();if (!ok) throw new Error(error.message);console.log(data);import os, requests
r = requests.post( 'https://api.astroway.info/v1/vastu/rooms', headers={'X-Api-Key': os.environ['ASTROWAY_API_KEY'], 'Content-Type': 'application/json'}, json={ 'rooms': [ { 'type': "kitchen", 'direction': "SE" }, { 'type': "master-bedroom", 'bearing': 225 }, { 'type': "toilet", 'direction': "NE" } ] },)result = r.json()if not result['ok']: raise RuntimeError(result['error']['message'])print(result['data'])<?phpuse GuzzleHttp\Client;
$client = new Client(['base_uri' => 'https://api.astroway.info/v1/']);$r = $client->post('vastu/rooms', [ 'headers' => ['X-Api-Key' => getenv('ASTROWAY_API_KEY')], 'json' => [ 'rooms' => [[ 'type' => 'kitchen', 'direction' => 'SE', ], [ 'type' => 'master-bedroom', 'bearing' => 225, ], [ 'type' => 'toilet', 'direction' => 'NE', ]], ],]);$result = json_decode($r->getBody(), true);if (!$result['ok']) throw new \RuntimeException($result['error']['message']);print_r($result['data']);Up to 40 rooms by direction from the centre of the house (or a bearing from true north), each judged ideal, acceptable, avoid or no-rule, with whether a verse or modern practice stands behind it. The 0-100 score is a published weighted mean; no classical text defines one. Room types with no citable rule (dining, balcony, garage, overhead tank) are refused rather than guessed.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ”Comma-separated dotted paths, relative to data, to keep in the response. A path is applied to every element of an array, so planets.name means the name of each planet. Paths that match nothing come back in _fields_unmatched; a list where nothing matches at all is a 400, because an empty object would be a confident wrong answer.
Example
planets.name,planets.longitudeRound every non-integer number in the response to this many decimal places. Integers are left alone, because an id is not a measurement. Ecliptic longitudes ship with fourteen decimals by default; 2 is about a tenth of an arcminute.
Example
4Request Body required
Section titled “Request Body required ”Responses
Section titled “ Responses ”Successful calculation
object
object
object
object
object
object
Example
{ "ok": true, "data": { "rooms": [ { "type": "kitchen", "label": null, "placement": "SE", "verdict": "ideal", "basis": "classical", "ideal": [ "SE" ], "source": "Brihat Samhita, tr. N. Chidambaram Iyer (1884) 53.118: kitchen in the south-east. NW as second choice and N as avoided (fire against water) are modern practice" }, { "type": "master-bedroom", "label": null, "placement": "SW", "verdict": "ideal", "basis": "convention", "ideal": [ "SW" ], "source": "Modern practice; no verse places bedrooms" }, { "type": "toilet", "label": null, "placement": "NE", "verdict": "avoid", "basis": "convention", "ideal": [], "source": "Modern practice. Writers agree on never NE and never the centre, and split on where it should go (NW and W against the MahaVastu SSW and WNW), so no direction is marked ideal" } ], "score": 75, "scoring": { "points": { "ideal": 1, "acceptable": 0.5, "avoid": 0 }, "weights": { "classical": 2, "convention": 1 }, "formula": "round(100 * sum(weight * points) / sum(weight)) over rooms with a rule; null when none has one" }, "notes": [ "No classical text defines a Vastu score. This one is a weighted mean, published here so it can be checked or recomputed." ] }}Validation error
Example
{ "ok": false, "error": { "code": "INVALID_INPUT", "message": "Validation failed: date: Date must be YYYY-MM-DD", "details": [ { "path": "date", "message": "Date must be YYYY-MM-DD" } ] }}Missing or invalid API key
Example
{ "ok": false, "error": { "code": "INVALID_API_KEY", "message": "Invalid API key" }}