# SDK Log Ingestion

Push data manually or as part of a daily orchestration job using our [Python SDK](https://github.com/dbnlAI/docs/blob/main/reference/python-sdk.md). This ingestion method allows for the most flexibility, but requires the most off-platform coding.

{% hint style="info" %}
See the [Python SDK docs](https://github.com/dbnlAI/docs/blob/main/reference/python-sdk.md) for more detailed information about SDK installation and functions.
{% endhint %}

The following fields are required regardless of which ingestion method you are using:

* `input`: The text input to the LLM as a `string`.
* `output`: The text response from the LLM as a `string`.
* `timestamp`: The UTC timecode associated with the LLM call. Must be a timezone-aware datetime in UTC (Python: `datetime` with `tzinfo=UTC` or pandas: `datetime64[us, UTC]`).

{% hint style="info" %}
See the [DBNL Semantic Convention](https://docs.dbnl.com/v0.27.x/configuration/dbnl-semantic-convention) for other semantically recognized fields. Using these naming conventions will allow DBNL to map semantic meaning to those columns and provide better [Insights](https://docs.dbnl.com/v0.27.x/workflow/insights).
{% endhint %}

## Example Code

Check out the [Quickstart](https://docs.dbnl.com/v0.27.x/get-started/quickstart) for an example of using the SDK Log Ingestion as a Data Connection.

{% file src="<https://content.gitbook.com/content/8N8zzLtIch6ZiTSwWtXD/blobs/15uLydkadeeNOHv1zwAX/DBNL-quickstart.ipynb>" %}
