How-to
Apple Shortcuts
0→hero guide to automate Swush from iPhone, iPad, and macOS.
Apple Shortcuts (0 → hero)
This page gives you one reliable pattern you can reuse for all supported Swush automations.
Note: Bookmarks, notes, snippets, recipes, and game list features are still experimental. They will continue to be implemented and refined in future releases based on community feedback. Coming soon — stay tuned.
1) Prerequisites
- Swush base URL (example:
https://your-domain.com) - API key from Settings → API
- API key scope:
upload(needed for upload + remote upload)allalso works
- iOS/macOS Shortcuts app
2) Build the base shortcut once
- Create a new shortcut.
- Open shortcut settings (
i) and enable Show in Share Sheet. - Set Accepted Types to URLs (add Text only if needed).
- Add actions in this order:
- Get URLs from Shortcut Input
- Get First Item from URLs
- Get Contents of URL
- Show Result
Now you only change request URL, headers, and body per use case.
3) Standard request settings
Inside Get Contents of URL:
- Method:
POST - Headers:
x-api-key: <YOUR_API_KEY>Content-Type: application/json
Alternative auth header (equivalent):
Authorization: Bearer <YOUR_API_KEY>
4) Ready-to-use endpoint examples
A) Remote upload (recommended for shared links)
Endpoint:
POST /api/v1/remote-upload
Body (simple):
{
"url": "https://example.com/video-or-file"
}Shortcut mapping:
url= First Item from URLs
What happens:
- Swush queues a remote job, downloads server-side, then adds file to Vault.
Check job status:
GET /api/v1/remote-upload
B) Direct file upload
Endpoint:
POST /api/v1/upload
Body type:
- Form (not JSON)
Add action before request:
- Select File or Select Photos
Form fields:
file= selected fileisPublic= true/falsedescription(optional)folderName(optional)newTags(optional, comma-separated)
C) Short link
Endpoint:
POST /api/v1/shorten
Body:
{
"originalUrl": "https://example.com",
"isPublic": true
}D) Bookmarks
- Bookmarks are still in BETA and coming soon — stay tuned.
Endpoint:
POST /api/v1/bookmarks
Body example:
{
"url": "https://example.com",
"title": "Optional title",
"isPublic": false,
"tags": ["reading"]
}E) Notes
- Notes are still in BETA and coming soon — stay tuned.
Endpoint:
POST /api/v1/notes
Body example:
{
"title": "Optional title",
"content": "note text",
"sourceUrl": "https://example.com",
"isPublic": false,
"tags": ["ideas"]
}F) Snippets
- Snippets support is still in BETA and coming soon — stay tuned.
G) Recipes
- Recipes support is still in BETA and coming soon — stay tuned.
H) Game List
- Game List support is still in BETA and coming soon — stay tuned.
5) Troubleshooting
401 Unauthorized- wrong key, wrong header format, missing scope, or API tokens disabled
400 No URLs provided- remote upload body is wrong; send
urlorurls[]
- remote upload body is wrong; send
422- wrong field type (boolean/string/array mismatch)
- Upload route works but remote-upload fails
- deployment may be stale; restart/redeploy latest build
6) Quick validation with curl
Remote upload:
curl -i -X POST "https://your-domain.com/api/v1/remote-upload" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/video.mp4"}'List remote jobs:
curl -i "https://your-domain.com/api/v1/remote-upload" \
-H "x-api-key: YOUR_API_KEY"