/api/postsList posts for the authenticated project.
curl -X GET 'https://api.roami.xyz/api/posts?status=DRAFT&limit=20' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'DEVELOPERS
Integrate directly against the Roami REST API. Defaults to the beta-scoped surface; switch to Full catalog for non-beta keys.
Showing the beta-scoped catalog. Switch to Full catalog if your key is not beta-restricted.
Base URL: https://api.roami.xyz
Send either header. Bearer tokens that start with sk_ are treated as API keys; other Bearer tokens are treated as session JWTs.
Authorization: Bearer sk_...x-api-key: sk_...curl 'https://api.roami.xyz/api/posts' \
-H 'Authorization: Bearer sk_...'Create and update drafts, search content, manage ideas, and link related posts. Beta MCP tools: create_post, update_post, get_post, get_post_content, search_content, create_idea, get_idea, update_idea, link_related_posts.
Not available to beta keys
/api/postsList posts for the authenticated project.
curl -X GET 'https://api.roami.xyz/api/posts?status=DRAFT&limit=20' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/postsCreate a post (defaults to DRAFT).
curl -X POST 'https://api.roami.xyz/api/posts' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"title":"Notes from the road","projectId":"..."}'/api/posts/:idFetch a post by id (includes blocks, tags, places when requested).
curl -X GET 'https://api.roami.xyz/api/posts/POST_ID' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/posts/:idUpdate post fields; can set placeIds and related post links.
curl -X PUT 'https://api.roami.xyz/api/posts/POST_ID' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"title":"Updated title","relatedPostIds":["OTHER_ID"]}'/api/posts/:id/publishPublish a draft post.
Beta API keys receive 403. Publish from the CMS instead: https://app.roami.xyz
curl -X POST 'https://api.roami.xyz/api/posts/POST_ID/publish' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/posts/:id/tagsAttach tags to a post (MCP: attach_tag_to_post).
curl -X POST 'https://api.roami.xyz/api/posts/POST_ID/tags' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"tagIds":["TAG_ID"]}'/api/ideasList ideas for the project.
curl -X GET 'https://api.roami.xyz/api/ideas' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/ideasCreate an idea.
curl -X POST 'https://api.roami.xyz/api/ideas' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"title":"Essay angle","projectId":"..."}'/api/ideas/:idFetch one idea.
curl -X GET 'https://api.roami.xyz/api/ideas/IDEA_ID' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/ideas/:idUpdate an idea.
curl -X PUT 'https://api.roami.xyz/api/ideas/IDEA_ID' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"title":"Refined angle"}'Images, galleries, videos, and photo stories (reels). Beta MCP tools: list_images, update_image, list/create/update galleries, list/update videos, photo story CRUD + photo set helpers.
Not available to beta keys
/api/media/imagesList media library images.
curl -X GET 'https://api.roami.xyz/api/media/images?limit=50' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/media/images/:idUpdate image metadata (title, alt, caption, GPS).
curl -X PUT 'https://api.roami.xyz/api/media/images/IMAGE_ID' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"altText":"Sunrise over the ridge"}'/api/galleriesList galleries.
curl -X GET 'https://api.roami.xyz/api/galleries' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/galleriesCreate a gallery.
curl -X POST 'https://api.roami.xyz/api/galleries' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"title":"Coast road","projectId":"..."}'/api/galleries/:idUpdate gallery metadata or membership.
curl -X PUT 'https://api.roami.xyz/api/galleries/GALLERY_ID' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"title":"Coast road — edit"}'/api/videosList videos.
curl -X GET 'https://api.roami.xyz/api/videos' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/videos/:idUpdate video metadata.
curl -X PUT 'https://api.roami.xyz/api/videos/VIDEO_ID' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"title":"Market walk"}'/api/reelsList photo stories (reels).
curl -X GET 'https://api.roami.xyz/api/reels' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/reelsCreate a photo story.
curl -X POST 'https://api.roami.xyz/api/reels' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"title":"Weekend strip","projectId":"..."}'/api/reels/:idFetch one photo story (MCP: get_photo_story).
curl -X GET 'https://api.roami.xyz/api/reels/REEL_ID' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/reels/:idUpdate photo story fields and photo membership.
curl -X PUT 'https://api.roami.xyz/api/reels/REEL_ID' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"title":"Weekend strip — v2"}'Geographic places linked to posts. Beta MCP tools: search_places, create_place, link_post_places.
Not available to beta keys
/api/places/searchSearch places by name/region.
curl -X GET 'https://api.roami.xyz/api/places/search?q=Chiang%20Mai' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/placesCreate a place.
curl -X POST 'https://api.roami.xyz/api/places' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"name":"Chiang Mai","country":"Thailand","projectId":"..."}'/api/posts/:idLink places to a post via placeIds (MCP: link_post_places).
curl -X PUT 'https://api.roami.xyz/api/posts/POST_ID' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"placeIds":["PLACE_ID"]}'Trip capture pipeline (logs → scaffold). Beta MCP tools: list_trip_journals, create_trip_journal, get_trip_journal, add_trip_journal_log, create_journal_entry.
Not available to beta keys
/api/trip-journal/tripsList trip journals for the caller.
curl -X GET 'https://api.roami.xyz/api/trip-journal/trips' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/trip-journal/tripsCreate a trip journal.
curl -X POST 'https://api.roami.xyz/api/trip-journal/trips' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"title":"Leh road trip"}'/api/trip-journal/trips/:idFetch one trip with logs.
curl -X GET 'https://api.roami.xyz/api/trip-journal/trips/TRIP_ID' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/trip-journal/trips/:id/logsAdd a log entry to a trip (MCP: add_trip_journal_log).
curl -X POST 'https://api.roami.xyz/api/trip-journal/trips/TRIP_ID/logs' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"text":"Crossed the pass at 16:00"}'/api/journalsCreate a journal entry (MCP: create_journal_entry).
curl -X POST 'https://api.roami.xyz/api/journals' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"content":"Quiet morning.","projectId":"..."}'Read-only SEO and media audits. Exposed as MCP tools (no dedicated REST routes). Beta allowlist includes both audit tools so partners can check drafts before CMS review.
Not available to beta keys
audit_content_hygieneAudit a post or landing page for metadata, internal links, places, media coverage, and block structure.
audit_media_hygieneAudit image metadata (title, alt, caption, GPS) for a post, gallery, or project-wide.