---
title: "Create a new geographic layer"
method: POST
path: "/layers"
tags: ["Locations"]
---

# Create a new geographic layer

`POST /layers`

Create a new layer containing a collection of related locations. Layers are useful for organizing locations into logical groups for mapping, analysis, or administrative purposes. 

**Layer Configuration:** 
- **locations:** Array of location IDs to include 
- **type:** Optional location type for categorization 
- **shared:** Access level (public, shared, private) 
- **available_to:** Specific organizations with access 

**Access Control:** 
- Creator organization has full management access 
- Sharing settings control broader access 
- Available_to field enables granular permissions

## Request body

- Layer
  - `id` integer
  - `title` string, nullable — Descriptive title for the layer (e.g., 'Emergency Response Zones', 'Service Areas', 'County Boundaries')
  - `description` string, nullable — Detailed description of the layer's purpose, contents, and intended use
  - `locations` object — Array of location IDs included in this layer collection
  - `available_to` object — JSON object specifying which organizations or users have access to this layer
  - `type` integer, nullable — Optional location type for categorizing this layer (references location type)
  - `shared` 'shared' | 'public' | 'private' | 'hidden', nullable — Basic sharing level: 'public' (all users), 'shared' (organization + affiliates), 'private' (organization only)

## Response `201`

Created

- Layer
  - `id` integer
  - `title` string, nullable — Descriptive title for the layer (e.g., 'Emergency Response Zones', 'Service Areas', 'County Boundaries')
  - `description` string, nullable — Detailed description of the layer's purpose, contents, and intended use
  - `locations` object — Array of location IDs included in this layer collection
  - `available_to` object — JSON object specifying which organizations or users have access to this layer
  - `type` integer, nullable — Optional location type for categorizing this layer (references location type)
  - `shared` 'shared' | 'public' | 'private' | 'hidden', nullable — Basic sharing level: 'public' (all users), 'shared' (organization + affiliates), 'private' (organization only)

## Other responses

- `400` — Validation error - check required fields and location IDs
- `401` — Authentication required
- `403` — Permission denied - insufficient organization permissions

---

[API](https://skmtc.dev/crisiscleanup/apis/crisiscleanup-api.md) · [All operations](https://skmtc.dev/crisiscleanup/apis/crisiscleanup-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/crisiscleanup/crisiscleanup-api/revisions/3fa73d4b2895/schema)
