Skip to content
ArchWalk 360/Developer Docs

GET STARTED

  • Overview
  • Quickstart
  • Partner integration

GUIDES

  • Embedded Creator
  • Media
  • Capture guide
  • Viewer
  • Mobile apps

REFERENCE

  • Authentication
  • API Reference
  • Errors & troubleshooting

Quickstart

Publish your first ArchWalk 360 Experience using managed media.

BUILD YOUR FIRST PUBLISHED EXPERIENCE

  1. Get API access
  2. Create an Experience
  3. Upload a Panorama
  4. Attach it
  5. Publish
  6. Embed the Viewer

Need a key first? Read Get API access and the required scopes.

8. Quickstart A — managed media

Goal: credential → Experience → upload → Panorama → publish → Viewer.

These examples use jq to copy identifiers out of JSON responses. Adjust the panorama file path and declared_size_bytes to match your image.

bash
export ARCHWALK_API_BASE="https://YOUR_ARCHWALK_API_HOST"
export ARCHWALK_APP_ORIGIN="https://YOUR_ARCHWALK_APP_HOST"
export AW360_API_KEY="<your-api-key>"
export EXTERNAL_RESOURCE_ID="room_12345"

1. Create or resolve the Experience

bash
EXPERIENCE_JSON=$(curl -sS -X POST "$ARCHWALK_API_BASE/api/v1/360/experiences" \
  -H "Authorization: Bearer $AW360_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"name\": \"Ocean Suite\",
    \"external_resource_id\": \"$EXTERNAL_RESOURCE_ID\"
  }")
export EXPERIENCE_ID=$(echo "$EXPERIENCE_JSON" | jq -r .experience_id)
export DRAFT_REVISION=$(echo "$EXPERIENCE_JSON" | jq -r .draft_revision)

2. Initiate a managed upload

bash
UPLOAD_JSON=$(curl -sS -X POST "$ARCHWALK_API_BASE/api/v1/360/experiences/$EXPERIENCE_ID/panorama-uploads" \
  -H "Authorization: Bearer $AW360_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content_type": "image/jpeg",
    "declared_size_bytes": 1234567,
    "client_request_id": "acme-room-12345-pano-1"
  }')
export UPLOAD_ID=$(echo "$UPLOAD_JSON" | jq -r .upload_id)
export UPLOAD_URL=$(echo "$UPLOAD_JSON" | jq -r .upload_url)
export UPLOAD_CACHE_CONTROL=$(echo "$UPLOAD_JSON" | jq -r '.headers["Cache-Control"]')

Send exactly every returned headers entry on the PUT, including Content-Type, If-None-Match: *, and Cache-Control. The server owns the panorama cache policy; all three headers are signed. method is PUT. Do not invent object keys. Browser upload bucket CORS must permit these header names for the existing approved Creator origins.

3. PUT the file to storage

bash
curl -sS -X PUT "$UPLOAD_URL" \
  -H "Content-Type: image/jpeg" \
  -H "If-None-Match: *" \
  -H "Cache-Control: $UPLOAD_CACHE_CONTROL" \
  --data-binary @./ocean-suite.jpg

4. Complete validation

bash
curl -sS -X POST "$ARCHWALK_API_BASE/api/v1/360/experiences/$EXPERIENCE_ID/panorama-uploads/$UPLOAD_ID/complete" \
  -H "Authorization: Bearer $AW360_API_KEY"

Wait until status is ready (GET the upload resource if needed).

5. Attach a Panorama

Use DRAFT_REVISION from step 1 as expected_draft_revision.

bash
PANORAMA_JSON=$(curl -sS -X POST "$ARCHWALK_API_BASE/api/v1/360/experiences/$EXPERIENCE_ID/panoramas" \
  -H "Authorization: Bearer $AW360_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"expected_draft_revision\": $DRAFT_REVISION,
    \"label\": \"Living room\",
    \"is_starting\": true,
    \"media\": { \"type\": \"managed\", \"upload_id\": \"$UPLOAD_ID\" }
  }")
export DRAFT_REVISION=$(echo "$PANORAMA_JSON" | jq -r .draft_revision)

6. Publish

bash
PUBLISH_JSON=$(curl -sS -X POST "$ARCHWALK_API_BASE/api/v1/360/experiences/$EXPERIENCE_ID/publish" \
  -H "Authorization: Bearer $AW360_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{ \"expected_draft_revision\": $DRAFT_REVISION }")
export PUBLIC_ID=$(echo "$PUBLISH_JSON" | jq -r .public_id)
export EMBED_URL=$(echo "$PUBLISH_JSON" | jq -r .embed_url)

embed_url is {ARCHWALK_APP_ORIGIN}/aw360/v/{public_id}.

7. Embed the Viewer

html
<iframe
  title="ArchWalk 360 Viewer"
  src="https://YOUR_ARCHWALK_APP_HOST/aw360/v/PUBLIC_ID"
  allow="fullscreen"
  allowfullscreen
  style="width:100%;height:80vh;border:0"
></iframe>

Use $EMBED_URL or $ARCHWALK_APP_ORIGIN/aw360/v/$PUBLIC_ID. The Integration must list your page origin in allowed origins before third-party framing works.


You now have a published ArchWalk 360 Experience.

NEXT STEPS

Partner plugin workflow →Embed Creator →Use external media →Explore API Reference →See a complete marketplace integration →
PreviousOverview
NextPartner integration