Overview
The Storage API provides persistent key-value storage scoped to your plugin. Data persists across executions and is isolated from other plugins. Requires permission:storage
Basic Usage
set()
Store a value:Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
key | str | Yes | Storage key (1-255 chars) |
value | any | Yes | Value (must be JSON-serializable) |
ttl | int | No | Time-to-live in seconds |
Supported Value Types
get()
Retrieve a value:Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
key | str | Yes | Storage key |
default | any | No | Default value if key not found |
Return Value
Returns the stored value, ordefault if key doesn’t exist.
delete()
Delete a key:Examples
Counter
Cache
User Preferences
Session Storage
Rate Limiting
Configuration Storage
List Storage (Append Pattern)
Expiring Data
Error Handling
Best Practices
Use Namespaced Keys
Use Namespaced Keys
Prefix keys with category:
prefs:user_123, cache:query_xyzSet TTL for Temporary Data
Set TTL for Temporary Data
Always set TTL for cache, sessions, and temporary data
Check for Existence
Check for Existence
Use
default parameter in get() to handle missing keys gracefullyJSON-Serializable Only
JSON-Serializable Only
Ensure values can be converted to JSON (no functions, classes, etc.)
Limit Storage Size
Limit Storage Size
Don’t store large files - storage is for metadata and state
Limitations
- Key length: 1-255 characters
- Value size: Must be JSON-serializable
- Scope: Data is isolated per plugin
- Persistence: Data persists until deleted or expired (TTL)