Canonical Snaps API
The Snaps API from Canonical — 10 operation(s) for snaps.
The Snaps API from Canonical — 10 operation(s) for snaps.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/canonical-snaps-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
x-generated-from: documentation
x-provenance-note: >-
Hand-authored by API Evangelist from the publicly documented Snap Store Device API
reference at https://api.snapcraft.io/docs/ — NOT harvested from a Canonical-published
machine-readable contract, because Canonical publishes none for api.snapcraft.io. Marked
2026-09-05 so this file is never mistaken for a provider artifact. The specs Canonical does
publish are the other thirteen documents in openapi/, each harvested verbatim.
info:
title: Canonical Snap Store Device Assertions Snaps API
description: 'Public Snap Store Device API (api.snapcraft.io) used by snap clients to
discover snaps, fetch metadata, refresh installed snaps, search the
store, and download assertions. Endpoints come from the publicly
documented snap store reference (https://api.snapcraft.io/docs/).
Most endpoints are open / unauthenticated. Authenticated endpoints under
/api/v1/snaps/auth/ use Ubuntu One macaroons and require the
Snap-Device-Series header.
This specification is a best-effort, hand-authored representation. The
Charmhub API (api.charmhub.io), Snapcraft Dashboard API, snapd local
REST API, LXD REST API, MAAS API, Juju, Launchpad, Ubuntu Pro Client,
and Landscape APIs are not modeled here — see apis.yml for those
surfaces and their respective Canonical documentation.
'
version: v2
contact:
name: Canonical / Snapcraft
url: https://api.snapcraft.io/docs/
servers:
- url: https://api.snapcraft.io
tags:
- name: Snaps
paths:
/v2/snaps/info/{name}:
parameters:
- $ref: '#/components/parameters/DeviceSeries'
- in: path
name: name
required: true
schema:
type: string
description: Snap name.
get:
summary: Get snap information
description: Returns information about a snap including channels, tracks, revisions, and assertions.
parameters:
- in: query
name: fields
schema:
type: string
description: Comma-separated list of fields to return.
- in: query
name: architecture
schema:
type: string
- in: header
name: Snap-Device-Architecture
schema:
type: string
responses:
'200':
description: Snap info document.
content:
application/json:
schema:
$ref: '#/components/schemas/SnapInfo'
'404':
description: Snap not found.
tags:
- Snaps
/v2/snaps/find:
parameters:
- $ref: '#/components/parameters/DeviceSeries'
get:
summary: Find snaps
description: Search snaps by name, keyword, or filter.
parameters:
- in: query
name: q
schema:
type: string
description: Free-text search query.
- in: query
name: name
schema:
type: string
- in: query
name: category
schema:
type: string
- in: query
name: fields
schema:
type: string
- in: query
name: confinement
schema:
type: string
enum:
- strict
- classic
- devmode
responses:
'200':
description: Find results.
content:
application/json:
schema:
$ref: '#/components/schemas/FindResults'
tags:
- Snaps
/v2/snaps/refresh:
parameters:
- $ref: '#/components/parameters/DeviceSeries'
post:
summary: Refresh snaps
description: 'Determine which snaps need to be refreshed and return refresh actions.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RefreshRequest'
responses:
'200':
description: Refresh response.
content:
application/json:
schema:
$ref: '#/components/schemas/RefreshResponse'
tags:
- Snaps
/api/v1/snaps/search:
get:
summary: Snaps search (legacy v1)
parameters:
- in: query
name: q
schema:
type: string
- $ref: '#/components/parameters/DeviceSeries'
responses:
'200':
$ref: '#/components/responses/Generic'
tags:
- Snaps
/api/v1/snaps/names:
get:
summary: List snap names (autocomplete; legacy v1)
parameters:
- $ref: '#/components/parameters/DeviceSeries'
responses:
'200':
$ref: '#/components/responses/Generic'
tags:
- Snaps
/api/v1/snaps/sections:
get:
summary: List store sections (legacy v1)
responses:
'200':
$ref: '#/components/responses/Generic'
tags:
- Snaps
/api/v1/snaps/auth/nonces:
post:
summary: Request a device nonce
responses:
'200':
$ref: '#/components/responses/Generic'
tags:
- Snaps
/api/v1/snaps/auth/sessions:
post:
summary: Create a device session
responses:
'200':
$ref: '#/components/responses/Generic'
tags:
- Snaps
/api/v1/snaps/auth/devices:
post:
summary: Register a device
responses:
'200':
$ref: '#/components/responses/Generic'
tags:
- Snaps
/api/v1/snaps/auth/request-id:
post:
summary: Get an authentication request id
responses:
'200':
$ref: '#/components/responses/Generic'
tags:
- Snaps
components:
schemas:
RefreshResponse:
type: object
properties:
results:
type: array
items:
type: object
additionalProperties: true
additionalProperties: true
Generic:
type: object
additionalProperties: true
FindResults:
type: object
properties:
results:
type: array
items:
type: object
properties:
name:
type: string
snap-id:
type: string
snap:
type: object
additionalProperties: true
additionalProperties: true
RefreshRequest:
type: object
properties:
context:
type: array
items:
type: object
additionalProperties: true
actions:
type: array
items:
type: object
properties:
action:
type: string
enum:
- refresh
- install
- download
instance-key:
type: string
snap-id:
type: string
name:
type: string
channel:
type: string
revision:
type: integer
additionalProperties: true
additionalProperties: true
SnapInfo:
type: object
properties:
name:
type: string
snap-id:
type: string
channel-map:
type: array
items:
type: object
additionalProperties: true
snap:
type: object
additionalProperties: true
additionalProperties: true
responses:
Generic:
description: Generic JSON response.
content:
application/json:
schema:
$ref: '#/components/schemas/Generic'
parameters:
DeviceSeries:
in: header
name: Snap-Device-Series
required: true
schema:
type: string
default: '16'
description: Snap device series; required by the Device API.