# Send Biver Builder to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "biver-builder",
    "name": "Biver Builder",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/RamaAditya49/biver-builder",
    "canonicalUrl": "https://clawhub.ai/RamaAditya49/biver-builder",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/biver-builder",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=biver-builder",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "biver-builder",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T15:35:23.261Z",
      "expiresAt": "2026-05-07T15:35:23.261Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=biver-builder",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=biver-builder",
        "contentDisposition": "attachment; filename=\"biver-builder-1.0.4.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "biver-builder"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/biver-builder"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/biver-builder",
    "downloadUrl": "https://openagent3.xyz/downloads/biver-builder",
    "agentUrl": "https://openagent3.xyz/skills/biver-builder/agent",
    "manifestUrl": "https://openagent3.xyz/skills/biver-builder/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/biver-builder/agent.md"
  }
}
```
## Documentation

### Before You Install

Security Checklist
Before installing or supplying credentials, please review:

Credential Required: This skill requires BIVER_API_KEY to operate
Start with Test Keys: Use bvr_test_ prefix keys for initial testing — never use bvr_live_ keys until you trust the skill
Verify Scopes: Check required API key scopes below and use least-privilege principle
Rotate Keys: Periodically rotate your API keys for security
Inspect Source: If using manual installation, inspect the GitHub repository code before cloning

### Via ClawdHub (Recommended)

clawdhub install biver-builder

### Manual

Warning: Cloning external repositories can introduce arbitrary code. Inspect the repository first before running:
# Step 1: Review the source code
git clone https://github.com/RamaAditya49/biver-builder.git /tmp/biver-builder-review
# Review files in /tmp/biver-builder-review before proceeding

# Step 2: Only after review, install to your skills directory
git clone https://github.com/RamaAditya49/biver-builder.git ~/.openclaw/skills/biver-builder

### Required Environment Variables

VariableDescriptionExampleBIVER_API_KEYYour Biver API keybvr_live_xxxxx or bvr_test_xxxxx

### Optional Environment Variables

VariableDescriptionDefaultBIVER_API_BASE_URLCustom API base URLhttps://api.biver.id

### Setting Up Credentials

Via OpenClaw Dashboard:

Navigate to Settings > Environment Variables
Add BIVER_API_KEY with your API key value
(Optional) Add BIVER_API_BASE_URL for custom endpoints

Security Best Practices:

Use bvr_test_ prefix keys for development/testing
Use bvr_live_ prefix keys only in production after you trust the skill
Verify required scopes before creating your API key — only grant minimum permissions needed
Never commit API keys to version control
Rotate keys periodically
Do not supply credentials until you have reviewed the skill or confirmed it from a verified source

### How to Get Your API Key

Log in to Biver Dashboard
Go to Settings > API Keys
Click Generate New Key
Select required scopes (see Required Scopes section below — grant only what you need)
Choose key type: bvr_test_ for testing, bvr_live_ for production
Copy and store securely (shown only once)

Scope Recommendation: Start with read-only scopes (*:read) for testing. Add write scopes only when needed.

### Base URL

https://api.biver.id

### Authentication Headers

// Use environment variables for security
const apiKey = process.env.BIVER_API_KEY;

// Headers configuration
{
  'X-API-Key': apiKey,
  'Authorization': \`Bearer ${apiKey}\`
}

### API Key Prefixes

PrefixEnvironmentUsagebvr_live_ProductionReal data operationsbvr_test_SandboxTesting without affecting real data

### Endpoint Lookup

TaskEndpointMethodAuthScopeList pages/v1/pagesGETYespages:readCreate page/v1/pagesPOSTYespages:writeGet page/v1/pages/:idGETYespages:readUpdate page/v1/pages/:idPATCHYespages:writeDelete page/v1/pages/:idDELETEYespages:writeDeploy page/v1/pages/:id/deployPOSTYespages:writeList subdomains/v1/subdomainsGETYespages:readCreate subdomain/v1/subdomainsPOSTYespages:writeUpdate subdomain/v1/subdomains/:idPATCHYespages:writeDelete subdomain/v1/subdomains/:idDELETEYespages:writeList domains/v1/domainsGETYesdomains:readAdd custom domain/v1/domainsPOSTYesdomains:writeSet primary domain/v1/domains/:id/primaryPOSTYesdomains:writeDelete domain/v1/domains/:idDELETEYesdomains:writeList sections/v1/sectionsGETYessections:readCreate section/v1/sectionsPOSTYessections:writeUpdate section/v1/sections/:idPATCHYessections:writeDelete section/v1/sections/:idDELETEYessections:writeList products/v1/productsGETYesproducts:readCreate product/v1/productsPOSTYesproducts:writeUpdate product/v1/products/:idPATCHYesproducts:writeDelete product/v1/products/:idDELETEYesproducts:writeList forms/v1/formsGETYesforms:readCreate form/v1/formsPOSTYesforms:writeGet submissions/v1/forms/:id/submissionsGETYesforms:readSubmit form/v1/forms/:id/submitPOSTNo-List gallery/v1/galleryGETYesgallery:readUpload asset/v1/galleryPOSTYesgallery:readDelete asset/v1/gallery/:idDELETEYesgallery:readGet workspace/v1/workspace/settingsGETYesworkspace:readUpdate workspace/v1/workspace/settingsPUTYesworkspace:writeUpdate branding/v1/workspace/brandingPUTYesworkspace:writeUpdate SEO/v1/workspace/seoPUTYesworkspace:writeAI generate page/v1/ai/pagesPOSTYesai:generateAI generate section/v1/ai/sectionsPOSTYesai:generateHealth check/healthGETNo-

### Required Scopes

ScopeDescriptionpages:readRead pagespages:writeCreate, update, delete pagessections:readRead sectionssections:writeCreate, update, delete sectionsproducts:readRead productsproducts:writeManage product catalogforms:readRead forms and submissionsforms:writeCreate/update formsgallery:readAccess gallery assetsdomains:readView custom domainsdomains:writeAdd/remove custom domainssubdomains:readView subdomainssubdomains:writeCreate/update/delete subdomainsworkspace:readRead workspace settingsworkspace:writeUpdate workspace settingsai:generateGenerate pages/sections with AI

### Workflow 1: Create Landing Page with Subdomain

const API_KEY = process.env.BIVER_API_KEY;
const BASE_URL = process.env.BIVER_API_BASE_URL || 'https://api.biver.id';

// Step 1: Create subdomain
const subdomain = await fetch(\`${BASE_URL}/v1/subdomains\`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': API_KEY
  },
  body: JSON.stringify({
    subdomain: 'my-store',
    title: 'Summer Sale 2026',
    description: 'Our biggest sale event',
    pathSlug: 'summer-sale'
  })
});
// Result: my-store.lp.biver.id/summer-sale

// Step 2: Create sections for the page
const section = await fetch(\`${BASE_URL}/v1/sections?pageId=PAGE_ID\`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': API_KEY
  },
  body: JSON.stringify({
    type: 'hero',
    name: 'Hero Section',
    htmlContent: '<div class="hero">...</div>',
    cssContent: '.hero { ... }',
    visible: true,
    order: 0
  })
});

// Step 3: Update subdomain status to publish
await fetch(\`${BASE_URL}/v1/subdomains/${subdomainId}\`, {
  method: 'PATCH',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': API_KEY
  },
  body: JSON.stringify({
    status: 'published'
  })
});

### Workflow 2: Setup Custom Domain

const API_KEY = process.env.BIVER_API_KEY;
const BASE_URL = process.env.BIVER_API_BASE_URL || 'https://api.biver.id';

// Step 1: Add custom domain
const domain = await fetch(\`${BASE_URL}/v1/domains\`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': API_KEY
  },
  body: JSON.stringify({
    domain: 'example.com',
    isPrimary: true,
    landingPageId: 'page_123'
  })
});

// Step 2: Configure DNS (outside API)
// Add verification token to DNS records
// Token provided in response: verificationToken

// Step 3: Set as primary (optional)
await fetch(\`${BASE_URL}/v1/domains/${domainId}/primary\`, {
  method: 'POST',
  headers: { 'X-API-Key': API_KEY }
});

### Workflow 3: Generate Page with AI

const API_KEY = process.env.BIVER_API_KEY;
const BASE_URL = process.env.BIVER_API_BASE_URL || 'https://api.biver.id';

const aiPage = await fetch(\`${BASE_URL}/v1/ai/pages\`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': API_KEY
  },
  body: JSON.stringify({
    prompt: 'Create a landing page for a coffee shop called Morning Brew',
    style: 'modern',
    industry: 'fnb',
    language: 'en'
  })
});
// Returns: title, content.sections[], suggestedSlug

### Workflow 4: Upload Asset and Create Page

const API_KEY = process.env.BIVER_API_KEY;
const BASE_URL = process.env.BIVER_API_BASE_URL || 'https://api.biver.id';

// Step 1: Upload image to gallery
const formData = new FormData();
formData.append('file', imageFile);

const asset = await fetch(\`${BASE_URL}/v1/gallery\`, {
  method: 'POST',
  headers: { 'X-API-Key': API_KEY },
  body: formData
});

// Step 2: Use asset URL in page content
const page = await fetch(\`${BASE_URL}/v1/pages\`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': API_KEY
  },
  body: JSON.stringify({
    title: 'Product Catalog',
    slug: 'catalog',
    content: {
      sections: [{
        type: 'image',
        imageUrl: asset.data.url
      }]
    }
  })
});

### Pages API

Base: /v1/pages | Scope: pages:read / pages:write

EndpointMethodDescriptionQuery Params / Body/v1/pagesGETList pagespage, limit, status, search/v1/pagesPOSTCreate pagetitle, slug, content, meta, status/v1/pages/:idGETGet page detail-/v1/pages/:idPATCHUpdate pagePartial body/v1/pages/:idDELETEDelete page-/v1/pages/:id/deployPOSTPublish page-

Page Object:

{
  "id": "page_123",
  "title": "Summer Sale",
  "slug": "summer-sale",
  "status": "published",
  "publishedAt_ms": 1708704000000,
  "createdAt_ms": 1708617600000
}

Create Page Body:

{
  "title": "Page Title",
  "slug": "page-slug",
  "content": { "sections": [] },
  "meta": {
    "description": "SEO description",
    "keywords": "keyword1, keyword2"
  },
  "status": "draft"
}

### Sections API

Base: /v1/sections | Scope: sections:read / sections:write

EndpointMethodDescription/v1/sectionsGETList sections (?type=, ?pageId=)/v1/sectionsPOSTCreate section/v1/sections/:idGETGet section detail/v1/sections/:idPATCHUpdate section/v1/sections/:idDELETEDelete section

Section Types: hero, text, image, image_slider, faq, features, pricing, cta, testimonials, contact

Create Section Body:

{
  "type": "hero",
  "name": "Hero Section",
  "htmlContent": "<div>...</div>",
  "cssContent": ".class { ... }",
  "visible": true,
  "order": 0,
  "customClass": "my-custom",
  "anchorId": "hero"
}

### Products API

Base: /v1/products | Scope: products:read / products:write

EndpointMethodDescription/v1/productsGETList products (?page, ?limit, ?category)/v1/productsPOSTCreate product/v1/products/:idGETGet product detail/v1/products/:idPATCHUpdate product/v1/products/:idDELETEDelete product

Create Product Body:

{
  "name": "Product Name",
  "description": "Full description",
  "price": 99000,
  "compareAtPrice": 149000,
  "sku": "PROD-001",
  "stock": 100,
  "category": "electronics",
  "images": ["url1", "url2"],
  "isActive": true
}

### Forms API

Base: /v1/forms | Scope: forms:read / forms:write

EndpointMethodDescriptionAuth/v1/formsGETList formsYes/v1/formsPOSTCreate formYes/v1/forms/:idGETGet form detailYes/v1/forms/:idPATCHUpdate formYes/v1/forms/:idDELETEDelete formYes/v1/forms/:id/submitPOSTSubmit formNo/v1/forms/:id/submissionsGETGet submissionsYes

Submit Form Body (Public - No Auth):

{
  "data": {
    "name": "John Doe",
    "email": "john@example.com",
    "message": "Hello!"
  }
}

### Gallery API

Base: /v1/gallery | Scope: gallery:read

EndpointMethodDescription/v1/galleryGETList items (\`?type=image/v1/galleryPOSTUpload asset (multipart/form-data)/v1/gallery/:idGETGet asset detail/v1/gallery/:idDELETEDelete asset

Gallery Item Response:

{
  "id": "gallery_123",
  "filename": "hero-image.png",
  "url": "https://cdn.biver.id/assets/xxx.png",
  "type": "image",
  "mimeType": "image/png",
  "size": 102400,
  "width": 1920,
  "height": 1080
}

### Subdomains API

Base: /v1/subdomains | Scope: pages:read / pages:write

Subdomains create landing pages at {name}.lp.biver.id.

EndpointMethodDescription/v1/subdomainsGETList subdomains (?page, ?limit, ?status)/v1/subdomainsPOSTCreate subdomain/v1/subdomains/:idGETGet subdomain detail/v1/subdomains/:idPATCHUpdate subdomain/v1/subdomains/:idDELETEDelete subdomain

Create Subdomain Body:

{
  "subdomain": "my-store",
  "title": "My Store",
  "description": "Store description",
  "pathSlug": "promo"
}

Subdomain Rules:

subdomain: 3-63 chars, lowercase a-z, 0-9, hyphens
pathSlug: Optional, creates additional URL at {subdomain}.lp.biver.id/{pathSlug}
status: draft, published, archived

Update Subdomain Fields:

FieldTypeDescriptiontitlestringPage titledescriptionstringPage descriptionpathSlugstring | nullURL path (null to remove)statusstringdraft, published, archivedmetaTitlestringSEO titlemetaDescriptionstringSEO descriptionfaviconstring (URL)Favicon URLogImagestring (URL)Open Graph imagenoIndexbooleanPrevent indexingnoFollowbooleanPrevent link following

### Domains API (Custom Domains)

Base: /v1/domains | Scope: domains:read / domains:write

EndpointMethodDescription/v1/domainsGETList custom domains/v1/domainsPOSTAdd custom domain/v1/domains/:idGETGet domain detail (includes DNS records)/v1/domains/:idPATCHUpdate domain/v1/domains/:idDELETERemove domain/v1/domains/:id/primaryPOSTSet as primary domain

Add Domain Body:

{
  "domain": "example.com",
  "isPrimary": true,
  "landingPageId": "page_123"
}

Domain Response:

{
  "id": "domain_123",
  "domain": "example.com",
  "isPrimary": true,
  "isVerified": true,
  "sslStatus": "active",
  "verificationStatus": "verified",
  "verificationToken": "bvr_verify_xxx",
  "landingPageId": "page_123"
}

DNS Configuration (CNAME Setup):

AI Agent: When helping users set up custom domains, explain the following CNAME configuration steps clearly.

After adding a custom domain via the API, configure your DNS records with your DNS provider:

Point your CNAME record to:
custom.biver.id



Example Configuration:
Record TypeName/HostValue/TargetCNAMEshop (or www)custom.biver.id


What this does:

If your domain is shop.example.com, add a CNAME record with name shop pointing to custom.biver.id
If using apex domain (example.com), check if your DNS provider supports CNAME flattening or use A records as provided in the domain detail response



Propagation: DNS changes may take 5-60 minutes to propagate globally.

### Workspace API

Base: /v1/workspace | Scope: workspace:read / workspace:write

EndpointMethodDescription/v1/workspace/settingsGETGet workspace settings/v1/workspace/settingsPUTUpdate settings/v1/workspace/brandingPUTUpdate branding/v1/workspace/seoPUTUpdate SEO settings/v1/workspace/publicGETPublic workspace info (no auth)

Workspace Settings:

{
  "id": "workspace_123",
  "name": "My Workspace",
  "slug": "my-workspace",
  "plan": "ARCHITECT",
  "settings": {
    "timezone": "Asia/Jakarta",
    "language": "en",
    "currency": "USD"
  },
  "branding": {
    "logo": "https://cdn.biver.id/logos/xxx.png",
    "primaryColor": "#3B82F6",
    "fontFamily": "Inter"
  },
  "seo": {
    "title": "My Business",
    "description": "We build great landing pages",
    "keywords": "landing page, builder"
  }
}

### AI Generation API

Base: /v1/ai | Scope: ai:generate

EndpointMethodDescription/v1/ai/pagesPOSTGenerate page with AI/v1/ai/sectionsPOSTGenerate section with AI/v1/ai/contextGETGet AI templates/context

Generate Page Body:

{
  "prompt": "Create a landing page for a coffee shop",
  "style": "modern",
  "industry": "fnb",
  "language": "en"
}

Style Options: modern, minimal, bold, elegant, playful
Industry Options: saas, fnb, ecommerce, agency, healthcare, education, finance, realestate

### Error Codes

CodeHTTPDescriptionSolutionUNAUTHORIZED401Invalid or missing API keyCheck authentication headerKEY_EXPIRED401API key has expiredGenerate new key from dashboardKEY_REVOKED401API key was revokedGenerate new key from dashboardFORBIDDEN403Insufficient scope permissionCheck API key scopesNOT_FOUND404Resource not foundVerify resource IDDUPLICATE_SUBDOMAIN409Subdomain already takenChoose different subdomainDUPLICATE_DOMAIN409Domain already existsUse different domainVALIDATION_ERROR422Request validation failedCheck request body formatRATE_LIMIT_EXCEEDED429Too many requestsWait for reset or upgrade planINTERNAL_ERROR500Server errorRetry or contact support

Error Response Format:

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Request validation failed",
    "details": {
      "fields": [
        { "field": "title", "message": "Title is required", "code": "required" }
      ]
    }
  }
}

### Rate Limits

PlanRequests/MinuteTarget UserSCOUT30Free tierCRAFTSMAN60Small businessesARCHITECT120Growing businessesENGINEER300Medium businessesFOUNDER600AgenciesCHIEF2000Enterprise

Rate Limit Headers:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1708704000000
X-RateLimit-Plan: CRAFTSMAN

### Response Format

All responses follow this structure:

Success:

{
  "success": true,
  "data": { ... }
}

Paginated:

{
  "success": true,
  "data": {
    "items": [...],
    "pagination": {
      "page": 1,
      "limit": 10,
      "total": 25,
      "totalPages": 3
    }
  }
}

### API Key Safety

Never hardcode API keys in source code
Always use environment variables or secure secret stores
Use test keys (bvr_test_) for development
Limit scopes to minimum required for your use case

### DNS Configuration

Custom domain setup requires DNS changes outside this API
Always verify domain ownership before making DNS changes
Keep DNS verification tokens secure

### Rate Limiting

Respect rate limits based on your plan
Implement retry logic with exponential backoff
Monitor X-RateLimit-Remaining header

### Support

Dashboard: https://biver.id/dashboard
Email: support@biver.id
Health Check: GET /health (no auth required)
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: RamaAditya49
- Version: 1.0.4
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-04-30T15:35:23.261Z
- Expires at: 2026-05-07T15:35:23.261Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/biver-builder)
- [Send to Agent page](https://openagent3.xyz/skills/biver-builder/agent)
- [JSON manifest](https://openagent3.xyz/skills/biver-builder/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/biver-builder/agent.md)
- [Download page](https://openagent3.xyz/downloads/biver-builder)