Connect an endpoint
1
Open Channels
Select Channels in the left sidebar, then Connect channel.
2
Choose Custom
Pick Custom from the Add a connection panel.
3
Name it
Give it a name you’ll recognise in the channel list, like My blog. This is only a label.
4
Enter your webhook URL
The full URL, including the scheme —
https://example.com/hooks/content. It has to be reachable from Ocoya’s servers, so an address on your own machine or inside a private network won’t work.5
Optionally, add headers
Under Advanced options. Most endpoints want to know the request is yours before they accept it — add
Authorization with a value of Bearer your-token, or whatever header your receiver checks. Each one is sent with every request.Header values are stored the way credentials are and never sent back to the browser, so the connect form shows an empty Headers section even for a destination that has them. Reconnecting the same URL replaces the whole set — re-enter every header you want to keep.
What your endpoint receives
APOST with Content-Type: application/json:
The shape is deliberately generic: the same whether the content is a social caption or a 1,200-word article. Mapping it onto your CMS is your endpoint’s job.
What Ocoya expects back
Answer with any 2xx status. Anything else is recorded as a failed publish, and the status and response body are shown on the post so you can see what your endpoint said. Your endpoint has 30 seconds to respond. Do the slow work after answering rather than before — acknowledge the request, then process it.Limits
No vendor sits behind a webhook, so there’s nothing real to validate against — you own the receiving end and decide what it accepts. These are guard rails rather than limits: wide enough for a long article with its media, narrow enough that a runaway generation is caught in the composer rather than at your endpoint.
Common problems
“A destination URL must start with http:// or https://.” The URL has no scheme. Include it. ""Content-Type” is set by Ocoya and cannot be overridden.” A few headers describe the request itself rather than authenticate it — the content headers,Host, Connection, Transfer-Encoding. Ocoya sets those, so your own headers can’t replace them.
""…” is not a valid header name.” A header name is letters, digits and dashes. A space or a colon in the name field usually means the whole Name: value line was pasted into it — the name goes in the left field, the value in the right.
“That is not a valid URL.” The address couldn’t be parsed. Check for typos and stray spaces.
“Your endpoint could not be reached. Check the URL is correct and publicly accessible.” DNS didn’t resolve or the connection was refused. An endpoint on localhost or a private network isn’t reachable from Ocoya.
“Your endpoint did not respond in time.” It took longer than 30 seconds. Acknowledge first, process afterwards.
“Your endpoint returned 500: …” Your code raised an error. The detail after the status is what your endpoint sent back, truncated.
Related
Character and media limits
Every network’s limits side by side.
The post editor
Writing a different version per channel.