Reference Omeka S module

REST API

The module registers a backups resource with Omeka's REST API at /api/backups. It uses Omeka's standard API conventions: JSON-LD responses, and authentication with an API key (key_identity and key_credential query parameters). /api/backups ignores the admin session cookie: from a browser where an administrator is signed in, use Omeka's read-only path /api-local/backups to list and read records.

Only Global Administrators can use the resource, through either path. Other roles, Supervisors included, receive a permission error (HTTP 403).

Endpoints

Method and path Action
GET /api/backups List backup records, newest first
GET /api/backups/:id Read one record
POST /api/backups Create a backup
DELETE /api/backups/:id Delete a record and its archive

Update (PUT and PATCH) is not supported.

GET /api/backups

Returns every record. The usual page and per_page parameters are ignored; the full list is always returned and Omeka-S-Total-Results equals its length.

Parameter Description
status Return only records with this status: downloading, in_progress, complete or failed
curl "https://example.org/api/backups?status=complete&key_identity=KEY&key_credential=SECRET"

POST /api/backups

Creates a backup in the request itself, not as a background job. The request does not return until the archive is finished, so it can take minutes on a large site and is subject to the web server's request timeout. For large sites prefer the admin page or the CLI.

The JSON body holds the same options as the Create Backup page; every one defaults to true.

{
    "include_db": true,
    "include_files": true,
    "include_themes": true,
    "include_modules": true,
    "include_api": false
}
curl -X POST "https://example.org/api/backups?key_identity=KEY&key_credential=SECRET" \
     -H "Content-Type: application/json" \
     -d '{"include_api": false}'

The response is the finished record. The backup is credited to the API key's user, and retention cleanup runs afterwards as usual.

DELETE /api/backups/:id

Removes the archive from disk and the record from the list, and returns the deleted record. Unknown IDs return a 404.

Representation

{
    "@context": "https://example.org/api-context",
    "@id": "https://example.org/api/backups/12",
    "@type": "o:Backup",
    "o:id": 12,
    "o:filename": "omeka-backup-20260326-020000-3f9a1c7e5b2d8e04.zip",
    "o:path": "/var/backups/omeka/omeka-backup-20260326-020000-3f9a1c7e5b2d8e04.zip",
    "o:storage": "local",
    "o:size": 734003200,
    "o:status": "complete",
    "o:checksum": "sha256:9b2c...e41f",
    "o:created_by": 1,
    "o:created_at": "2026-03-26 02:00:00",
    "o:metadata": {
        "backup_module_version": "1.3.0",
        "created_at": "2026-03-26T02:00:00+00:00",
        "includes": { "include_db": true, "include_files": true, "include_themes": true, "include_modules": true, "include_api": true }
    }
}

o:created_by is null for backups made from the command line. o:storage is local for an archive on the server, where o:path is its absolute path, or file_store for one kept in the site's cloud file store, where o:path is its path in the store (backups/<32 random characters>/<filename>). Either way, treat responses as sensitive.

There is no download endpoint in the API. Download archives from the admin list or read them from the backup directory.

API Browser

If the API Browser module is installed, the backups resource appears there with its query parameter, request body fields and response keys documented, since the adapter implements apiBrowserSchema().

Log in for Support