Swush
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)
    • all also works
  • iOS/macOS Shortcuts app

2) Build the base shortcut once

  1. Create a new shortcut.
  2. Open shortcut settings (i) and enable Show in Share Sheet.
  3. Set Accepted Types to URLs (add Text only if needed).
  4. 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

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 file
  • isPublic = true/false
  • description (optional)
  • folderName (optional)
  • newTags (optional, comma-separated)

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 url or urls[]
  • 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"

On this page