Endpoint APIs

These API are usable within the code of Python or R endpoints

Calling another endpoint

A common use-case is to have an API Service with several endpoints (for example several prediction models), and to have an additional “dispatcher” code endpoint that orchestrates the other endpoints.

Users only directly query the dispatcher endpoint, and this dispatcher endpoint in turns needs to query the other endpoints of the same API Service

For example, a dispatcher endpoint could query several prediction models and provide an “aggregated” answer, or it could select which endpoint to query based on query parameters.

For this kind of cases, the dispatcher endpoint would normally need:

  • To have an API key in order to query the other endpoint, which may not be known at design time

  • To know the service identifier in order to query the proper URL, which may not be known at design time

  • To know the port on which the API node server is running, which may not be known at design time

In order to facilitate this kind of setup, in a Python function or prediction endpoint, you can obtain a dataikuapi.APINodeClient that is already preconfigured to query other endpoints of the same service.

Use the following code

from dataiku.apinode import utils

def my_api_function():
        client = utils.get_self_client()

        # client is now a dataikuapi.APINodeClient, so you can use the regular methods
        # to query other endpoints
        result = client.predict_record("other_endpoint", {"feature1" : "value1", "feature2" : 42})

Warning

The call to utils.get_self_client() must be called within your function or predict method. Calling this in your initialization will not retrieve the API Key.

Note

You may cache the returned client, in order to keep persistent HTTP connections. However, doing that will cause subsequent queries to service to reuse the same API key, which may be undesirable.