Rice Kinder Institute Urban Data Platform API

The only publicly callable API Rice University itself operates. Serves the Kinder Institute for Urban Research's Urban Data Platform: a 431-dataset catalog of Houston and Harris County urban data across fourteen subject categories, with 27 controlled vocabularies, DataCite DOIs under Rice's own 10.25612 prefix, and typed inter-dataset relations drawn from the DataCite RelationType vocabulary. Reads are anonymous and CORS-open; a member-scoped catalog sits behind an undocumented authorizer. Rice publishes no documentation, no OpenAPI and no developer portal for it — the description in this repository was written from live probes on 2026-09-01 and is marked `method: probed`. Operator is institution despite the AWS hostname: the API's own suggestedCitation field names "Rice University-Kinder Institute: UDP", kinder.rice.edu endorses and links the platform, and its DOIs resolve to DataCite client RICE.KINDER under member `rice`.

Operations 5

GET /datasets List every publicly visible dataset in the catalog. #
GET /datasets/{datasetId} Retrieve the full catalog record for one dataset. #
GET /datasets/{datasetId}/vrde Retrieve the dataset record with its Virtual Research Data Environment location. #
GET /lookups Retrieve every controlled vocabulary the catalog uses. #
GET /user/catalog The signed-in member's view of the catalog. #

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/kinder-udp"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

