--- title: FAQ | Adaption description: Frequently asked questions about Adaptive Data, the Adaption API, and the Python SDK. --- ## What is Blueprint? [Blueprint](https://www.adaptionlabs.ai/blog/blueprint) is Adaption’s **specification layer** for Adaptive Data: you define goals—length, safety, custom policies—and the platform steers adapted data toward those objectives so requirements are **explicit and persistent**, not one-off prompt tweaks. ## How do I authenticate? Create an API key in the [Adaption app](https://adaptionlabs.ai/app/auth) and either pass it to `Adaption(api_key=...)` or set **`ADAPTION_API_KEY`**. See [Create API keys](/introduction/create-api-keys/index.md). ## What are the ways to create a dataset? Three ingestion paths: 1. **Local file** — `datasets.upload_file()` (CSV, JSON, JSONL, Parquet). 2. **Hugging Face** — `datasets.create_from_huggingface()`; server-side import is asynchronous—wait before you adapt. 3. **Kaggle** — `datasets.create_from_kaggle()`; add Kaggle credentials under [API keys settings](https://frontend-pharos-app-dev.vercel.app/app/settings?tab=api_keys). Details: [Getting started](/introduction/getting-started/index.md). ## When should I use file upload vs Hugging Face vs Kaggle? - **Upload** when files are already local or exported from another system. - **Hugging Face** when the canonical dataset lives there and you want specific files without manual download. - **Kaggle** when the source of truth is a Kaggle dataset and credentials are registered in [API keys settings](https://frontend-pharos-app-dev.vercel.app/app/settings?tab=api_keys). ## What is column mapping? `column_mapping` tells Adaptive Data which columns hold the **prompt**, optional **completion**, **chat**, or **context**. `prompt` is required for a real run. Examples: [Getting started](/introduction/getting-started/index.md). ## How do credits and estimates work? Call `datasets.run(..., estimate=True)` to validate the request and read **estimated credits** and duration **without** starting a full run—so you can budget jobs and gate CI. Actual usage can still vary with data volume and options. ## How do I wait for a dataset or run to finish? Use `datasets.wait_for_completion(dataset_id, timeout=...)` (exponential backoff) or handle `DatasetTimeout` for long jobs. You can also poll `get_status` / `get` manually. ## What is hallucination mitigation? With `brand_controls={"hallucination_mitigation": True}`, the platform applies **grounding** (including web search where applicable) to reduce fabricated content. See [Mitigating hallucinations](/guides/mitigating-hallucinations/index.md). ## What are reasoning traces? `recipe_specification={"recipes": {"reasoning_traces": True}}` requests adapted completions that include explicit reasoning—useful for auditing and certain training setups. See [Reasoning traces](/guides/reasoning-traces/index.md). ## How do length and safety relate to Blueprint? `brand_controls` exposes **`length`** (`minimal` | `concise` | `detailed` | `extensive`) and **`safety_categories`** as part of run-level **specification**—the same philosophy described in [Blueprint](https://www.adaptionlabs.ai/blog/blueprint). See [Safety and length constraints](/guides/safety-and-length-constraints/index.md). ## Where are terms and privacy? - [Terms of service](https://adaptionlabs.ai/terms-of-service) - [Privacy policy](https://adaptionlabs.ai/privacy-policy) ## How do I get help? See [Support](/resources/support/index.md) or email . ## Do you support async Python? Yes. Use `AsyncAdaption` with `await` / `async for` as in [Getting started](/introduction/getting-started/index.md).