Developers
Keep your documentation in sync with your product.
Desk lets your software maintain the same knowledge base your team uses. Developers, CI workflows, internal tools, and coding agents can search, create, update, and publish help content.
Built for software agents
The Desk API is designed for automated documentation workflows, with search-first patterns that prevent duplicate content.
Search first
Search existing documentation before creating new articles. Update in place instead of duplicating content.
Version control
Track every change with audit events. Record who or what made each edit and why.
Scoped permissions
Each integration belongs to one help center with only the permissions you grant.
Agent-friendly
Coding agents can search, read, create, update, and publish with machine-readable errors.
CI/CD ready
Deploy documentation changes alongside your product releases using the same workflows.
Standard REST
Clean JSON API with predictable endpoints, standard HTTP status codes, and error handling.
Example workflow
A typical integration searches for existing content, updates it when found, or creates new articles only when necessary.
Search existing help content
Get article details if found
Update existing article or create new one
Publish when ready (if permitted)
# Create a category
curl -X POST https://desk.orstrax.io/api/v1/categories \
-H "Authorization: Bearer odsk_live_..." \
-H "Content-Type: application/json" \
-d '{ "title": "Billing", "description": "Plans and invoices" }'
# Upload a screenshot (Publisher)
curl -X POST https://desk.orstrax.io/api/v1/assets \
-H "Authorization: Bearer odsk_live_..." \
-F "file=@screenshot.png"
# Create a draft by categorySlug (creates category if missing)
curl -X POST https://desk.orstrax.io/api/v1/articles \
-H "Authorization: Bearer odsk_live_..." \
-H "Content-Type: application/json" \
-d '{
"title": "Cancellation Policy",
"categorySlug": "billing",
"createCategoryIfMissing": true,
"slug": "cancellation-policy",
"summary": "How cancellations work",
"bodyHtml": "<p>Policy content...</p><img src=\"https://desk.orstrax.io/api/media/...\" />"
}'
# Bulk upsert by slug (max 50; dryRun validates without writing)
curl -X POST https://desk.orstrax.io/api/v1/articles/bulk \
-H "Authorization: Bearer odsk_live_..." \
-H "Content-Type: application/json" \
-d '{
"createCategoryIfMissing": true,
"dryRun": false,
"articles": [
{
"title": "Cancellation Policy",
"slug": "cancellation-policy",
"categorySlug": "billing",
"summary": "How cancellations work",
"bodyHtml": "<p>Policy content...</p>",
"status": "draft"
},
{
"title": "Refund Timeline",
"slug": "refund-timeline",
"categorySlug": "billing",
"bodyHtml": "<p>Refunds take 5–10 days.</p>",
"publish": true
}
]
}'
# Rename the draft slug
curl -X PATCH https://desk.orstrax.io/api/v1/articles/art_... \
-H "Authorization: Bearer odsk_live_..." \
-H "Content-Type: application/json" \
-d '{ "slug": "cancellation-policy" }'
# Search including drafts
curl "https://desk.orstrax.io/api/v1/search?q=cancellation&status=all" \
-H "Authorization: Bearer odsk_live_..."
# Update contact-form support reasons (link articles by slug)
curl -X PUT https://desk.orstrax.io/api/v1/support-reasons \
-H "Authorization: Bearer odsk_live_..." \
-H "Content-Type: application/json" \
-d '{
"supportReasons": [
{
"id": "billing",
"label": "Billing",
"allowTicket": false,
"children": [
{
"id": "refund",
"label": "Request a refund",
"allowTicket": true,
"instructions": "Refunds take 5–10 days.",
"articleSlugs": ["cancellation-policy"]
}
]
}
]
}'
# Publish
curl -X POST https://desk.orstrax.io/api/v1/articles/art_.../publish \
-H "Authorization: Bearer odsk_live_..."Permission presets
Give software only the access it needs. Start with a preset or customize permissions.
Reader
Read and search only
- ✓Search articles
- ✓Read articles
- ✓List categories
- ✓Read support reasons
Writer
Create and update (cannot publish)
- ✓Everything in Reader
- ✓Create/update articles & categories
- ✓Edit support reasons
Publisher
Full documentation access
- ✓Everything in Writer
- ✓Publish & archive
- ✓Upload assets
- ✓Delete empty categories
