Deno Projects API
Create, list, update, and delete Deploy projects
Create, list, update, and delete Deploy projects
openapi: 3.1.0
info:
title: Deno Deploy REST Apps Projects API
description: The Deno Deploy REST API (v1) provides programmatic access to manage projects and deployments on the Deno Deploy serverless edge platform. It exposes endpoints for creating and managing organizations, projects, deployments, domains, and KV databases, as well as retrieving analytics and usage metrics. Authentication uses HTTP Bearer tokens generated from the Deno Deploy dashboard. This v1 API is scheduled for sunset on July 20, 2026; users should migrate to the v2 API.
version: '1.0'
contact:
name: Deno Deploy Support
url: https://deno.com/deploy
termsOfService: https://deno.com/deploy/terms
servers:
- url: https://api.deno.com/v1
description: Deno Deploy Production API
security:
- bearerAuth: []
tags:
- name: Projects
description: Create, list, update, and delete Deploy projects
paths:
/organizations/{organizationId}/projects:
get:
operationId: listProjects
summary: List projects
description: Returns a paginated list of all projects belonging to the specified organization. Supports filtering by name and sorting by various fields.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/organizationId'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/q'
- $ref: '#/components/parameters/sort'
- $ref: '#/components/parameters/order'
responses:
'200':
description: Projects listed successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Project'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
post:
operationId: createProject
summary: Create project
description: Creates a new project within the specified organization. Projects are containers for deployments on Deno Deploy, and each project can have multiple deployments across its lifecycle.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/organizationId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateProjectRequest'
responses:
'200':
description: Project created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/projects/{projectId}:
get:
operationId: getProject
summary: Get project
description: Retrieves the details of a specific project by its UUID, including its name, associated organization, and current configuration.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/projectId'
responses:
'200':
description: Project retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateProject
summary: Update project
description: Updates mutable fields of an existing project such as its name. Only the fields present in the request body are modified.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/projectId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProjectRequest'
responses:
'200':
description: Project updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteProject
summary: Delete project
description: Permanently deletes a project and all of its deployments. This operation cannot be undone.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/projectId'
responses:
'200':
description: Project deleted successfully
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/projects/{projectId}/analytics:
get:
operationId: getProjectAnalytics
summary: Get project analytics
description: Returns time-series analytics data for a specific project in 15-minute intervals. The time range is limited to a maximum of 24 hours and must be specified using RFC 3339 timestamps.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/projectId'
- name: since
in: query
required: true
description: Start of the analytics time range in RFC 3339 format
schema:
type: string
format: date-time
- name: until
in: query
required: true
description: End of the analytics time range in RFC 3339 format
schema:
type: string
format: date-time
responses:
'200':
description: Analytics data retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Analytics'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
schemas:
UpdateProjectRequest:
type: object
description: Request body for updating an existing Deno Deploy project
properties:
name:
type: string
description: New name for the project
minLength: 3
maxLength: 26
pattern: ^[a-z][a-z0-9-]*$
Project:
type: object
description: A Deno Deploy project, which is a container for multiple deployments. Each project has a unique name within its organization and can have custom domains and KV databases associated with it.
required:
- id
- name
- organizationId
properties:
id:
type: string
format: uuid
description: Unique identifier for the project
name:
type: string
description: Human-readable name of the project, unique within the organization
minLength: 3
maxLength: 26
pattern: ^[a-z][a-z0-9-]*$
organizationId:
type: string
format: uuid
description: UUID of the organization that owns this project
createdAt:
type: string
format: date-time
description: ISO 8601 timestamp when the project was created
updatedAt:
type: string
format: date-time
description: ISO 8601 timestamp when the project was last modified
CreateProjectRequest:
type: object
description: Request body for creating a new Deno Deploy project
required:
- name
properties:
name:
type: string
description: Unique name for the project within the organization. Must be 3-26 characters, lowercase alphanumeric and hyphens only, and must start with a letter.
minLength: 3
maxLength: 26
pattern: ^[a-z][a-z0-9-]*$
Analytics:
type: object
description: Time-series analytics data returned in 15-minute intervals for an organization or project. Covers request counts, bandwidth usage, and error rates over the specified time range.
properties:
fields:
type: array
description: Ordered list of field names present in each data row
items:
type: object
properties:
name:
type: string
description: Name of the analytics field
type:
type: string
description: Data type of the field values
values:
type: array
description: Array of data rows, each corresponding to a 15-minute interval
items:
type: array
items: {}
Error:
type: object
description: Standard error response returned by all API error conditions
required:
- error
properties:
error:
type: string
description: Human-readable error message describing what went wrong
responses:
BadRequest:
description: Bad request - invalid parameters or request body
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Not found - the requested resource does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Unauthorized - missing or invalid Bearer token
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
page:
name: page
in: query
description: Page number for paginated results (1-based)
schema:
type: integer
minimum: 1
default: 1
projectId:
name: projectId
in: path
required: true
description: UUID of the project
schema:
type: string
format: uuid
q:
name: q
in: query
description: Search query to filter results by name or identifier
schema:
type: string
order:
name: order
in: query
description: Sort order direction
schema:
type: string
enum:
- asc
- desc
default: asc
organizationId:
name: organizationId
in: path
required: true
description: UUID of the organization
schema:
type: string
format: uuid
limit:
name: limit
in: query
description: Maximum number of items to return per page
schema:
type: integer
minimum: 1
maximum: 100
default: 20
sort:
name: sort
in: query
description: Field name to sort results by
schema:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: Bearer token authentication. Generate tokens from the Deno Deploy dashboard under Settings > Access Tokens.
externalDocs:
description: Deno Deploy REST API Documentation
url: https://docs.deno.com/deploy/api/rest/