---
title: "Create an org- or repo-tier blueprint"
method: POST
path: "/v3beta1/organizations/{org_id}/snapshot-setup/blueprints"
tags: ["snapshot_setup"]
---

# Create an org- or repo-tier blueprint

`POST /v3beta1/organizations/{org_id}/snapshot-setup/blueprints`

## Request

- The document declares no server URL.
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/devinenterprise/apis/devin-api-v1/docs/v3beta1/organizations/:org_id/snapshot-setup/blueprints/post.ts> (a function with typed inputs; its response is checked against the schema)

Create a blueprint.  ``type`` is inferred from ``repo_name``.

Per spec, this never auto-triggers a build — callers must
``POST /builds`` explicitly.

## Path parameters

- `org_id` string, required

## Request body

- CreateOrgBlueprintBody
  - `contents` string, nullable: Optional initial YAML body for the blueprint.
  - `repo_name` string, nullable: If set, creates a repo-tier blueprint for that repository. If omitted, creates an org-wide (org-tier) blueprint.

## Response `201`

Successful Response

- Blueprint: Public ``Blueprint`` resource shape. Note: the ``type`` enum may grow in the future; clients MUST gracefully handle unknown values. YAML contents are fetched separately via ``GET /blueprints/{id}/contents``.
  - `blueprint_id` string, required
  - `created_at` integer, required
  - `repo_name` string, nullable, required
  - `type` 'enterprise' | 'org' | 'repo', required
  - `updated_at` integer, required

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `422`: Unprocessable Content
- `429`: Too Many Requests

---

[API](https://skmtc.dev/devinenterprise/apis/devin-api-v1.md) - [All operations](https://skmtc.dev/devinenterprise/apis/devin-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/devinenterprise/apis/devin-api-v1/revisions/e3244476af1c?raw)
