ivive.app Ivivc API

The ivivc API from ivive.app — 6 operation(s) for ivivc.

GitHub OpenAPI

Operations 7

POST /api/ivivc/datasets Upload IVIVC dataset #
PATCH /api/ivivc/datasets/{dataset_id} Rename dataset #
GET /api/ivivc/models List IVIVC models #
POST /api/ivivc/models Fit IVIVC model #
GET /api/ivivc/models/{model_name} Get IVIVC model details #
POST /api/ivivc/models/{model_name}/predict Predict in vivo value #
GET /api/ivivc/models/{model_name}/plot Get plot data #

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/ivive-app:ivive-app-ivivc-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

ivive-app-ivivc-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ivive.app Ivivc API
  description: 'Calculations for early drug discovery: IVIVE hepatic clearance with its observed-CL band,

    structure-based predictions, species scaling.


    **No key needed** for single-compound endpoints, up to 120/minute per address.

    Batches need a login; a free account takes up to 25 compounds. For a key or more volume, write to

    hello@ivive.app.


    Results are research estimates, not for clinical, regulatory or dosing decisions. Structures and

    inputs are processed in memory and not stored. The same calculations are available to LLMs as an

    MCP server at `/mcp/`.


    Reference drugs and published animal PK come from public datasets, ChEMBL among them, under

    CC BY-SA 3.0 and other open licences: https://ivive.app/sources.'
  version: 1.0.0
servers:
- url: https://api.ivive.app
  description: Production
- url: /
  description: This server
