/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 full catalog. Beta restrictions and draft-gating notes are hidden in this view.
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.
/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.
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.
/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.
/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.
/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.
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.
Curated destination hubs (LANDING_PAGE posts). Full-scope MCP tools only.
/api/landing-pagesList landing pages.
curl -X GET 'https://api.roami.xyz/api/landing-pages' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/landing-pagesCreate a landing page.
curl -X POST 'https://api.roami.xyz/api/landing-pages' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"title":"Thailand slow travel","slug":"thailand"}'/api/landing-pages/:idUpdate landing page fields.
curl -X PUT 'https://api.roami.xyz/api/landing-pages/LP_ID' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"title":"Thailand — updated"}'Scenic flight path content with landmarks and seat maps.
/api/flightsList flight routes.
curl -X GET 'https://api.roami.xyz/api/flights' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/flightsCreate a flight route.
curl -X POST 'https://api.roami.xyz/api/flights' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"airline":"…","origin":"DEL","destination":"LEH"}'/api/flights/:idUpdate a flight route.
curl -X PUT 'https://api.roami.xyz/api/flights/FLIGHT_ID' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"title":"…"}'Affiliate link CRUD and bulk ops. Excluded from beta MCP allowlist.
/api/affiliate-linksList affiliate links.
curl -X GET 'https://api.roami.xyz/api/affiliate-links' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/affiliate-linksCreate an affiliate link.
curl -X POST 'https://api.roami.xyz/api/affiliate-links' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"url":"https://…","label":"…"}'/api/affiliate-links/bulkBulk create/update affiliate links.
curl -X POST 'https://api.roami.xyz/api/affiliate-links/bulk' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"links":[{"url":"https://…"}]}'Mutating hygiene tools (MCP). Read-only audits are available to beta; fixes are full-scope only.
fix_content_metadataApply metadata hygiene fixes to a post (supports dry-run).
fix_content_relationsUpdate relation arrays (tags, places, related posts, media) for linking quality.
bulk_fix_media_hygieneBatch update image metadata fields; supports dry-run planning.
Mint and revoke keys via authenticated CMS session. Excluded from beta MCP — no agent-side key minting without human oversight.
/api/api-keysList API keys for the account/project.
curl -X GET 'https://api.roami.xyz/api/api-keys' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'/api/api-keysGenerate a new API key (MCP: generate_api_key).
curl -X POST 'https://api.roami.xyz/api/api-keys' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json' \
-d '{"name":"Partner key"}'/api/api-keys/:keyRevoke an API key (MCP: revoke_api_key).
curl -X DELETE 'https://api.roami.xyz/api/api-keys/sk_...' \
-H 'Authorization: Bearer sk_...' \
-H 'Content-Type: application/json'