API: How to access port 41184 without a desktop app to get API working?

Operating system


Joplin version


Desktop version info


Sync target

Joplin Server


Markdown Editor

What issue do you have?

So i have installed Joplin on a headless ubuntu server using docker. No desktop. But i want the API feature, only available on the desktop for some reason on port 41184. Is there i way to access the api otherwize ? I wanted to create note from my iphone, transcribe it to text (all done using Aiko) then send the result on my Joplin server.

But i cannot do that at all. The only thing i can think of is doing some kind of desktop running in a docker... but seem complicated .

You can't do that, I think.
If what you're running in Docker is Joplin Server - it's only meant for synchronizing Joplin instances and you can't make direct API calls to it to create notes.
(Before you ask - no, it won't be added any time soon. Joplin needs to provide E2EE and you can't really make that work with simple, arbitrary 'plain text' API calls.)

The Web API is indeed meant for local use only. I think it was added so that a web browser extension can send notes to Joplin; then extended by popular demand. Still local only though.

If I recall correctly, the terminal (CLI) version of Joplin also has the API? I think there were some people who wanted to do something similar: they didn't care much about E2EE and planned to host the CLI on a server, then make calls to its API. But I've never tried that and it's been years since I saw that discussion, so I'm not sure if it's feasible.

It's certainly possible, although not officially supported. Nothing is stopping you from checking using dev tools what requests the app sends and then replicating this using curl or something else.

I did this a few years ago. Don't quite remember how I set it up but it wasn't simple. I think it involved either writing some settings manually to the sqlite db or maybe setting up the webclipper on desktop and copying the whole database over to the server.

Just for reference:

Well, that much is obvious. It's also not a good idea. Neither is writing to the SQLite DB directly.

I wonder if you could just run the local API normally, and expose it to the outside via reverse proxy.
Or perhaps use something like Tailscale.

I didn't mention it originally, because it requires coding and custom components, but so does all of the above, so here goes.
I do already have a custom tools and a Joplin plugin that create notes for me based on a remote data source.
I haven't really needed an API yet, but if I ever do, my plan is simple: I will write my own API that takes requests to create notes, and stores them in a DB; then write a Joplin plugin that will periodically check that table and create the notes in Joplin proper.
Yes, it's long-winded; but I won't be risking any damage to data, or to sync functionality.

Maybe check out the hotfolder plugin, I think it does something very similar already. Only without a database.