tags:
- name: ivivc
paths:
  /api/ivivc/datasets:
    post:
      tags:
      - ivivc
      summary: Upload IVIVC dataset
      description: Upload a CSV file with paired in vitro/in vivo data. Parses, validates, and stores the dataset.
      operationId: upload_dataset_api_ivivc_datasets_post
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload_dataset_api_ivivc_datasets_post'
        required: true
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasetUploadResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - OAuth2PasswordBearer: []
  /api/ivivc/datasets/{dataset_id}:
    patch:
      tags:
      - ivivc
      summary: Rename dataset
      description: Rename an existing dataset by ID.
      operationId: rename_dataset_api_ivivc_datasets__dataset_id__patch
      security:
      - OAuth2PasswordBearer: []
      parameters:
      - name: dataset_id
        in: path
        required: true
        schema:
          type: string
          title: Dataset Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DatasetRenameRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasetRenameResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/ivivc/models:
    get:
      tags:
      - ivivc
      summary: List IVIVC models
      description: List all models for the current user, ordered by created_at DESC.
      operationId: list_models_api_ivivc_models_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ModelListItem'
                type: array
                title: Response List Models Api Ivivc Models Get
      security:
      - OAuth2PasswordBearer: []
    post:
      tags:
      - ivivc
      summary: Fit IVIVC model
      description: Fit a linear regression model to a dataset and store the result.
      operationId: fit_model_api_ivivc_models_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FitRequest'
        required: true
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FitResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - OAuth2PasswordBearer: []
  /api/ivivc/models/{model_name}:
    get:
      tags:
      - ivivc
      summary: Get IVIVC model details
      description: Get full details for a specific model by name.
      operationId: get_model_api_ivivc_models__model_name__get
      security:
      - OAuth2PasswordBearer: []
      parameters:
      - name: model_name
        in: path
        required: true
        schema:
          type: string
          title: Model Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModelDetail'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/ivivc/models/{model_name}/predict:
    post:
      tags:
      - ivivc
      summary: Predict in vivo value
      description: Predict in vivo value from in vitro using a stored model.
      operationId: predict_api_ivivc_models__model_name__predict_post
      security:
      - OAuth2PasswordBearer: []
      parameters:
      - name: model_name
        in: path
        required: true
        schema:
          type: string
          title: Model Name
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PredictRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PredictResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/ivivc/models/{model_name}/plot:
    get:
      tags:
      - ivivc
      summary: Get plot data
      description: Get training points and fitted curve for visualization.
      operationId: get_plot_api_ivivc_models__model_name__plot_get
      security:
      - OAuth2PasswordBearer: []
      parameters:
      - name: model_name
        in: path
        required: true
        schema:
          type: string
          title: Model Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlotResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    Body_upload_dataset_api_ivivc_datasets_post:
      properties:
        file:
          type: string
          format: binary
          title: File
        name:
          type: string
          maxLength: 255
          title: Name
        in_vitro_col:
          type: string
          title: In Vitro Col
        in_vivo_col:
          type: string
          title: In Vivo Col
        in_vitro_unit:
          anyOf:
          - type: string
          - type: 'null'
          title: In Vitro Unit
        in_vivo_unit:
          anyOf:
          - type: string
          - type: 'null'
          title: In Vivo Unit
        unit_override:
          type: boolean
          title: Unit Override
          default: false
        species:
          anyOf:
          - type: string
          - type: 'null'
          title: Species
        compound_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Compound Name
        formulation:
          anyOf:
          - type: string
          - type: 'null'
          title: Formulation
        source:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
      type: object
      required:
      - file
      - name
      - in_vitro_col
      - in_vivo_col
      title: Body_upload_dataset_api_ivivc_datasets_post
    PlotPoint:
      properties:
        x:
          type: number
          title: X
        y:
          type: number
          title: Y
        index:
          type: integer
          title: Index
        is_outlier:
          type: boolean
          title: Is Outlier
        compound_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Compound Name
        smiles:
          anyOf:
          - type: string
          - type: 'null'
          title: Smiles
      type: object
      required:
      - x
      - y
      - index
      - is_outlier
      title: PlotPoint
    FitRequest:
      properties:
        dataset_id:
          type: string
          title: Dataset Id
        model_name:
          type: string
          maxLength: 255
          title: Model Name
        species:
          type: string
          title: Species
        assay_type:
          anyOf:
          - type: string
          - type: 'null'
          title: Assay Type
        source:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
        units:
          anyOf:
          - type: string
          - type: 'null'
          title: Units
        method:
          anyOf:
          - type: string
          - type: 'null'
          title: Method
        remove_outliers:
          items:
            type: integer
          type: array
          title: Remove Outliers
      type: object
      required:
      - dataset_id
      - model_name
      - species
      title: FitRequest
    OutlierCandidate:
      properties:
        index:
          type: integer
          title: Index
        cook_distance:
          type: number
          title: Cook Distance
        compound_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Compound Name
        smiles:
          anyOf:
          - type: string
          - type: 'null'
          title: Smiles
      type: object
      required:
      - index
      - cook_distance
      title: OutlierCandidate
    PredictResponse:
      properties:
        model_name:
          type: string
          title: Model Name
        in_vitro_value:
          type: number
          title: In Vitro Value
        predicted_in_vivo:
          type: number
          title: Predicted In Vivo
        prediction_interval_lower:
          type: number
          title: Prediction Interval Lower
        prediction_interval_upper:
          type: number
          title: Prediction Interval Upper
        regulatory_warning:
          type: boolean
          title: Regulatory Warning
      type: object
      required:
      - model_name
      - in_vitro_value
      - predicted_in_vivo
      - prediction_interval_lower
      - prediction_interval_upper
      - regulatory_warning
      title: PredictResponse
    PredictRequest:
      properties:
        in_vitro_value:
          type: number
          title: In Vitro Value
      type: object
      required:
      - in_vitro_value
      title: PredictRequest
    CurvePoint:
      properties:
        x:
          type: number
          title: X
        y:
          type: number
          title: Y
      type: object
      required:
      - x
      - y
      title: CurvePoint
    ModelListItem:
      properties:
        model_id:
          type: string
          title: Model Id
        model_name:
          type: string
          title: Model Name
        dataset_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Dataset Id
        assay_type:
          anyOf:
          - type: string
          - type: 'null'
          title: Assay Type
        source:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
        species:
          anyOf:
          - type: string
          - type: 'null'
          title: Species
        slope:
          anyOf:
          - type: number
          - type: 'null'
          title: Slope
        intercept:
          anyOf:
          - type: number
          - type: 'null'
          title: Intercept
        r_squared:
          anyOf:
          - type: number
          - type: 'null'
          title: R Squared
        n_points:
          anyOf:
          - type: integer
          - type: 'null'
          title: N Points
        regulatory_warning:
          type: boolean
          title: Regulatory Warning
        created_at:
          type: string
          format: date-time
          title: Created At
      type: object
      required:
      - model_id
      - model_name
      - regulatory_warning
      - created_at
      title: ModelListItem
    DatasetRenameRequest:
      properties:
        name:
          type: string
          maxLength: 255
          title: Name
      type: object
      required:
      - name
      title: DatasetRenameRequest
    PlotResponse:
      properties:
        model_name:
          type: string
          title: Model Name
        training_points:
          items:
            $ref: '#/components/schemas/PlotPoint'
          type: array
          title: Training Points
        fitted_curve:
          items:
            $ref: '#/components/schemas/CurvePoint'
          type: array
          title: Fitted Curve
        x_range:
          $ref: '#/components/schemas/XRange'
        regulatory_warning:
          type: boolean
          title: Regulatory Warning
      type: object
      required:
      - model_name
      - training_points
      - fitted_curve
      - x_range
      - regulatory_warning
      title: PlotResponse
    DatasetMetadataSchema:
      properties:
        in_vitro_unit:
          type: string
          title: In Vitro Unit
        in_vivo_unit:
          type: string
          title: In Vivo Unit
        unit_source:
          type: string
          title: Unit Source
        species:
          anyOf:
          - type: string
          - type: 'null'
          title: Species
        compound_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Compound Name
        formulation:
          anyOf:
          - type: string
          - type: 'null'
          title: Formulation
        source:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
      type: object
      required:
      - in_vitro_unit
      - in_vivo_unit
      - unit_source
      title: DatasetMetadataSchema
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    FitResponse:
      properties:
        model_id:
          type: string
          title: Model Id
        model_name:
          type: string
          title: Model Name
        dataset_id:
          type: string
          title: Dataset Id
        assay_type:
          anyOf:
          - type: string
          - type: 'null'
          title: Assay Type
        source:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
        slope:
          type: number
          title: Slope
        intercept:
          type: number
          title: Intercept
        r_squared:
          type: number
          title: R Squared
        rmse:
          type: number
          title: Rmse
        p_value:
          type: number
          title: P Value
        slope_ci_lower:
          type: number
          title: Slope Ci Lower
        slope_ci_upper:
          type: number
          title: Slope Ci Upper
        intercept_ci_lower:
          type: number
          title: Intercept Ci Lower
        intercept_ci_upper:
          type: number
          title: Intercept Ci Upper
        n_points:
          type: integer
          title: N Points
        outlier_indices:
          items:
            type: integer
          type: array
          title: Outlier Indices
        regulatory_warning:
          type: boolean
          title: Regulatory Warning
        species:
          type: string
          title: Species
        units:
          anyOf:
          - type: string
          - type: 'null'
          title: Units
        method:
          anyOf:
          - type: string
          - type: 'null'
          title: Method
        created_at:
          type: string
          format: date-time
          title: Created At
        outlier_candidates:
          items:
            $ref: '#/components/schemas/OutlierCandidate'
          type: array
          title: Outlier Candidates
      type: object
      required:
      - model_id
      - model_name
      - dataset_id
      - slope
      - intercept
      - r_squared
      - rmse
      - p_value
      - slope_ci_lower
      - slope_ci_upper
      - intercept_ci_lower
      - intercept_ci_upper
      - n_points
      - outlier_indices
      - regulatory_warning
      - species
      - created_at
      - outlier_candidates
      title: FitResponse
    XRange:
      properties:
        min:
          type: number
          title: Min
        max:
          type: number
          title: Max
      type: object
      required:
      - min
      - max
      title: XRange
    DatasetRenameResponse:
      properties:
        dataset_id:
          type: string
          title: Dataset Id
        name:
          type: string
          title: Name
        created_at:
          type: string
          format: date-time
          title: Created At
      type: object
      required:
      - dataset_id
      - name
      - created_at
      title: DatasetRenameResponse
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    DatasetUploadResponse:
      properties:
        dataset_id:
          type: string
          title: Dataset Id
        name:
          type: string
          title: Name
        row_count:
          type: integer
          title: Row Count
        valid_count:
          type: integer
          title: Valid Count
        missing_value_count:
          type: integer
          title: Missing Value Count
        column_names:
          items:
            type: string
          type: array
          title: Column Names
        sample_rows:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Sample Rows
        smiles_col_detected:
          type: boolean
          title: Smiles Col Detected
        compound_name_col_detected:
          type: boolean
          title: Compound Name Col Detected
        metadata:
          $ref: '#/components/schemas/DatasetMetadataSchema'
      type: object
      required:
      - dataset_id
      - name
      - row_count
      - valid_count
      - missing_value_count
      - column_names
      - sample_rows
      - smiles_col_detected
      - compound_name_col_detected
      - metadata
      title: DatasetUploadResponse
    ModelDetail:
      properties:
        model_id:
          type: string
          title: Model Id
        model_name:
          type: string
          title: Model Name
        dataset_id:
          type: string
          title: Dataset Id
        assay_type:
          anyOf:
          - type: string
          - type: 'null'
          title: Assay Type
        source:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
        slope:
          type: number
          title: Slope
        intercept:
          type: number
          title: Intercept
        r_squared:
          type: number
          title: R Squared
        rmse:
          type: number
          title: Rmse
        p_value:
          type: number
          title: P Value
        slope_ci_lower:
          type: number
          title: Slope Ci Lower
        slope_ci_upper:
          type: number
          title: Slope Ci Upper
        intercept_ci_lower:
          type: number
          title: Intercept Ci Lower
        intercept_ci_upper:
          type: number
          title: Intercept Ci Upper
        n_points:
          type: integer
          title: N Points
        outlier_indices:
          items:
            type: integer
          type: array
          title: Outlier Indices
        regulatory_warning:
          type: boolean
          title: Regulatory Warning
        species:
          type: string
          title: Species
        units:
          anyOf:
          - type: string
          - type: 'null'
          title: Units
        method:
          anyOf:
          - type: string
          - type: 'null'
          title: Method
        created_at:
          type: string
          format: date-time
          title: Created At
        outlier_candidates:
          items:
            $ref: '#/components/schemas/OutlierCandidate'
          type: array
          title: Outlier Candidates
      type: object
      required:
      - model_id
      - model_name
      - dataset_id
      - slope
      - intercept
      - r_squared
      - rmse
      - p_value
      - slope_ci_lower
      - slope_ci_upper
      - intercept_ci_lower
      - intercept_ci_upper
      - n_points
      - outlier_indices
      - regulatory_warning
      - species
      - created_at
      - outlier_candidates
      title: ModelDetail
  securitySchemes:
    OAuth2PasswordBearer:
      type: oauth2
      flows:
        password:
          scopes: {}
          tokenUrl: /api/auth/login