# BuildBatchRequestError when running a checkpoint (reading data from "dataframe")

**URL:** <https://discourse.greatexpectations.io/t/buildbatchrequesterror-when-running-a-checkpoint-reading-data-from-dataframe/2397>\
**Category:** GX Core Support\
**Tags:** help-wanted\
**Created:** [September 27, 2026, 9:54pm UTC](https://discourse.greatexpectations.io/t/buildbatchrequesterror-when-running-a-checkpoint-reading-data-from-dataframe/2397 "2026-09-27T21:54:06Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![joshstauffer](https://avatars.discourse-cdn.com/v4/letter/j/85e7bf/32.png) [@joshstauffer](https://discourse.greatexpectations.io/u/joshstauffer)\
**Post date:** [September 28, 2026, 7:06pm UTC](https://discourse.greatexpectations.io/t/buildbatchrequesterror-when-running-a-checkpoint-reading-data-from-dataframe/2397/2 "2026-09-28T19:06:14Z")

</div>

Hi @KK1259, thanks for the question. `Checkpoint.run` accepts a single set of batch parameters and passes that same dict to every validation definition in the checkpoint. There’s no per-asset routing, so your asset-keyed dict reaches each dataframe asset as three unknown keys and raises “options must contain exactly 1 key, ‘dataframe’”.

For multiple dataframes, that means one checkpoint per dataframe, each run with `batch_parameters={"dataframe": df}`. If you don’t need a checkpoint’s actions (data docs updates, notifications, etc.), `ValidationDefinition.run(batch_parameters={"dataframe": df})` is simpler and runs the same validation.

This part of the API is under consideration for change, and a future release may let a checkpoint accept different batch parameters for each validation definition.

Others have hit the same limitation: [#1876](https://discourse.greatexpectations.io/t/validate-different-dataframes-with-respective-expectation-suites-using-checkpoint/1876), [#2015](https://discourse.greatexpectations.io/t/how-to-run-a-checkpoint-to-validate-multiple-dataframes/2015).

---

_[View the full topic](https://discourse.greatexpectations.io/t/buildbatchrequesterror-when-running-a-checkpoint-reading-data-from-dataframe/2397)._
