---
title: "space.build-space@1 · OpenVibe.Services"
canonical: "https://openvibe.services/docs/contracts/space.build-space"
updated: null
---

# space.build-space@1 · OpenVibe.Services

HTML: [space.build-space@1 · OpenVibe.Services](https://openvibe.services/docs/contracts/space.build-space)

# SpaceBuildSpace `space.build-space@1`

Generated at 2026-11-13 06:25:48 UTC from [`openvibe-contracts v0.419.0`](https://github.com/OpenVibers/OpenVibe.Contracts/tree/v0.419.0) and [`openvibe-sdk v0.161.0`](https://github.com/OpenVibers/OpenVibe.SDK/tree/v0.161.0).

- Version: 1.0.0
- Owner: space
- Visibility: first-party
- Status: active
- Compatibility: backward
- Schema: [`https://openvibe.network/contracts/space/build-space.v1.json`](/docs/contracts/space.build-space.json)

space.build-space@1: one of a person's own spaces, as their agent sees it while it builds (OpenVibe.Space's builder API; plan 2026-10-22 §Z stage Z1). The id, the slug it publishes under, its name and description, whether it is published and where, and when it last changed. Nothing about anyone else's space is ever in this shape.

## Fields

| Field | Type | Required | Description | Constraints |
| --- | --- | --- | --- | --- |
| `id` | string | yes | The space's id. | - `pattern ^spc_[0-9A-HJKMNP-TV-Z]{26}$` |
| `slug` | string | yes | The name it publishes under (<slug>.openvibe.website). | - `pattern ^[a-z0-9](?:[a-z0-9]\|-(?=[a-z0-9])){2,39}$` |
| `name` | string | yes |  | - `maxLength 40` |
| `description` | string |  |  | - `maxLength 400` |
| `published` | boolean | yes | True while it is live at its own address. |  |
| `url` | string | yes | Where it lives: its own address once published, the editor while it is a draft. | - `format uri` |
| `updated_at` | string |  | When it last changed. | - `format date-time` |

## Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

 Valid: one

~~~~
{
  "id": "spc_01JAD2C3D4E5F6G7H8J9K0MNPQ",
  "slug": "my-podcast",
  "name": "My Podcast",
  "description": "A place for my episodes.",
  "published": true,
  "url": "https://my-podcast.openvibe.website",
  "updated_at": "2026-11-07T09:30:00.000Z"
}
~~~~

Rejected: bad-id

~~~~
{
  "id": "space-1",
  "slug": "my-podcast",
  "name": "My Podcast",
  "published": false,
  "url": "https://my-podcast.openvibe.website"
}
~~~~

## Validate

~~~~
const contracts = require('openvibe-contracts');
contracts.validate('space.build-space@1', value);   // { valid, errors: [{ path, message }] }
~~~~