rice-kinder-udp-openapi.yml Raw ↑
openapi: 3.1.0
# This artifact was generated by API Evangelist from live public probes on 2026-09-01. It is not published by Rice University and Rice did not author it.
# Rice publishes no OpenAPI for this or any other API.
info:
  title: Rice Kinder Institute Urban Data Platform API
  version: '2026-09-01'
  summary: Public read API behind the Kinder Institute Urban Data Platform dataset catalog.
  description: |
    The Urban Data Platform (UDP) is operated by the Kinder Institute for Urban Research at
    Rice University. It is the only institution-operated, publicly callable JSON API found on
    Rice's public surface: an AWS API Gateway fronting Lambda handlers that serve the
    platform's dataset catalog to the Vue single-page application at https://www.kinderudp.org/.

    THIS DOCUMENT IS NOT PUBLISHED BY RICE UNIVERSITY. Rice publishes no OpenAPI, no
    developer portal and no written reference for this API. Every path, parameter, response
    shape and status code below was recorded from live unauthenticated probes on 2026-09-01
    and is described exactly as observed, including the defects. Where behaviour is wrong
    (see /datasets/{datasetId} 200-on-error) it is documented as wrong, not corrected.

    Operator attribution: institution. The host is AWS infrastructure rather than a
    rice.edu name, so a hostname-only verdict cannot see this. It is Rice's own engineering
    on three independent signals — (1) the API's own `suggestedCitation` field names
    "Rice University-Kinder Institute: UDP" as the publisher, (2) Rice's Kinder Institute
    endorses and links the platform from its own domain at
    https://kinder.rice.edu/initiative/urban-data-platform, and (3) datasets carry DOIs under
    prefix 10.25612, a DataCite prefix registered to DataCite client RICE.KINDER
    ("Kinder Institute Urban Data Platform") under DataCite member `rice`
    ("Fondren Library, Rice University", ROR https://ror.org/008zs3103).
  contact:
    name: Kinder Institute for Urban Research, Rice University
    url: https://kinder.rice.edu/initiative/urban-data-platform
  x-operator: institution
  x-provenance:
    generated: '2026-09-01'
    method: probed
    source: >-
      Live unauthenticated HTTP probes of
      https://lg4tooqkr1.execute-api.us-east-1.amazonaws.com/prod/ on 2026-09-01, plus the
      production base URL literal read from the platform's own JavaScript bundle at
      https://www.kinderudp.org/js/app.9647dfb4.js. No credentials were used and no access
      control was defeated; every endpoint described here answers an anonymous GET.
servers:
  - url: https://lg4tooqkr1.execute-api.us-east-1.amazonaws.com/prod
    description: Production API Gateway stage, read from the platform's own app bundle.
  - url: https://5l498ma30i.execute-api.us-east-1.amazonaws.com/dev
    description: >-
      Development stage, also named in the app bundle. Present for completeness; not probed
      and not intended for consumers.
    x-status: non-production
tags:
  - name: Datasets
    description: The public dataset catalog of the Urban Data Platform.
  - name: Reference
    description: Controlled vocabularies the catalog's fields draw from.
paths:
  /datasets:
    get:
      operationId: listDatasets
      tags: [Datasets]
      summary: List every publicly visible dataset in the catalog.
      description: >-
        Returns the full catalog as a single unpaginated JSON array. 431 dataset summaries
        (354,891 bytes) were returned on 2026-09-01. There is no observed pagination,
        filtering or query parameter — the client filters in the browser.
      security: []
      responses:
        '200':
          description: The complete catalog.
          headers:
            access-control-allow-origin:
              schema: { type: string, const: '*' }
              description: Observed as `*`; the catalog is readable cross-origin by any page.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DatasetSummary'
              examples:
                firstRecord:
                  externalValue: ../examples/rice-kinder-udp-datasets-example.json
  /datasets/{datasetId}:
    get:
      operationId: getDataset
      tags: [Datasets]
      summary: Retrieve the full catalog record for one dataset.
      security: []
      parameters:
        - name: datasetId
          in: path
          required: true
          description: The opaque 12-character catalog identifier, e.g. `g79ekp1m5xyq`.
          schema:
            type: string
            pattern: '^[a-z0-9]{12}$'
            examples: [g79ekp1m5xyq]
      responses:
        '200':
          description: >-
            The dataset record. NOTE — an unknown datasetId ALSO returns HTTP 200, with a
            raw AWS Lambda runtime error body instead of a record. See
            errors/rice-errors.yml. A client must inspect the body, not the status.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/DatasetDetail'
                  - $ref: '#/components/schemas/LambdaRuntimeError'
              examples:
                dataset:
                  externalValue: ../examples/rice-kinder-udp-dataset-detail-example.json
  /datasets/{datasetId}/vrde:
    get:
      operationId: getDatasetVrde
      tags: [Datasets]
      summary: Retrieve the dataset record with its Virtual Research Data Environment location.
      description: >-
        Same record as /datasets/{datasetId} plus `folderPathMulti`, the path at which the
        dataset is mounted inside the Kinder Institute's Virtual Research Data Environment
        (VRDE) for approved researchers.
      security: []
      parameters:
        - name: datasetId
          in: path
          required: true
          schema: { type: string, pattern: '^[a-z0-9]{12}$' }
      responses:
        '200':
          description: The dataset record with a VRDE folder path.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/DatasetDetail'
                  - type: object
                    properties:
                      folderPathMulti:
                        type: string
                        description: >-
                          VRDE mount path, of the form
                          'Inside VRDE- K:\Library\Harris\Environment\...'.
  /lookups:
    get:
      operationId: getLookups
      tags: [Reference]
      summary: Retrieve every controlled vocabulary the catalog uses.
      description: >-
        Returns 27 named enumerations in one object, including `dataciteRelationType`
        (the 27 DataCite RelationType terms), `iso19115TopicCategory` (the 19 ISO 19115
        topic categories) and `regulatoryLaws` (FERPA, FISMA, HIPAA, HUD, None). See
        vocabulary/rice-kinder-udp-vocabulary.yml.
      security: []
      responses:
        '200':
          description: The vocabulary bundle (5,339 bytes on 2026-09-01).
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items: { type: string }
              examples:
                lookups:
                  externalValue: ../examples/rice-kinder-udp-lookups-example.json
  /user/catalog:
    get:
      operationId: getUserCatalog
      tags: [Datasets]
      summary: The signed-in member's view of the catalog.
      description: >-
        Requires an authenticated platform member. Anonymous requests return 401
        `{"message":"Unauthorized"}`. The authentication scheme is not publicly documented;
        the app registers members at https://www.kinderudp.org/#/register. NOT PROBED
        beyond the anonymous 401 — no credentials were used.
      responses:
        '401':
          description: '`{"message":"Unauthorized"}` — observed for an anonymous request.'
          content:
            application/json:
              schema: { $ref: '#/components/schemas/AuthorizerError' }
components:
  securitySchemes:
    memberSession:
      type: http
      scheme: bearer
      description: >-
        Undocumented. Inferred only from the API Gateway authorizer's 401 envelope on
        /user/catalog. Not verified — no credentials were obtained or used.
  schemas:
    DatasetSummary:
      type: object
      description: One row of the public catalog listing.
      required: [id, udpName, category, accessRestriction, status, isInUdp]
      properties:
        id: { type: string, description: Opaque catalog identifier., examples: [g79ekp1m5xyq] }
        udpName: { type: string, description: Dataset title as curated by the UDP. }
        shortDescription: { type: [string, 'null'] }
        accessRestriction:
          type: string
          enum: ['Available to all members', 'Available to Affiliated Users Only', 'Authorization required']
        status:
          type: string
          description: Curation state; see the `status` lookup for the full 8-term enumeration.
        source: { type: [string, 'null'], description: Originating data provider, e.g. TCEQ, Census Bureau. }
        category:
          type: string
          enum: [Census/ACS, Crime, Economy, Education, Environment, Health, Housing, Infrastructure, Surveys, Land Use, Other, Reference, Resources, Tax Assessor]
        isGeocoded: { type: boolean }
        geoExtent: { type: [string, 'null'], description: Geographic coverage; see the `geoExtent` lookup (27 terms). }
        isInUdp: { type: boolean, description: Whether the data itself is loaded into the platform. }
        isDownloadable: { type: boolean }
        keywords: { type: [string, 'null'], description: Semicolon-delimited keyword string, not an array. }
        earliestDate: { type: [string, 'null'], format: date }
        latestDate: { type: [string, 'null'], format: date }
        specificYears: { type: [string, 'null'] }
        releaseDate: { type: [string, 'null'], format: date }
        lastModifiedDatetime: { type: [integer, 'null'], description: Epoch milliseconds. }
    DatasetDetail:
      allOf:
        - $ref: '#/components/schemas/DatasetSummary'
        - type: object
          properties:
            fullDescription: { type: [string, 'null'], description: HTML-bearing prose (contains <br> markup). }
            doi:
              type: [string, 'null']
              description: >-
                DataCite DOI. Observed values sit under prefix 10.25612, registered to
                DataCite client RICE.KINDER.
              examples: ['10.25612/837.16MO4PKRWM20']
            dataciteName: { type: [string, 'null'] }
            geoResolution: { type: [string, 'null'] }
            tabularResolution: { type: [string, 'null'] }
            updateFreq: { type: [string, 'null'] }
            versionNo: { type: [string, 'null'] }
            released: { type: [string, 'null'] }
            isInGdb: { type: [boolean, 'null'] }
            isHiddenFromPublic: { type: [boolean, 'null'] }
            originalDataCitation: { type: [string, 'null'] }
            paperCitation: { type: [string, 'null'] }
            suggestedCitation:
              type: [string, 'null']
              description: >-
                Citation string naming the publisher. Observed values name
                "Rice University-Kinder Institute: UDP" — the API's own attestation of its operator.
            relatedDatasets:
              type: array
              items:
                type: object
                properties:
                  relationType:
                    type: string
                    description: A DataCite RelationType term; see the `dataciteRelationType` lookup.
                  id: { type: string }
    LambdaRuntimeError:
      type: object
      description: >-
        A raw AWS Lambda runtime failure, returned with HTTP 200. This is a defect, recorded
        as observed. It is what an unknown datasetId produces.
      properties:
        errorMessage: { type: string }
        errorType: { type: string }
        requestId: { type: string }
        stackTrace: { type: array, items: { type: string } }
    AuthorizerError:
      type: object
      properties:
        message: { type: string, examples: [Unauthorized, 'Missing Authentication Token'] }
security: []