ROOK API

ROOK API as documented publicly: 6 operations. Contract generated from the documentation by API Evangelist (2026-10-14); not the provider's own document.

Operations 6

POST /api/v1/extraction_app/binding POST /api/v1/extraction_app/binding #
GET /api/v1/user_id/{userId}/data_source/{dataSource}/authorizer Returns the user’s authorization status and, if not authorized, an authorization URL to start the process. #
POST /api/v1/user_id/{userId}/data_sources/revoke_auth Revoke User Authorization #
POST /api/v2/user_profile POST /api/v2/user_profile #
POST /client_uuid/$ROOK_CLIENT_UUID/user_id/$USER_ID POST /client_uuid/$ROOK_CLIENT_UUID/user_id/$USER_ID #
POST /webhooks/rook Receive POST /webhooks/rook sleep_summary physical_summary heart_rate_event #

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/tryrook-io:tryrook-io-api"
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

tryrook-io-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: ROOK API
  version: '2026-10-14'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-14: 6 operation(s) read from 4 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; ROOK has published no machine-readable contract that the pipeline
    could find. Engine: local.'
  x-evidence-tiers:
    code-example: 3
    documentation: 3
    pages-with-code: 2
    pages-read: 4
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-10-14'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://docs.tryrook.io/docs/rookconnect/data-authorization
  - https://docs.tryrook.io/docs/rookconnect/add-ons
  - https://docs.tryrook.io/docs/ROOKExtractionApp/implementation
  - https://tryrook.io/rook-app
servers:
- url: https://api.rook-connect.com
paths:
  /api/v1/extraction_app/binding:
    post:
      operationId: post_api_v1_extraction_app_binding
      tags:
      - Api
      summary: POST /api/v1/extraction_app/binding
      x-source: https://docs.tryrook.io/docs/ROOKExtractionApp/implementation
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1ExtractionAppBindingRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1ExtractionAppBindingResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl --location ''https://api.rook-connect.review/api/v1/extraction_app/binding/'' \ --header ''Content-Type: application/json''
          \ --header ''User-Agent: <user_agent>'' \ --header ''Authorization: Basic <base64_encoded_credentials>'' \ --data ''{ "user_id": "user123",
          "metadata": { "client_name": "Your Company", "tyc_url": "https://example.com/terms", "support_url": "https://example.com/support", "complete'
  /api/v1/user_id/{userId}/data_source/{dataSource}/authorizer:
    get:
      operationId: get_api_v1_user_id_userId_data_source_dataSource_authorizer
      tags:
      - Api
      summary: Returns the user’s authorization status and, if not authorized, an authorization URL to start the process.
      x-source: https://docs.tryrook.io/docs/rookconnect/data-authorization
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: string
      - name: dataSource
        in: path
        required: true
        schema:
          type: string
      - name: redirect_url
        in: query
        required: false
        schema:
          type: string
        description: A custom URL for redirecting users after authorization.
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Basic {Base64Encoded(client_uuid:secret_key)}
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1UserIdUseridDataSourceDatasourceAuthorizerResponse'
      x-evidence:
        kind: documentation
  /api/v1/user_id/{userId}/data_sources/revoke_auth:
    post:
      operationId: post_api_v1_user_id_userId_data_sources_revoke_auth
      tags:
      - Api
      summary: Revoke User Authorization
      x-source: https://docs.tryrook.io/docs/rookconnect/data-authorization
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Basic {Base64Encoded(client_uuid:secret_key)}
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/v2/user_profile:
    post:
      operationId: post_api_v2_user_profile
      tags:
      - Api
      summary: POST /api/v2/user_profile
      x-source: https://docs.tryrook.io/docs/rookconnect/add-ons
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV2UserProfileResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST \\ \"https://api.rook-connect.com/api/v2/user_profile\" \\ -H \"Authorization: Basic <base64(client_uuid:password)>\"\
          \ \\ -H \"Content-Type: application/json\" \\ -d '{\"user_id\": \"user-12345\"}' \n The generated profile is not returned by the endpoint.\
          \ Results are delivered later through the configured Data Webhook. \n Response ​ \n If the request is valid, the endpoint returns an\
          \ HTTP 202 Accepted "
  /client_uuid/$ROOK_CLIENT_UUID/user_id/$USER_ID:
    post:
      operationId: post_client_uuid_ROOK_CLIENT_UUID_user_id_USER_ID
      tags:
      - Client Uuid
      summary: POST /client_uuid/$ROOK_CLIENT_UUID/user_id/$USER_ID
      x-source: https://docs.tryrook.io/docs/rookconnect/add-ons
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostClientUuidRookClientUuidUserIdUserIdResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST \\ \"https://api.lab.rook-connect.review/client_uuid/$ROOK_CLIENT_UUID/user_id/$USER_ID\" \\ -u \"$ROOK_CLIENT_UUID:$ROOK_SECRET_KEY\"\
          \ \\ -F \"file=@/path/to/laboratory_result.pdf\" \\ -F \"timezone=-05:00\" \n The example reads your client_uuid and secret_key from\
          \ the ROOK_CLIENT_UUID and ROOK_SECRET_KEY environment variables, so the credentials stay out of your source code and shell history.\
          \ The"
  /webhooks/rook:
    post:
      operationId: post_webhooks_rook
      tags:
      - Webhooks
      summary: Receive POST /webhooks/rook sleep_summary physical_summary heart_rate_event
      x-source: https://tryrook.io/rook-app
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
components:
  schemas:
    PostApiV1ExtractionAppBindingRequest:
      type: object
      properties:
        user_id:
          type: string
        metadata:
          type: object
          properties:
            client_name:
              type: string
            tyc_url:
              type: string
            support_url:
              type: string
            complete_log_out:
              type: boolean
        salt:
          type: string
    PostApiV1ExtractionAppBindingResponse:
      type: object
      properties:
        qr_code:
          type: string
        universal_link:
          type: string
    GetApiV1UserIdUseridDataSourceDatasourceAuthorizerResponse:
      type: object
      properties:
        data_source:
          type: string
          description: The data source name.
        authorized:
          type: boolean
          description: Authorization status.
        authorization_url:
          type: string
          description: URL to start the authorization flow (present when authorized is false).
    PostApiV2UserProfileResponse:
      type: object
      properties:
        message:
          type: string
        request_id:
          type: string
    PostClientUuidRookClientUuidUserIdUserIdResponse:
      type: object
      properties:
        document_id:
          type: string
        status:
          type: string
  securitySchemes:
    basic:
      type: http
      scheme: basic
security:
- basic: []
tags:
- name: Api
- name: Client Uuid
- name: Webhooks