Skip to content

API reference

Create app

documents.CreateAppWriteMember delegation

Create an app, website or newsletter from a name, description, installed template, or built-in example. Returns a content ID and its Brigg URL. Content type, reusable and private options apply only when creating blank content; a clone keeps its source classification.

POST/v1/operations/documents.CreateApp
On this page

Access & visibility

Allow documents.CreateApp on your API key.

Acting member required. Send Brigg-Act-As with an approved member account ID. The key supplies permissions; the member selects whose data is used.

The selected member must be active and approved by the credential. This selects whose private data is used; the credential supplies permissions. Private ownership and project boundaries still apply.

Set up authentication · Choose permissions

Request fields

Send a JSON object with the following fields. Required fields must be included; omit optional fields you do not need.

namestringOptional

The new bundle's display name. With a clone it overrides the source's label.

At least 1 character. At most 200 characters.

descriptionstringOptional

What to build — mints a blank bundle for a builder to fill in.

At least 1 character. At most 2000 characters.

iconstringOptional

A sidebar icon from the curated catalog, on a blank mint.

Allowed: "default", "home", "users", "shield", "trophy", "headphones", "briefcase", "award", "building", "scale", "rocket", "calendar", "checklist", "folder", "graph", "lightbulb", "money", "package", "phone", "puzzle", "star", "tag", "cloud", "globe", "clock", "receipt", "book", "chat", "funnel", "kanban", "ticket".

content_typestringOptional

Media type of the file, such as application/pdf. Null when no binary file exists.

Allowed: "app", "website", "newsletter".

example_idstringOptional

Clone this built-in example (a list_examples slug).

At least 1 character. At most 80 characters.

template_catalog_idstringOptional

Instantiate this installed template — its authoring slug (list_templates → installed[].parent_template_slug).

At least 1 character. At most 80 characters.

reusablebooleanOptional

Blank mint only: a reusable template (hidden from the menu) rather than a one-off.

privatebooleanOptional

Blank mint only: private to the caller (a signing document belongs to one person until signed).

Response

Returns 200 OK with a JSON body.

content_idstringRequired

Opaque ID from workspace.ListBundles. Its kind distinguishes apps, websites, newsletters, documents, templates and integrations; it is not an uploaded file ID.

labelstringRequired

Human-readable name for this content or saved version.

urlstringRequired

Absolute URL, including its scheme.

version_idstring or nullRequired

The version a clone's bytes were written to; null on a blank mint.

Errors & retries

Set BRIGG_REQUEST_ID once for each logical action. The samples send it as Idempotency-Key. Reuse the same value and body on retries, including after a timeout; a missing response does not prove the action failed.

For rate limits, follow the server’s retry guidance and back off. See HTTP errors and safe retries and limits.

HTTP status Code What to do
400 invalid_json Send a JSON object with Content-Type: application/json.
400 invalid_input Check the request fields and types. Supply a stable Idempotency-Key containing 1–200 characters.
401 invalid_key The workspace API key is missing, invalid or revoked.
403 forbidden Check the key’s operation and resource grants. Supply Brigg-Act-As with a member authorized by the key’s delegation grant. The selected member must be active and approved by the credential. This selects whose private data is used; the credential supplies permissions. Private ownership and project boundaries still apply.
404 not_found The requested operation or resource is not available to this credential.
429 rate_limited Wait for Retry-After before retrying. Reuse the original Idempotency-Key.

Next steps

Download OpenAPI · Versioning & retirement

JSON schemas

Use the complete schemas for validation or client generation.

Full request JSON schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The new bundle's display name. With a clone it overrides the source's label."
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "What to build — mints a blank bundle for a builder to fill in."
    },
    "icon": {
      "type": "string",
      "enum": [
        "default",
        "home",
        "users",
        "shield",
        "trophy",
        "headphones",
        "briefcase",
        "award",
        "building",
        "scale",
        "rocket",
        "calendar",
        "checklist",
        "folder",
        "graph",
        "lightbulb",
        "money",
        "package",
        "phone",
        "puzzle",
        "star",
        "tag",
        "cloud",
        "globe",
        "clock",
        "receipt",
        "book",
        "chat",
        "funnel",
        "kanban",
        "ticket"
      ],
      "description": "A sidebar icon from the curated catalog, on a blank mint."
    },
    "content_type": {
      "type": "string",
      "enum": [
        "app",
        "website",
        "newsletter"
      ],
      "description": "Media type of the file, such as application/pdf. Null when no binary file exists."
    },
    "example_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "Clone this built-in example (a `list_examples` slug)."
    },
    "template_catalog_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "Instantiate this installed template — its authoring slug (`list_templates` → `installed[].parent_template_slug`)."
    },
    "reusable": {
      "type": "boolean",
      "description": "Blank mint only: a reusable template (hidden from the menu) rather than a one-off."
    },
    "private": {
      "type": "boolean",
      "description": "Blank mint only: private to the caller (a signing document belongs to one person until signed)."
    }
  },
  "additionalProperties": false,
  "examples": [
    {}
  ]
}
Full response JSON schema
{
  "type": "object",
  "properties": {
    "content_id": {
      "type": "string",
      "description": "Opaque ID from workspace.ListBundles. Its kind distinguishes apps, websites, newsletters, documents, templates and integrations; it is not an uploaded file ID."
    },
    "label": {
      "type": "string",
      "description": "Human-readable name for this content or saved version."
    },
    "url": {
      "type": "string",
      "description": "Absolute URL, including its scheme."
    },
    "version_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "The version a clone's bytes were written to; null on a blank mint."
    }
  },
  "required": [
    "content_id",
    "label",
    "url",
    "version_id"
  ],
  "additionalProperties": false,
  "examples": [
    {
      "content_id": "e_example",
      "label": "Consulting proposal",
      "url": "https://example.com",
      "version_id": null
    }
  ]
}

Search by operation name or what you want to build.

Use arrow keys to browse. Enter opens a result.