diff --git a/recipe_modules/pipeline/api.py b/recipe_modules/pipeline/api.py
new file mode 100644
index 0000000..d23f3a7
--- /dev/null
+++ b/recipe_modules/pipeline/api.py
@@ -0,0 +1,38 @@
+# Copyright 2022 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+"""Calls to build code."""
+
+from recipe_engine import recipe_api
+
+
+class PipelineApi(recipe_api.RecipeApi):
+    """Calls to build code."""
+
+    def __init__(self, props, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+        self._enabled = props.inside_a_pipeline
+        self._round = props.round
+        self._prev_iteration_builds = props.builds_from_previous_iteration
+
+    @property
+    def in_pipeline(self):
+        return self._enabled
+
+    @property
+    def round(self):
+        return self._round if self._enabled else None
+
+    @property
+    def builds_from_previous_iteration(self):
+        return tuple(self._prev_iteration_builds) if self._enabled else None
