Canonical Snaps API

The Snaps API from Canonical — 10 operation(s) for snaps.

Operations 10

GET /v2/snaps/info/{name} Get snap information
GET /v2/snaps/find Find snaps
POST /v2/snaps/refresh Refresh snaps
GET /api/v1/snaps/search Snaps search (legacy v1)
GET /api/v1/snaps/names List snap names (autocomplete; legacy v1)
GET /api/v1/snaps/sections List store sections (legacy v1)
POST /api/v1/snaps/auth/nonces Request a device nonce
POST /api/v1/snaps/auth/sessions Create a device session
POST /api/v1/snaps/auth/devices Register a device
POST /api/v1/snaps/auth/request-id Get an authentication request id

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/canonical-snaps-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

canonical-snaps-api-openapi.yml Raw ↑
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.