> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinetica.com/llms.txt
> Use this file to discover all available pages before exploring further.

# User-Defined Function Implementation

<a id="udf-label" />

UDFs can be implemented in any of the following APIs:

* [C++](#c++)
* [Python](#python)

<a id="udf-tutorials" />

## Tutorial

The following tutorial details the implementation & execution of distributed
[User-Defined Functions](/content/udf_overview) (UDFs) in the Python API.
Also provided are examples of UDFs, including a simple table copy and a more
complex integration into a machine-learning library's demo program.

* [Python](/content/guides/udf_python_guide)

<a id="udf-prereqs" />

## UDF Prerequisites

* *UDFs* enabled in <Badge color="gray">/opt/gpudb/core/etc/gpudb.conf</Badge>:

  ```
  enable_procs = true
  ```
* User authorization enabled *(recommended)*; see [Security Configuration](/content/security/sec_configuration#enable-httpd-ssl)
  section for details
* The `system_admin` role (for managing procs) or
  [Proc Level Permissions](/content/security/sec_concepts#security-concepts-permissions-function)
  (for managing procs as a non-admin). See
  [Security (User/Role Management)](/content/admin/gadmin/security)
  for more information on setting roles and permissions
* *Kinetica UDF* APIs; these can be downloaded from *GitHub*.  See one of the API
  references below for installation instructions.

<a id="udf-dev" />

## Development

### C++

[C++ UDF API](/content/udf/cpp/writing)
A reference for the *C++ UDF* API

[Running C++ UDFs](/content/udf/cpp/running)
How to run a *C++ UDF* in the *Kinetica* environment

[UDF C++ Examples](/content/udf/cpp/examples)
Complete examples of distributed *UDFs*

### Python

[Python UDF API](/content/udf/python/writing)
A reference for the *Python UDF* API

[Running Python UDFs](/content/udf/python/running)
How to run a *Python UDF* in the *Kinetica* environment

[UDF Python Examples](/content/udf/python/examples)
Complete examples of distributed *UDFs*

### Simulating UDFs

[UDF Simulator](/content/udf/simulating_udfs)
How to simulate running a UDF written in any API

### Compatibility

Each UDF API should be compatible with the corresponding minor release of the
database; e.g., the Python UDF v7.1 API is compatible with a Kinetica v7.1
database.
