# 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/configuration/dbnl-semantic-convention) for other semantically recognized fields. Only columns defined in the DBNL Semantic Convention are supported — arbitrary custom columns are not ingested. To attach custom metadata, use span attributes via the [OpenInference semantic convention](https://github.com/Arize-ai/openinference).
{% endhint %}

## Example Code

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

{% file src="<https://content.gitbook.com/content/yx9NXaWRjaOtW8ILLJQO/blobs/QFMCS58Drbf9GG21nEzA/DBNL-quickstart.ipynb>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dbnl.com/configuration/data-connections/sdk-log-ingestion.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
