Citiwise Check API

The Check API from Citiwise — 1 operation(s) for check.

Operations 1

POST /api/check Check a proposed building against UDCPR #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/citiwise-in:citiwise-in-check-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

citiwise-in-check-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Citiwise Check API
  version: '1.40'
  description: Citiwise tells what UDCPR 2020 allows on a plot in Maharashtra wherever the regulations apply, which is outside Greater Mumbai and the other areas regulation 1.1(i) leaves out. It gives the FSI and built-up area, the margin on every side, the height, the building that fits, parking and approvals, each with its UDCPR clause. No sign-in is needed. Every feasibility answer includes a plain-language summary and links to the report and its PDF to hand to the user. A field the call does not read is listed in the answer under ignored, not refused. This is a feasibility assessment only; the planning authority decides.
  contact:
    email: hello@citiwise.in
    url: https://citiwise.in/connect
  termsOfService: https://citiwise.in/terms
servers:
- url: https://citiwise.in
tags:
- name: Check
paths:
  /api/check:
    post:
      operationId: checkDesign
      summary: Check a proposed building against UDCPR
      description: Use this when someone has a proposed building on a plot in Maharashtra and wants to know whether it meets UDCPR. Checks a proposal's built-up, height and margins (one per side, in side order) against UDCPR, with allowed, proposed and pass or fail per item.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                town:
                  type: string
                  maxLength: 80
                  description: Maharashtra town, city or planning authority, e.g. Pune, Kolhapur, Nashik, PMRDA
                area:
                  type: number
                  description: 'plot area as the user gave it, in m2 unless area_unit says sqft, guntha, acre or hectare: the least of 7/12, measurement sheet and site'
                road:
                  type: number
                  description: width of the road in front, in m unless road_unit is ft, when there is one road and no sides
                area_unit:
                  type: string
                  enum:
                  - m2
                  - sqft
                  - guntha
                  - acre
                  - hectare
                  description: unit of area, road_widening and reservation as the user gave them; default m2. Citiwise converts and says so in units
                road_unit:
                  type: string
                  enum:
                  - m
                  - ft
                  description: unit of road and of each road side's width as the user gave them; default m
                sides:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - road
                        - plot
                        - open
                        - nallah
                        - river
                        - rail
                        - shared
                      width:
                        type: number
                        minimum: 0
                        description: DP road width in m, for roads
                      length:
                        type: number
                        minimum: 0
                        maximum: 100000.0
                      name:
                        type: string
                        maxLength: 40
                        description: label, e.g. south
                      side:
                        type: integer
                        minimum: 1
                        maximum: 64
                        description: 'for a curved or many-pointed side drawn as several segments: the side number each segment belongs to, the same on every segment of that side'
                      corner:
                        type: boolean
                        description: 'true for the rounding or cut where two roads meet (3.3.12): margins run from it, but it is not a road of its own'
                    required:
                    - type
                  maxItems: 64
                  description: every side, anticlockwise, starting at a road
                zone:
                  type: string
                  enum:
                  - nc
                  - c
                  description: nc non-congested, c congested (gaothan)
                land_use:
                  type: string
                  enum:
                  - res
                  - com
                  - ind
                  - psp
                  - agr
                  - tt
                  - gb
                  - loom
                  - park
                  - tourism
                  - afforest
                  - hilltop
                  - green2
                  - forest
                  - defence
                  - mines
                  - utility
                  - woodland
                  - sez
                  - airport
                  description: 'the zone on the development or regional plan: residential, commercial, industrial, public / semi-public, agricultural, transport, green belt, loom industry cum residential (4.9), regional park (4.14), tourism development (4.15), afforestation (4.16), hill top (4.17), green zone 2 (4.18), forest, defence, mines and quarry, public utility, woodland corridor, special economic zone, airport (4.19 to 4.25)'
                road_widening:
                  type: number
                  description: area of the plot under DP road widening, in the unit of area
                  minimum: 0
                  maximum: 100000000.0
                reservation:
                  type: number
                  description: area of the plot under a DP reservation, in the unit of area
                  minimum: 0
                  maximum: 100000000.0
                handed_over:
                  type: boolean
                  description: the road widening and reservation land is handed over to the Authority, for its development rights (11.2.4); default true
                stilt:
                  type: boolean
                  description: parking on a stilt floor, left out of the FSI; default false
                ground_height:
                  type: number
                  description: height of the ground or stilt floor, m
                  minimum: 2
                  maximum: 10
                floor_height:
                  type: number
                  description: height of each upper floor, m
                  minimum: 2
                  maximum: 10
                basements:
                  type: integer
                  minimum: 0
                  maximum: 5
                  description: levels of basement, for parking and services (9.11)
                basement_flush:
                  type: boolean
                  description: 'basement top flush with the ground: it may then run into the side and rear margins (9.11.1 proviso i)'
                units:
                  type: array
                  maxItems: 12
                  items:
                    type: object
                    required:
                    - type
                    - carpet
                    properties:
                      type:
                        type: string
                        description: 'label of up to 20 characters: 1 BHK, 2 BHK, Studio, Shop, Office'
                      count:
                        type: integer
                        description: units of this type, 0 to 10000; leave out to work it out
                      per_floor:
                        type: integer
                        description: 'instead of count: units of this type on each typical floor, 0 to 200, repeated on every floor that carries units'
                      carpet:
                        type: number
                        description: carpet area of one unit, m2, 10 to 2000
                      share:
                        type: number
                        description: 'with count left out: this type''s share of the carpet area, 0 to 1 or a percentage'
                      share_of_units:
                        type: number
                        description: 'with count left out: this type''s share of the units, as a developer gives a mix (60 for 60% 2 BHK), 0 to 1 or a percentage; the number of units is worked out from the building'
                  description: the unit mix, one entry per type, e.g. [{"type":"2 BHK","count":12,"carpet":60},{"type":"Shop","count":4,"carpet":25}]; parking takes each type in its own Table 8-B row; a count left out is worked out from the building
                wings:
                  type: array
                  maxItems: 12
                  items:
                    type: object
                    required:
                    - name
                    - units
                    properties:
                      name:
                        type: string
                        description: 'the wing''s name, up to 12 characters: A, B, Tower 1'
                      floors:
                        type: integer
                        description: floors of this wing that carry units, 1 to 60; left out, those of the building that fits
                      units:
                        type: array
                        items:
                          type: object
                          required:
                          - type
                          - per_floor
                          properties:
                            type:
                              type: string
                              description: one of the types in units
                            per_floor:
                              type: integer
                              description: units of that type on this wing's typical floor, 0 to 200
                  description: a group housing project as wings, each with its own typical floor and floors; units then gives each type and its carpet only. Returns each wing's height, lifts, special building and the distance between wings (6.2.4), and the built-up the wings need against what the rules allow
                flats:
                  type: integer
                  description: number of flats; with carpet, a one-type unit mix
                  minimum: 1
                  maximum: 1000000.0
                carpet:
                  type: number
                  minimum: 0
                  maximum: 100000000.0
                  description: carpet area of a flat, m2
                polygon:
                  type: array
                  items:
                    type: array
                    items:
                      type: number
                      minimum: -100000.0
                      maximum: 100000.0
                    maxItems: 2
                  maxItems: 64
                  description: plot corners [x, y] in m, anticlockwise, one per side, side 1 first; needed for plots that are not rectangles
                sprinklers:
                  type: boolean
                  description: 'mixed building fully sprinklered with the travel distances kept: under the 1.3(93)(xiv) note it stays out of the special building rules up to 24 m with floors up to 750 m², subject to fire NOC'
                avoid_special:
                  type: boolean
                  description: 'true: keep the building out of the special building rules (1.3(93)(xiv)): no higher than 24 m, and for the uses the floor area reaches, each floor below 500 m² (750 m² for a sprinklered mixed building). Either way, special_choice sets the building kept out beside the special building, with what the special building brings'
                power_line_kv:
                  type: number
                  minimum: 0
                  maximum: 1200
                  description: voltage of an overhead line near the plot, kV, for its clearance
                tod:
                  type: boolean
                  description: 'plot inside a TOD zone (14.2): Municipal Corporations, metropolitan authorities and CIDCO; the Nagpur Metro Rail Corridor by Table 14-P'
                gaothan_belt:
                  type: boolean
                  description: a Regional Plan village plot in the agricultural zone, within the belt around the gaothan or a town where 5.1.1 permits residential development, on a premium of a share of the land's ASR rate
                reservation_type:
                  type: string
                  enum:
                  - recreational
                  - education
                  - commercial
                  - health
                  - transport
                  - bus_stand
                  - truck_terminus
                  - residential
                  - assembly
                  - psp
                  - other
                  description: 'what the DP reservation on the plot is for; with ''reservation'', returns accommodation_reservation: developing it by its owner under 11.1, Table 11-A'
                access_length:
                  type: number
                  minimum: 0
                  maximum: 100000.0
                  description: 'the plot does not abut a public street: the length of the access way to it, m, measured to the street; ''road'' is then the access way''s width (3.2.2, 3.3.3)'
                layout_kind:
                  type: string
                  enum:
                  - plots
                  - group_housing
                  description: 'the land is laid out into plots, or developed as a group housing scheme; returns layout: the internal road widths of Tables 3A to 3C and what the layout carries (3.3, 3.4, 2.7.2)'
                internal_road_length:
                  type: number
                  minimum: 0
                  maximum: 100000.0
                  description: with layout_kind, the length of the longest internal road, m, from the farthest plot or building to the public street (3.3.3)
                existing_kind:
                  type: string
                  enum:
                  - society
                  - tenanted
                  - mhada_society
                  - mhada
                  - bungalow
                  description: 'what stands on the plot, for redevelopment (7.4, 7.5, 7.6): a co-operative society''s building, a tenanted building, a MHADA scheme building redeveloped by the society or by MHADA, or a bungalow; returns schemes with the figures'
                existing_built_up:
                  type: number
                  minimum: 0
                  maximum: 100000000.0
                  description: authorised built-up of the existing building, m², with its TDR and premium FSI (7.5, 7.6)
                existing_tenements:
                  type: integer
                  minimum: 0
                  maximum: 1000000.0
                  description: tenements in the existing building (7.4.2, 7.6)
                existing_carpet:
                  type: number
                  minimum: 0
                  maximum: 100000000.0
                  description: carpet area of the existing tenements together, m² (7.4.2, 7.6)
                slum_tenements:
                  type: integer
                  minimum: 0
                  maximum: 1000000.0
                  description: eligible hutments on the plot, for slum rehabilitation (14.6, 14.7)
                rc_rate:
                  type: number
                  minimum: 0
                  maximum: 10000000.0
                  description: the ASR rate of RCC construction, Rs a m², for the land rate to construction rate ratio of Tables 7-C to 7-E
                crz:
                  type: string
                  enum:
                  - I
                  - II
                  - III
                  description: 'the coastal regulation zone the plot is in: I (between the tide lines), II, or III within its No Development Zone. No TDR in the coastal zone (11.2.8(c)); development as the CRZ Notification allows (1.6(i))'
                flood_zone:
                  type: string
                  enum:
                  - prohibitive
                  - restrictive
                  description: 'the plot lies within the blue flood line (prohibitive: no construction, no TDR) or between the blue and red flood lines (restrictive: plinth above the red flood line) (3.1.3; 11.2.8(b))'
                specified_area:
                  type: string
                  maxLength: 40
                  description: 'Kolhapur: the characteristic specified area of Table 10-B (10.9.1) the plot is in, by Sr. No. (''1'' for Rajarampuri) or the area''s name; where the row has several plot sizes, Sr. No. and the plot row, e.g. ''3.2''. Sets the Table 10-B margins and coverage and the Note 1 basic FSI. Pune: ''koregaon_park'' (10.1.2). A Regional Plan area: an area of Chapter 5 with rules of its own, one of hill_station, station_near, station_far, tarapur, ratnagiri_pada, sindhudurg_t2, sindhudurg_t4, sindhudurg_t5, mp_buffer_edge, mp_buffer_gaothan, satara_core, satara_buffer, nagothane, wadi, rajpuri_usar, sector_r_lonavala, sector_r_kune, aurangabad_strip, ligo. Chapter 10 city areas, Pune: parvati_chatushrungi, arde, hemrl; Thane: ram_maruti, gokhale, express_highway, chemical_green_belt, chemical_low_density, air_force, defence_buffer, g1_yeur, g3_forest, eco_sensitive, defence_west_orange, defence_west_pink, defence_west_navy_blue, defence_west_yellow, defence_west_violet, defence_west_green, defence_east_orange, defence_east_pink, defence_east_yellow, defence_east_violet, defence_east_sky_blue; Nashik: tps1, gangapur_ambad; Vasai-Virar: low_density, eco_sensitive; Mira-Bhayandar: road_strip, manori_gorai_uttan, eco_sensitive; NMRDA: ring_road, township, gaothan_small, gaothan_large'
                road_widening_side:
                  type: integer
                  minimum: 1
                  maximum: 64
                  description: side number (1-based) that the road widening strip comes off; default the first road side
                plot_origin:
                  type: string
                  enum:
                  - layout
                  - unauthorised
                  - gunthewari
                  description: 'layout: sanctioned layout or sub-division; unauthorised: sub-divided after 11.01.1967 without permission; gunthewari: regularised under the Gunthewari Act'
                asr_rate:
                  type: number
                  minimum: 0
                  maximum: 10000000.0
                  description: land rate of the plot in the Annual Statement of Rates, Rs a m2; gives premiums in rupees and the DRC to debit
                sale_rate:
                  type: number
                  minimum: 0
                  maximum: 10000000.0
                  description: 'sale rate, Rs a sq ft of carpet area; with build_cost and tdr_rate gives an appraisal: sales value, construction, premiums, TDR and the surplus before land'
                build_cost:
                  type: number
                  minimum: 0
                  maximum: 10000000.0
                  description: construction cost, Rs a sq ft of built-up area
                tdr_rate:
                  type: number
                  minimum: 0
                  maximum: 10000000.0
                  description: price of TDR, Rs a sq ft
                measured:
                  type: boolean
                  description: 'true: the polygon is the plot as measured on site (draw_plot gives it so), drawn as it is; area, the least of the areas of Appendix A item 1, may then be smaller than the polygon. Without it the drawing is scaled to area'
                areas:
                  type: object
                  description: 'the three areas of Appendix A item 1, in m2, for the area statement: ownership (the 7/12 or property card), sheet (the measurement sheet of the Land Records) and site (by the measurements); area is the least of those given'
                  properties:
                    ownership:
                      type: number
                      minimum: 0
                      maximum: 100000000.0
                    sheet:
                      type: number
                      minimum: 0
                      maximum: 100000000.0
                    site:
                      type: number
                      minimum: 0
                      maximum: 100000000.0
                step_margins:
                  type: boolean
                  description: 'true: step margins on upper floors (6.2.3(c)): each floor keeps the side and rear margin its own height needs, so lower floors are larger; 6 m at the ground for a special building'
                green:
                  type: string
                  enum:
                  - silver
                  - gold
                  - platinum
                  description: 'green rating committed (IGBC / GRIHA / LEED tier) for the incentive FSI of 7.10 on basic FSI: 3%, 5% or 7%'
                steep_area:
                  type: number
                  minimum: 0
                  maximum: 100000000.0
                  description: 'm² of the plot steeper than 1 in 5: hill top and hill slope land, not built upon (3.1.1(iii); 4.2 (XIV))'
                allotted_basic:
                  type: number
                  minimum: 0
                  maximum: 100000000.0
                  description: for a plot of a plotted layout, the basic FSI area in m² the layout plan allots it (3.9(iii)), up to the most the plot may receive
                buy_premium:
                  type: boolean
                  description: 'false: the study is drawn without premium FSI (and without the Table 7-A higher FSI, which is taken on premium), on basic FSI, any TDR and the ancillary area; default true'
                buy_tdr:
                  type: boolean
                  description: 'false: the study is drawn without buying TDR, on basic and premium FSI with their ancillary area; default true. Either way, tdr_choice sets both side by side, with the most TDR is worth to this plot when sale_rate and build_cost are given'
                margin:
                  type: number
                  minimum: 0
                  maximum: 100
                  description: margin the developer needs, % of sales value; with the rates, gives what the land carries and the largest share of the flats for the landowner in a joint development
                other_costs:
                  type: number
                  minimum: 0
                  maximum: 100
                  description: other costs (fees, finance, marketing), % of construction and the stilt floor
                parking_cost:
                  type: number
                  minimum: 0
                  maximum: 10000000.0
                  description: construction cost of the stilt floor, Rs a sq ft; the stilt is free of FSI but built; default build_cost
                land_price:
                  type: number
                  minimum: 0
                  maximum: 1000000000000.0
                  description: asking price of the land when it is being bought, Rs for the whole plot; with the rates, gives the profit at that price and how far it sits from what the land carries
                jda_offer:
                  type: number
                  minimum: 0
                  maximum: 100
                  description: share of the flats a developer has offered the landowner in a joint development, %; with the rates, gives what the developer keeps at that share beside the share the plot carries
                prepared_for:
                  type: string
                  maxLength: 80
                  description: who the study is for, as it should appear on its cover, e.g. the landowner or client
                prepared_by:
                  type: string
                  maxLength: 80
                  description: who is giving the study, as it should appear on its cover, e.g. a broker or developer
                papers:
                  type: array
                  items:
                    type: string
                    enum:
                    - '712'
                    - sheet
                    - zone
                    - layout
                  description: 'the papers the facts were read from, when they were: 712 (the 7/12 extract or property card, for the area), sheet (the measurement sheet, for the sides and area), zone (the zone certificate or DP remark, for the zone, the road width, road widening and reservations), layout (the sanctioned layout or regularisation order). The study marks each fact as read from its paper or as told; no rule reads them'
                carpet_share:
                  type: number
                  description: carpet area as a share of the built-up, 0.3 to 0.95 or 30 to 95 (default 0.8); sets the unit counts left out and so the sales value
                tdr_generating_rate:
                  type: number
                  minimum: 0
                  maximum: 10000000.0
                  description: ASR land rate of the TDR's generating plot, Rs a m2 (11.2.6)
                use_carpet:
                  type: number
                  minimum: 0
                  maximum: 100000000.0
                  description: carpet area of a non-residential use, or of the shops below flats, m2, for its parking and water; default the built-up that fits
                rooms:
                  type: integer
                  minimum: 1
                  maximum: 1000000.0
                  description: guest rooms, for hotel parking and sanitation
                beds:
                  type: integer
                  minimum: 1
                  maximum: 1000000.0
                  description: 'beds: for hospitals, parking, water, sanitation and grey water; for hotels, water'
                seats:
                  type: integer
                  minimum: 1
                  maximum: 1000000.0
                  description: seats, for assembly parking
                bathrooms:
                  type: boolean
                  description: 'factories: whether bath-rooms are provided, for water (Table 12-A)'
                use:
                  type: string
                  enum:
                  - flats
                  - mix
                  - bung
                  - row
                  - shop
                  - office
                  - it
                  - hotel
                  - fuel
                  - school
                  - college
                  - hospital
                  - public
                  - assembly
                  - mangal
                  - parking
                  - warehouse
                  - factory
                  description: 'the use of the building: flats for flats; mix for flats with shops below; bung for a bungalow; row for row houses; shop for shops; office for offices; it for an IT building; hotel for a hotel; fuel for a fuel station; school for a school; college for a college; hospital for a hospital; public for a public building; assembly for a cinema, hall or mall; mangal for a mangal karyalaya; parking for a parking building; warehouse for a warehouse; factory for a factory'
                proposed:
                  type: object
                  properties:
                    built_up:
                      type: number
                      description: proposed built-up, m²
                      minimum: 0
                      maximum: 100000000.0
                    height:
                      type: number
                      description: proposed height, m
                      minimum: 0
                      maximum: 300
                    upper_floors:
                      type: integer
                      description: proposed floors above the ground or stilt
                      minimum: 0
                      maximum: 60
                    margins:
                      type: array
                      items:
                        type: number
                        minimum: 0
                        maximum: 100000.0
                      maxItems: 64
                      description: proposed margin on each side, m, in the order of sides (front first for one road)
                  description: the proposal; at least one of built_up, height, upper_floors or margins
              required:
              - town
              - area
              - use
              - proposed
      responses:
        '200':
          description: Allowed, proposed and pass or fail per item.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ignored:
                    type: array
                    items:
                      type: string
                    description: the fields of the request this call did not read, in the order given; present only when there are any
                  ignored_note:
                    type: string
                    description: the same in a sentence, with the API's name for a field the site calls otherwise (luz is land_use)
                additionalProperties: true
        '422':
          description: A fact is missing or not valid; the message says which.
      tags:
      - Check