### Get Site Details Response Example Source: https://here.now/docs Example JSON response for retrieving site details, including manifest information. ```json { "slug": "bright-canvas-a7k2", "siteUrl": "https://bright-canvas-a7k2.here.now/", "status": "active", "createdAt": "2026-02-18T...", "updatedAt": "2026-02-18T...", "expiresAt": null, "currentVersionId": "01J...", "pendingVersionId": null, "manifest": [ { "path": "index.html", "size": 1234, "contentType": "text/html; charset=utf-8", "hash": "a1b2c3d4..." }, { "path": "assets/app.js", "size": 999, "contentType": "text/javascript; charset=utf-8", "hash": "e5f6a7b8..." } ] } ``` -------------------------------- ### Publish from Drive Script Example Source: https://here.now/docs Example of how to use the `drive.sh` script to share a Drive with specific permissions and a label. ```APIDOC ## Publish from Drive Example command: ```bash ./scripts/drive.sh share Research --perms write --prefix notes/ --label "OpenClaw RC3 docs writer" ``` Drive history attributes changes to the account API key or Drive token that made the change. If per-agent attribution matters, mint one token per agent or session and give each token a descriptive label. Shared tokens produce shared attribution. File listings include `lastModifiedBy` and `lastOperation` metadata. The dashboard displays the same data as `Last Edited By`. A token minted with `--label "OpenClaw RC3 docs writer"` appears as `OpenClaw RC3 docs writer` on files that token creates or edits. Without a label, the dashboard falls back to the `dtok_...` token id; account writes show the account email. ETags are only for concurrency control; they do not identify an agent or account. ``` -------------------------------- ### State File Example Source: https://here.now/skill Example structure of the .herenow/state.json file, which stores information about published sites. ```json { "publishes": { "bright-canvas-a7k2": { "siteUrl": "https://bright-canvas-a7k2.here.now/", "claimToken": "abc123", "claimUrl": "https://here.now/claim?slug=bright-canvas-a7k2&token=abc123", "expiresAt": "2026-02-18T01:00:00.000Z" } } } ``` -------------------------------- ### Fallback Installer for here.now Source: https://here.now/index Provides an alternative installation method using a curl script for the here.now skill. Use this if the primary installer fails. ```bash curl -fsSL https://here.now/install.sh | bash ``` -------------------------------- ### Search Sites Example Source: https://here.now/docs Example of a GET request to search sites with query parameters for filtering and inclusion of shared sites. ```http GET /api/v1/publishes/search?q=hyperliquid&limit=20&includeShared=1 ``` -------------------------------- ### Install here.now Skill Source: https://here.now/index Installs the here.now skill globally using npx. This is the primary method for adding the skill to your agent. ```bash npx skills add heredotnow/skill --skill here-now -g ``` -------------------------------- ### Hermes Well-known Install for here.now Source: https://here.now/llms-full.txt Installs the here.now skill using the Hermes package manager and a well-known URI. ```bash hermes skills install well-known:https://here.now/.well-known/skills/here.now ``` -------------------------------- ### List Sites Response Example Source: https://here.now/docs Example response structure for listing sites, including slug, site URL, update times, status, and version IDs. ```json { "publishes": [ { "slug": "bright-canvas-a7k2", "siteUrl": "https://bright-canvas-a7k2.here.now/", "updatedAt": "2026-02-18T...", "expiresAt": null, "status": "active", "currentVersionId": "01J...", "pendingVersionId": null } ] } ``` -------------------------------- ### Search Sites Response Example Source: https://here.now/docs Example JSON response for a site search query, including results and pagination information. ```json { "query": "hyperliquid", "nextCursor": null, "results": [ { "slug": "amber-cosmos-wzq3", "siteUrl": "https://amber-cosmos-wzq3.here.now/", "primaryUrl": "https://research.example.com/", "ownership": "owned", "sharedSource": null, "currentVersionId": "01K...", "indexedVersionId": "01K...", "updatedAt": "2026-05-19T18:23:11.000Z", "matchedFields": ["domain", "content"], "matchedPaths": ["notes/markets.html"] } ] } ``` -------------------------------- ### Publish from Drive API Example Source: https://here.now/docs This snippet shows an example API call to retrieve analytics for a specific site, 'bright-canvas-a7k2', over the last 30 days. It includes the request path and a sample JSON response detailing various analytics metrics. ```json GET /api/v1/publishes/bright-canvas-a7k2/analytics?range=30d { "slug": "bright-canvas-a7k2", "range": "30d", "analyticsStartedAt": "2026-05-22T00:00:00.000Z", "lastEventAt": "2026-05-26T18:32:14.000Z", "totals": { "allTimeViews": 1240, "rangeViews": 312, "rangeVisitors": 201 }, "series": [ { "bucket": "2026-05-26", "views": 42, "visitors": 31 } ], "topPaths": [ { "path": "/", "views": 140 } ], "topReferrers": [ { "referrer": "Direct", "views": 88 } ], "topCountries": [ { "country": "US", "views": 120 } ], "topCrawlers": [ { "crawler": "GPTBot", "hits": 18 } ], "top404Paths": [ { "path": "/old-page", "referrer": "Direct", "hits": 12 } ] } ``` -------------------------------- ### Create Subdomain Handle Request Source: https://here.now/docs Example of a request to create a subdomain handle. ```JSON { "handle": "yourname" } ``` -------------------------------- ### Direct File Access Example Source: https://here.now/docs Shows how to directly access specific files within a hosted site using their full URL. ```url https://.here.now/report.pdf ``` -------------------------------- ### Proxy Configuration Example Source: https://here.now/docs Configure API proxies by defining upstream services, methods, and headers. Supports path matching and variable substitution for authentication. ```json { "proxies": { "/api/chat": { "upstream": "https://openrouter.ai/api/v1/chat/completions", "method": "POST", "headers": { "Authorization": "Bearer ${OPENROUTER_API_KEY}" } }, "/api/db/*": { "upstream": "https://xyz.supabase.co/rest/v1", "headers": { "apikey": "${SUPABASE_KEY}" } } } } ``` -------------------------------- ### Publish Request Body Example Source: https://here.now/docs An example of the JSON request body for the publish from Drive endpoint. It includes driveId, versionId, and an optional slug. ```JSON { "driveId": "drv_...", "versionId": "dv_...", "slug": "optional" } ``` -------------------------------- ### Share Drive with Write Permissions and TTL Source: https://here.now/docs Example of sharing a drive with write permissions and a time-to-live, including a label for identification. ```bash share Research --perms write --prefix notes/ --ttl 7d\\n./scripts/drive.sh share Research --perms write --ttl 7d --manage-tokens --label \\\ ``` -------------------------------- ### Subdomain Handle Creation Response Source: https://here.now/docs Example response when successfully creating a subdomain handle, showing the assigned handle and its corresponding hostname. ```json { "handle": "yourname", "hostname": "yourname.here.now" } ``` -------------------------------- ### Drive Helper Script Usage Examples Source: https://here.now/docs These commands demonstrate various functionalities of the `drive.sh` script, such as creating drives, uploading files, listing directories, importing/exporting folders, and managing sharing permissions. ```bash ./scripts/drive.sh default ``` ```bash ./scripts/drive.sh create "Research" ``` ```bash ./scripts/drive.sh put Research notes/today.md --from ./notes/today.md ``` ```bash ./scripts/drive.sh ls Research notes/ ``` ```bash ./scripts/drive.sh import My Drive agent-context/ --from ./notes --dry-run ``` ```bash ./scripts/drive.sh export My Drive agent-context/ --to ./agent-context ``` ```bash ./scripts/drive.sh share Research --perms write --prefix notes/ --ttl 7d ``` ```bash ./scripts/drive.sh share Research --perms write --ttl 7d --manage-tokens --label "token manager" ``` -------------------------------- ### Get or Create Default Drive Source: https://here.now/api/llms.txt Retrieves the default Drive for the account, creating it if it does not exist. ```APIDOC ## GET /api/v1/drives/default ### Description Gets or creates the default Drive for the account. ### Method GET ### Endpoint /api/v1/drives/default ### Response #### Success Response (200) - **driveId** (string) - The ID of the default Drive. - **name** (string) - The name of the default Drive. #### Response Example ```json { "driveId": "drive-default-001", "name": "Default Drive" } ``` ``` -------------------------------- ### Get Site Details Source: https://here.now/docs Retrieves metadata and the file manifest for the current live version of a site. Requires an API key for authorization. ```HTTP GET /api/v1/publish/:slug GET /api/v1/artifact/:slug ``` ```HTTP Authorization: Bearer ``` ```JSON { "slug": "bright-canvas-a7k2", "siteUrl": "https://bright-canvas-a7k2.here.now/", "status": "active", "createdAt": "2026-02-18T...", "updatedAt": "2026-02-18T...", "expiresAt": null, "currentVersionId": "01J...", "pendingVersionId": null, "manifest": [ { "path": "index.html", "size": 1234, "contentType": "text/html; charset=utf-8", "hash": "a1b2c3d4..." }, { "path": "assets/app.js", "size": 999, "contentType": "text/javascript; charset=utf-8", "hash": "e5f6a7b8..." } ] } ``` -------------------------------- ### Password Protection Example Source: https://here.now/docs Demonstrates how to set and remove password protection for a site. Password protection is applied to the site's metadata and invalidates sessions upon change. ```json {\"password\": \"secret\"} ``` ```json {\"password\": null} ``` -------------------------------- ### Example data.json Manifest Source: https://here.now/docs Defines a collection named 'entries' with specific fields, access rules, and rate limiting. This file structures your site data. ```json { "collections": { "entries": { "fields": { "name": { "type": "string", "required": true, "maxLength": 80, "trim": true }, "message": { "type": "string", "required": true, "maxLength": 1000, "trim": true }, "attending": { "type": "boolean", "default": true } }, "access": { "read": "public", "insert": "public", "update": "owner", "delete": "owner" }, "rateLimit": "10/hour/ip" } } } ``` -------------------------------- ### Publish Site Source: https://here.now/docs Initiates the process of publishing a site by providing file metadata. This is the first step in a three-step process to get a site live. ```APIDOC ## POST /api/v1/publish ### Description Initiates the process of publishing a site by providing file metadata. This is the first step in a three-step process to get a site live. The response includes the live `siteUrl`, presigned upload URLs, and a `finalizeUrl`. ### Method POST ### Endpoint /api/v1/publish ### Parameters #### Request Body - **files** (array) - Required - An array of file objects, each containing `path`, `size`, and `contentType`. - **path** (string) - Required - The path of the file. - **size** (integer) - Required - The size of the file in bytes. - **contentType** (string) - Required - The MIME type of the file. ### Request Example ```json { "files": [ { "path": "index.html", "size": 1234, "contentType": "text/html; charset=utf-8" } ] } ``` ### Response #### Success Response (200) - **siteUrl** (string) - The live URL of the published site. - **uploadUrls** (array) - An array of presigned URLs for uploading files. - **finalizeUrl** (string) - The URL to finalize the site publication. - **claimUrl** (string) - Optional - A URL to claim the site for permanent storage (only for anonymous sites). ``` -------------------------------- ### Get Site Details Source: https://here.now/docs Retrieve metadata and the file manifest for a specific site version. Requires owner authorization. ```http GET /api/v1/publish/:slug Authorization: Bearer ``` -------------------------------- ### Agent Discovery Files Source: https://here.now/docs Agents can discover product capabilities, documentation, API specifications, and skill installation surfaces through well-known files published by here.now. ```json /.well-known/agent.json — product capabilities, auth model, docs, OpenAPI, and skill links. ``` ```json /.well-known/agent-card.json — agent card describing here.now skills and capabilities. ``` ```json /.well-known/ai-plugin.json — OpenAI-style plugin manifest pointing to /openapi.json. ``` ```json /.well-known/api-catalog — RFC 9727 API catalog/linkset. ``` -------------------------------- ### Get site details Source: https://here.now/docs Retrieves metadata and the full file manifest for the current live version of a site. Requires Authorization header. ```APIDOC ## GET /api/v1/publish/:slug ### Description Retrieves metadata and the full file manifest for the current live version of a site. ### Method GET ### Endpoint /api/v1/publish/:slug ### Parameters #### Path Parameters - **slug** (string) - Required - The unique identifier for the site. #### Query Parameters None #### Request Body None ### Request Example None ### Response #### Success Response (200) - **slug** (string) - The site's slug. - **siteUrl** (string) - The URL of the live site. - **status** (string) - The current status of the site (e.g., "active"). - **createdAt** (string) - The timestamp when the site was created. - **updatedAt** (string) - The timestamp when the site was last updated. - **expiresAt** (string | null) - The timestamp when the site will expire, if applicable. - **currentVersionId** (string) - The ID of the current live version. - **pendingVersionId** (string | null) - The ID of any pending version. - **manifest** (array) - A list of files in the current version, each with path, size, contentType, and hash. #### Response Example ```json { "slug": "bright-canvas-a7k2", "siteUrl": "https://bright-canvas-a7k2.here.now/", "status": "active", "createdAt": "2026-02-18T...", "updatedAt": "2026-02-18T...", "expiresAt": null, "currentVersionId": "01J...", "pendingVersionId": null, "manifest": [ { "path": "index.html", "size": 1234, "contentType": "text/html; charset=utf-8", "hash": "a1b2c3d4..." }, { "path": "assets/app.js", "size": 999, "contentType": "text/javascript; charset=utf-8", "hash": "e5f6a7b8..." } ] } ``` ``` -------------------------------- ### API Key Creation Response Source: https://here.now/docs Example of the JSON response received after successfully creating a new API key. It includes the key's ID, name, and a partial suffix for reference. ```json { "id": "9f4e...", "name": "claude", "key": "hnk_<64 hex chars>", "keySuffix": "a1b2", "createdAt": "2026-06-11T00:00:00.000Z" } ``` -------------------------------- ### Drive Sharing with Scoped Access Source: https://here.now/docs Examples of using the `drive.sh share` command to grant specific permissions (read/write) to a Drive, with options for path prefixes and time-to-live (TTL). ```bash # Give another agent write access only under notes/ for 7 days ./scripts/drive.sh share Research --perms write --prefix notes/ --ttl 7d --label "docs agent" ``` ```bash # Give full-Drive read access ./scripts/drive.sh share Research --perms read --ttl 24h ``` -------------------------------- ### Verify Authentication Code and Get API Key Source: https://here.now/skill Use curl to verify the received sign-in code and obtain an API key from the here.now API. ```bash curl -sS https://here.now/api/auth/agent/verify-code \ -H "content-type: application/json" \ -d '{"email":"user@example.com","code":"ABCD-2345"}' ``` -------------------------------- ### Publish Site: Step 1 - Create Site Source: https://here.now/docs Initiate the site publishing process by creating a new site. This step requires specifying file details and returns necessary URLs for subsequent steps. ```bash curl -sS https://here.now/api/v1/publish \ -H \"X-HereNow-Client: cursor/direct-api\" \ -H \"content-type: application/json\" \ -d '{ \"files\": [ { \"path\": \"index.html\", \"size\": 1234, \"contentType\": \"text/html; charset=utf-8\" } ] }' ``` -------------------------------- ### Publish Site - Step 2: Upload File Source: https://here.now/docs Uploads the actual file content to the provided presigned URL obtained from the site creation step. Ensure the Content-Type matches the metadata provided in step 1. ```bash curl -X PUT "" \ -H "Content-Type: text/html; charset=utf-8" \ --data-binary @index.html ``` -------------------------------- ### API Request Example Source: https://here.now/docs Frontend makes a request to a relative URL, which is intercepted by here.now for server-side credential injection and forwarding to the upstream service. Streaming responses are supported. ```javascript fetch('/api/chat') ``` -------------------------------- ### Get site details Source: https://here.now/docs Retrieves metadata and the file manifest for a specific site version. This endpoint can also be aliased as GET /api/v1/artifact/:slug. ```APIDOC ## GET /api/v1/publish/:slug ### Description Retrieves metadata and the full file manifest for the current live version of a specific site. ### Method GET ### Endpoint /api/v1/publish/:slug ### Parameters #### Path Parameters - **slug** (string) - Required - The unique identifier (slug) of the site. ### Headers - **Authorization** (string) - Required - Bearer (owner only) ### Response #### Success Response (200) - **slug** (string) - The unique identifier for the site. - **siteUrl** (string) - The URL of the published site. - **status** (string) - The current status of the site. - **createdAt** (string) - The timestamp when the site was created. - **updatedAt** (string) - The timestamp when the site was last updated. - **expiresAt** (string | null) - The timestamp when the site expires, if applicable. - **currentVersionId** (string) - The ID of the current version of the site. - **pendingVersionId** (string | null) - The ID of any pending version of the site. - **manifest** (array) - A list of files in the current version. - **path** (string) - The path of the file within the site. - **size** (integer) - The size of the file in bytes. - **contentType** (string) - The content type of the file. - **hash** (string) - The hash of the file content. ``` -------------------------------- ### Site Analytics Response Example Source: https://here.now/docs Example JSON response for a Site analytics query, including totals, series data, and top paths, referrers, countries, crawlers, and 404s. ```json { "slug": "bright-canvas-a7k2", "range": "30d", "analyticsStartedAt": "2026-05-22T00:00:00.000Z", "lastEventAt": "2026-05-26T18:32:14.000Z", "totals": { "allTimeViews": 1240, "rangeViews": 312, "rangeVisitors": 201 }, "series": [ { "bucket": "2026-05-26", "views": 42, "visitors": 31 } ], "topPaths": [ { "path": "/", "views": 140 } ], "topReferrers": [ { "referrer": "Direct", "views": 88 } ], "topCountries": [ { "country": "US", "views": 120 } ], "topCrawlers": [ { "crawler": "GPTBot", "hits": 18 } ], "top404Paths": [ { "path": "/old-page", "referrer": "Direct", "hits": 12 } ] } ``` -------------------------------- ### Publish Site - Step 1: Create Site Source: https://here.now/docs Initiates the site publishing process by sending file metadata to the here.now API. This step returns upload URLs and a finalize URL. Anonymous sites expire in 24 hours. ```bash curl -sS https://here.now/api/v1/publish \ -H "X-HereNow-Client: cursor/direct-api" \ -H "content-type: application/json" \ -d '{ "files": [ { "path": "index.html", "size": 1234, "contentType": "text/html; charset=utf-8" } ] }' ``` -------------------------------- ### Account Analytics Response Example Source: https://here.now/docs Example JSON response for an account-wide analytics query, including aggregated totals, series data, and top sites, referrers, countries, crawlers, and 404s. ```json { "range": "30d", "analyticsStartedAt": "2026-05-22T00:00:00.000Z", "lastEventAt": "2026-05-26T18:32:14.000Z", "totals": { "allTimeViews": 8420, "rangeViews": 1204, "rangeVisitors": 822, "assetHits": 330, "notFoundHits": 18, "botHits": 91 }, "series": [ { "bucket": "2026-05-26", "views": 120, "visitors": 84 } ], "topSites": [ { "slug": "bright-canvas-a7k2", "views": 312, "visitors": 201 } ], "topReferrers": [ { "referrer": "Direct", "views": 420 } ], "topCountries": [ { "country": "US", "views": 510 } ], "topCrawlers": [ { "crawler": "GPTBot", "hits": 91 } ], "top404Paths": [ { "slug": "bright-canvas-a7k2", "path": "/old-page", "hits": 12 } ] } ``` -------------------------------- ### GET /api/v1/drives/:driveId/tokens Source: https://here.now/docs Lists active tokens for a drive. ```APIDOC ## GET /api/v1/drives/:driveId/tokens ### Description Retrieves a list of all currently active tokens associated with the specified drive. ### Method GET ### Endpoint /api/v1/drives/:driveId/tokens ### Parameters #### Path Parameters - **driveId** (string) - Required - The ID of the drive. ``` -------------------------------- ### Publish Drive Version as Site Source: https://here.now/llms-full.txt Create a new Site by publishing an existing Drive version. ```APIDOC ## Publish Drive Version as Site ### Description Create a new Site by publishing an existing Drive version. ### Method POST ### Endpoint /api/v1/publish/from-drive ``` -------------------------------- ### Get Subdomain Handle Source: https://here.now/docs Retrieves information about your current subdomain handle. ```APIDOC ## GET /api/v1/handle ### Description Retrieves information about your current subdomain handle. ### Method GET ### Endpoint /api/v1/handle ``` -------------------------------- ### Publish Site - Step 3: Finalize Site Source: https://here.now/docs Completes the site publishing process by sending the version ID to the finalize URL. This confirms the upload and makes the site live. ```bash curl -sS -X POST "" \ -H "content-type: application/json" \ -d '{ "versionId": "" }' ``` -------------------------------- ### GET /api/v1/drives/:driveId/files Source: https://here.now/llms.txt Lists all files within a specific Drive. ```APIDOC ## GET /api/v1/drives/:driveId/files ### Description Lists Drive files. ### Method GET ### Endpoint /api/v1/drives/:driveId/files ### Parameters #### Path Parameters - **driveId** (string) - Required - The unique identifier for the Drive. ``` -------------------------------- ### GET /api/v1/publish/:slug Source: https://here.now/llms.txt Retrieves detailed information about a specific Site. ```APIDOC ## GET /api/v1/publish/:slug ### Description Gets Site details. ### Method GET ### Endpoint /api/v1/publish/:slug ### Parameters #### Path Parameters - **slug** (string) - Required - The unique identifier for the Site. ``` -------------------------------- ### Create a Site Source: https://here.now/docs Creates a new site by uploading files and providing viewer metadata. Supports aliasing with `/api/v1/artifact`. ```APIDOC ## POST /api/v1/publish ### Description Creates a new site. Can be aliased with `POST /api/v1/artifact`. ### Method POST ### Endpoint /api/v1/publish ### Parameters #### Request Body - **files** (array) - Required - An array of file objects, each with `path`, `size`, `contentType`, and `hash`. - **path** (string) - Required - Relative path of the file. - **size** (integer) - Required - Size of the file in bytes. - **contentType** (string) - Required - MIME type of the file. - **hash** (string) - Optional - SHA-256 hex digest of the file. - **ttlSeconds** (integer) - Optional - Expiry time in seconds. Ignored for anonymous sites. - **viewer** (object) - Optional - Metadata for auto-viewer pages. - **title** (string) - Optional - The title of the site. - **description** (string) - Optional - A description for the site. - **ogImagePath** (string) - Optional - Path to the Open Graph image. ### Request Example ```json { "files": [ { "path": "index.html", "size": 1234, "contentType": "text/html; charset=utf-8", "hash": "a1b2c3d4..." }, { "path": "assets/app.js", "size": 999, "contentType": "text/javascript; charset=utf-8", "hash": "e5f6a7b8..." } ], "ttlSeconds": null, "viewer": { "title": "My site", "description": "Published by an agent", "ogImagePath": "assets/cover.png" } } ``` ### Response #### Success Response (200) - **slug** (string) - Unique identifier for the site. - **siteUrl** (string) - The URL of the published site. - **upload** (object) - Information for uploading files. - **versionId** (string) - The ID of the upload version. - **uploads** (array) - List of files to upload with presigned URLs. - **path** (string) - Path of the file. - **method** (string) - HTTP method for upload (e.g., PUT). - **url** (string) - Presigned URL for the upload. - **headers** (object) - Headers required for the upload. - **skipped** (array) - List of files skipped during upload (hashes matched). - **finalizeUrl** (string) - URL to finalize the deployment. - **expiresInSeconds** (integer) - Time in seconds until presigned URLs expire. - **claimToken** (string) - Token for claiming anonymous sites (only for anonymous sites). - **claimUrl** (string) - URL for claiming anonymous sites (only for anonymous sites). - **expiresAt** (string) - Expiration timestamp for anonymous sites (only for anonymous sites). - **anonymous** (boolean) - Indicates if the site is anonymous. - **warning** (string) - Important warning for anonymous sites regarding claim tokens. ### Response Example (Authenticated) ```json { "slug": "bright-canvas-a7k2", "siteUrl": "https://bright-canvas-a7k2.here.now/", "upload": { "versionId": "01J...", "uploads": [ { "path": "index.html", "method": "PUT", "url": "https://", "headers": { "Content-Type": "text/html; charset=utf-8" } } ], "skipped": ["assets/app.js"], "finalizeUrl": "https://here.now/api/v1/publish/bright-canvas-a7k2/finalize", "expiresInSeconds": 3600 } } ``` ### Response Example (Anonymous) ```json { "slug": "bright-canvas-a7k2", "siteUrl": "https://bright-canvas-a7k2.here.now/", "upload": { "versionId": "01J...", "uploads": [ { "path": "index.html", "method": "PUT", "url": "https://", "headers": { "Content-Type": "text/html; charset=utf-8" } } ], "skipped": ["assets/app.js"], "finalizeUrl": "https://here.now/api/v1/publish/bright-canvas-a7k2/finalize", "expiresInSeconds": 3600 }, "claimToken": "abc123...", "claimUrl": "https://here.now/claim?slug=bright-canvas-a7k2&token=abc123...", "expiresAt": "2026-02-19T01:00:00.000Z", "anonymous": true, "warning": "IMPORTANT: Save the claimToken and claimUrl. They are returned only once and cannot be recovered. Share the claimUrl with the user so they can keep the site permanently." } ``` ``` -------------------------------- ### Get Site Details Source: https://here.now/llms-full.txt Retrieve detailed information about a specific Site. ```APIDOC ## Get Site Details ### Description Retrieve detailed information about a specific Site. ### Method GET ### Endpoint /api/v1/publish/:slug ### Parameters #### Path Parameters - **slug** (string) - Required - The unique slug of the site. ``` -------------------------------- ### Get Link by Location Source: https://here.now/docs Retrieves details for a specific link based on its location. ```APIDOC ## GET /api/v1/links/:location ### Description Retrieves details for a specific link based on its location. ### Method GET ### Endpoint /api/v1/links/:location ### Parameters #### Path Parameters - **location** (string) - Required - The location of the link. Use `__root__` for the root location. ``` -------------------------------- ### Get Site Analytics Source: https://here.now/api/llms.txt Retrieves paid-plan analytics for a specific owned Site. ```APIDOC ## GET /api/v1/publishes/:slug/analytics ### Description Gets paid-plan analytics for one owned Site. ### Method GET ### Endpoint /api/v1/publishes/:slug/analytics ### Parameters #### Path Parameters - **slug** (string) - Required - The unique slug of the site. #### Query Parameters - **range** (string) - Optional - The time range for analytics ('24h', '7d', '30d', '90d', 'all'). Defaults to '7d'. ### Response #### Success Response (200) - **analytics** (object) - An object containing analytics data. - **views** (integer) - The number of views. - **visitors** (integer) - The number of unique visitors. - **bandwidth** (string) - The total bandwidth consumed (e.g., '10MB'). #### Response Example ```json { "analytics": { "views": 1500, "visitors": 1000, "bandwidth": "15MB" } } ``` ``` -------------------------------- ### Create New Site Source: https://here.now/api/llms.txt Creates a new Site and provides presigned upload URLs for content. ```APIDOC ## POST /api/v1/publish ### Description Creates a new Site and receives presigned upload URLs. ### Method POST ### Endpoint /api/v1/publish ### Parameters #### Request Body - **name** (string) - Required - The name of the site. - **content** (object) - Optional - The content of the site. - **index.html** (string) - Optional - The index.html content. ### Request Example ```json { "name": "my-new-site", "content": { "index.html": "Hello World!" } } ``` ### Response #### Success Response (200) - **slug** (string) - The unique slug for the created site. - **uploadUrls** (object) - Presigned URLs for uploading content. - **index.html** (string) - URL for uploading index.html. #### Response Example ```json { "slug": "my-new-site-12345", "uploadUrls": { "index.html": "https://example.com/upload-url" } } ``` ``` -------------------------------- ### Create Site Source: https://here.now/docs Publishes a new site or updates an existing one. This endpoint accepts a list of files with their metadata and an optional time-to-live (TTL) for the site. It also allows setting viewer metadata like title and description. ```APIDOC ## POST /api/v1/publish (alias: POST /api/v1/artifact) ### Description Creates a new site or updates an existing one by publishing files. You can specify the files to publish, their metadata, and optionally set a time-to-live (TTL) for the site. Viewer information such as title, description, and an ogImagePath can also be provided. ### Method POST ### Endpoint /api/v1/publish or /api/v1/artifact ### Parameters #### Request Body - **files** (array) - Required - An array of file objects, where each object contains: - **path** (string) - Required - The relative path of the file within the site root (e.g., `index.html`). - **size** (integer) - Required - The size of the file in bytes. - **contentType** (string) - Required - The MIME type of the file (e.g., `text/html; charset=utf-8`). - **hash** (string) - Required - The hash of the file content. - **ttlSeconds** (integer) - Optional - The time-to-live for the site in seconds. - **viewer** (object) - Optional - An object containing viewer metadata: - **title** (string) - The title of the site to display to viewers. - **description** (string) - The description of the site. - **ogImagePath** (string) - The path to the Open Graph image. ### Request Example ```json { "files": [ {"path": "index.html", "size": 1234, "contentType": "text/html; charset=utf-8", "hash": "a1b2c3d4..."}, {"path": "assets/app.js", "size": 999, "contentType": "text/javascript; charset=utf-8", "hash": "e5f6a7b8..."} ], "ttlSeconds": null, "viewer": { "title": "My site", "description": "Published by an agent", "ogImagePath": "assets/cover.png" } } ``` ``` -------------------------------- ### GET /api/v1/publish/:slug/access Source: https://here.now/docs Retrieves the current access control policy for a published site. ```APIDOC ## GET /api/v1/publish/:slug/access ### Description Retrieves the current access control policy for a published site. ### Method GET ### Endpoint /api/v1/publish/:slug/access ### Parameters #### Path Parameters - **slug** (string) - Required - The unique identifier for the site. ``` -------------------------------- ### Publish Files with publish.sh Source: https://here.now/skill Use the publish.sh script to publish files or directories. Pass the --client flag to enable client attribution for reliability tracking. ```bash ./scripts/publish.sh {file-or-dir} --client cursor ``` -------------------------------- ### Get Account Analytics Rollup Source: https://here.now/api/llms.txt Retrieves paid-plan analytics rollups across all owned Sites. ```APIDOC ## GET /api/v1/analytics ### Description Gets paid-plan analytics rollups across all owned Sites. ### Method GET ### Endpoint /api/v1/analytics ### Parameters #### Query Parameters - **range** (string) - Optional - The time range for analytics ('24h', '7d', '30d', '90d', 'all'). Defaults to '7d'. ### Response #### Success Response (200) - **analytics** (object) - An object containing aggregated analytics data. - **totalViews** (integer) - The total number of views across all sites. - **totalVisitors** (integer) - The total number of unique visitors across all sites. - **totalBandwidth** (string) - The total bandwidth consumed across all sites. #### Response Example ```json { "analytics": { "totalViews": 10000, "totalVisitors": 8000, "totalBandwidth": "100MB" } } ``` ``` -------------------------------- ### Publish Site from Drive Source: https://here.now/docs Use the publish script to snapshot a Drive version into a published site server-side. Specify the Drive ID and optionally a version ID and slug. ```bash ./scripts/publish.sh --from-drive drv_... --slug my-site ./scripts/publish.sh --from-drive drv_... --version dv_... --client cursor ``` -------------------------------- ### GET /api/v1/me/keys Source: https://here.now/llms.txt Lists all API keys associated with the authenticated user, including their full values. ```APIDOC ## GET /api/v1/me/keys ### Description Lists API keys, including full key values. ### Method GET ### Endpoint /api/v1/me/keys ``` -------------------------------- ### GET /api/v1/publishes/bright-canvas-a7k2/analytics Source: https://here.now/docs Retrieves analytics data for a specific site (publish). Supports various time ranges. ```APIDOC ## GET /api/v1/publishes/bright-canvas-a7k2/analytics ### Description Retrieves analytics data for a specific site (publish). Supports various time ranges. ### Method GET ### Endpoint /api/v1/publishes/{slug}/analytics ### Parameters #### Query Parameters - **range** (string) - Required - Supported ranges: 24h, 7d, 30d, 90d, all ### Response #### Success Response (200) - **slug** (string) - The identifier for the publish. - **range** (string) - The time range for the analytics data. - **analyticsStartedAt** (string) - The timestamp when analytics collection started. - **lastEventAt** (string) - The timestamp of the last recorded event. - **totals** (object) - Contains aggregated metrics for the specified range. - **allTimeViews** (number) - Total views across all time. - **rangeViews** (number) - Views within the specified range. - **rangeVisitors** (number) - Visitors within the specified range. - **series** (array) - Time-series data for views and visitors. - **bucket** (string) - The date or time bucket. - **views** (number) - Number of views for the bucket. - **visitors** (number) - Number of visitors for the bucket. - **topPaths** (array) - Top paths accessed on the site. - **path** (string) - The accessed path. - **views** (number) - Number of views for the path. - **topReferrers** (array) - Top referrers to the site. - **referrer** (string) - The referrer URL or type. - **views** (number) - Number of views from the referrer. - **topCountries** (array) - Top countries from which visitors originate. - **country** (string) - The country code. - **views** (number) - Number of views from the country. - **topCrawlers** (array) - Top web crawlers accessing the site. - **crawler** (string) - The name of the crawler. - **hits** (number) - Number of hits from the crawler. - **top404Paths** (array) - Paths that resulted in a 404 error. - **path** (string) - The 404 path. - **referrer** (string) - The referrer for the 404 request. - **hits** (number) - Number of 404 hits for the path. ### Request Example { "example": "GET /api/v1/publishes/bright-canvas-a7k2/analytics?range=30d" } ### Response Example { "example": { "slug": "bright-canvas-a7k2", "range": "30d", "analyticsStartedAt": "2026-05-22T00:00:00.000Z", "lastEventAt": "2026-05-26T18:32:14.000Z", "totals": { "allTimeViews": 1240, "rangeViews": 312, "rangeVisitors": 201 }, "series": [ { "bucket": "2026-05-26", "views": 42, "visitors": 31 } ], "topPaths": [ { "path": "/", "views": 140 } ], "topReferrers": [ { "referrer": "Direct", "views": 88 } ], "topCountries": [ { "country": "US", "views": 120 } ], "topCrawlers": [ { "crawler": "GPTBot", "hits": 18 } ], "top404Paths": [ { "path": "/old-page", "referrer": "Direct", "hits": 12 } ] } } ``` -------------------------------- ### Publish a New Site Source: https://here.now/skill Use this script to publish a new website or raw files. It creates a site at a unique URL. Anonymous sites expire in 24 hours; authenticated sites are permanent. Ensure index.html is at the root for HTML sites. ```bash ./scripts/publish.sh {file-or-dir} ``` -------------------------------- ### Links Source: https://here.now/docs Connect a site to a location on your subdomain handle or custom domain. The same endpoints work for both. Omit the `domain` parameter to target your subdomain handle, or include it to target a custom domain. Use an empty location for the root. ```APIDOC ## Links API ### Description Connect a site to a location on your subdomain handle or custom domain. The same endpoints work for both. Omit the `domain` parameter to target your subdomain handle, or include it to target a custom domain. Use an empty location for the root. ### Methods - POST /api/v1/links - GET /api/v1/links - GET /api/v1/links/:location ``` -------------------------------- ### Get Public Profile Settings Source: https://here.now/api/llms.txt Retrieves public profile settings and a list of Sites shown on the profile. ```APIDOC ## GET /api/v1/profile ### Description Gets public profile settings and Sites shown on the profile. ### Method GET ### Endpoint /api/v1/profile ### Response #### Success Response (200) - **username** (string) - The profile username. - **bio** (string) - The profile biography. - **showSites** (boolean) - Whether to automatically list Sites on the profile. - **sites** (array) - A list of Site objects displayed on the profile. - **slug** (string) - The unique slug of the site. - **name** (string) - The name of the site. #### Response Example ```json { "username": "john_doe", "bio": "Passionate developer.", "showSites": true, "sites": [ { "slug": "my-site-1", "name": "My First Site" } ] } ``` ```