Skip to content

Open QuickAdd from a URI

QuickAdd choices can be launched from external scripts or apps such as Shortcuts on Mac and iOS, through the use of the obsidian://quickadd URI.

If you prefer shell scripting, see QuickAdd CLI for native Obsidian CLI handlers.

obsidian://quickadd?choice=<YOUR_CHOICE_NAME>[&value-VALUE_NAME=...]

The only required parameter is choice which selects the choice to run by its name. The name must match exactly, otherwise it will not be able to be found.

Variables to your choice are passed as additional value-VARIABLE_NAME parameters, with value- prefixing the name. Variables with a space in their name can still be used, but the spaces in the name must be encoded as %20 as usual. For example, a capture asking for a variable named log notes would be passed as value-log%20notes=... in the URI.

Variable values are used exactly as encoded in the URI. If a format should ignore accidental leading or trailing whitespace for one token, add |trim to that token, for example {{VALUE:log notes|trim}}.

Keep in mind that unnamed variables (a bare {{VALUE}}/{{NAME}} or {{MVALUE}}) cannot be filled by the URI and you will instead be prompted inside Obsidian as usual.

Like every Obsidian URI, you can use the special vault parameter to specify which vault to run QuickAdd in. If left blank, it will be executed in your most recent vault.

obsidian://quickadd?vault=My%20Vault&choice=Daily%20log&value-contents=Lorem%20ipsum.

Introduced in QuickAdd 2.14.0.

QuickAdd can open a callback URL after a choice finishes, so an external caller (for example an Apple Shortcut) can react to the result and receive the path of the affected note. This follows the x-callback-url convention.

ParameterFired when
x-successthe choice completed successfully
x-errorthe choice failed, was aborted, was not found, or is unsupported
x-cancelyou cancelled a prompt while the choice was running
x-callback-urllegacy shorthand — used only when none of the above are present; it then fires for success and cancel (never error)

If a slot is not provided, nothing is opened for that outcome (there is no fallback — a cancel with no x-cancel opens nothing).

Only shortcuts: and obsidian: callback URLs are permitted; any other scheme (such as https:, file:, or javascript:) is rejected and the choice is not run.

QuickAdd appends these query parameters to your callback URL:

  • On x-success: status=success, and — for Template/Capture — path=<vault-relative path> and url=<obsidian://open…> pointing at the affected note.
  • On x-error: status=error and a stable errorCode (one of choice-not-found, unsupported-choice-type, execution-failed, execution-aborted, bad-callback-url). The detailed error message is kept in Obsidian’s log and is never sent to the callback.
  • On x-cancel: status=cancel.

Your callback URL is itself a value inside the obsidian:// query string, so it must be fully percent-encoded (double-encoded). If you leave a = or & un-encoded, Obsidian’s URI parser silently truncates the callback before QuickAdd ever sees it.

For example, this looks reasonable but is broken — the =My%20Cool%20Shortcut part is dropped, leaving shortcuts://run-shortcut?name:

obsidian://quickadd?choice=Daily%20log&x-success=shortcuts://run-shortcut?name=My%20Cool%20Shortcut

The correct form encodes the entire x-success value:

obsidian://quickadd?choice=Daily%20log&x-success=shortcuts%3A%2F%2Frun-shortcut%3Fname%3DMy%2520Cool%2520Shortcut

(Note the %2520 — the spaces inside the shortcut name are encoded twice because the value is decoded once by Obsidian and once by Shortcuts.)

Trigger a capture and run a shortcut on success, passing the created note’s path:

obsidian://quickadd?vault=My%20Vault&choice=Daily%20log&value-contents=Lorem%20ipsum&x-success=shortcuts%3A%2F%2Frun-shortcut%3Fname%3DLog%2520Saved

On success QuickAdd opens your x-success URL with these extra query parameters appended (shown here decoded — they are percent-encoded on the wire):

  • status = success
  • path = Daily/2026-06-14.md
  • url = obsidian://open?vault=My Vault&file=Daily/2026-06-14.md

Your shortcut reads them from the URL it was opened with.