---
title: "Create brand kit imports"
method: POST
path: "/api/v1/alpha/brand-kit-imports/create"
tags: ["alpha"]
---

# Create brand kit imports

`POST /api/v1/alpha/brand-kit-imports/create`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/alpha/brand-kit-imports/create`
- Auth: OAuth 2 (authorization code, authorization URL `https://auth.point11.ai/oauth2/authorize`, token URL `https://auth.point11.ai/oauth2/token`)

Declare a batch of files (1 to 64: name, media type, size and SHA-256 each) to import into an active Brand Kit. Returns the import and, per file, one presigned upload to send its bytes with, or why it was refused (the kit already holds the same file, or has no room for it under its 64 assets). Retrying with the same Idempotency-Key and body answers the same import with fresh uploads for the files still waiting for their bytes. Then call alpha_brand_kit_imports_start. Needs a signed-in member: the revision an import adds is that member's, as an edit's is, and records their licence for each font it embeds.

## Headers

- `Point11-Organization` string, uuid
- `Idempotency-Key` string, uuid, required

## Request body

- AlphaBrandKitImportsCreateRequest
  - `kitKey` string: The active kit the files are for. Give this or newKit, not both.
  - `newKit` object: Create a new kit for these files instead of naming one. It has no website: its colors, type and voice are read from the files, which then join it. Give this or kitKey, not both.
    - `name` string, required: The new kit's name.
  - `files` object[], required
    - `name` string, required: The file's name, at most 255 characters. Control characters and bidirectional controls (U+202A–U+202E, U+2066–U+2069) are removed and the name is trimmed; the import answers the name it kept.
    - `mediaType` 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' | 'application/vnd.openxmlformats-officedocument.presentationml.presentation' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' | 'application/pdf' | 'application/vnd.openxmlformats-officedocument.presentationml.template' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' | 'image/png' | 'image/jpeg' | 'image/webp' | 'image/svg+xml' | 'font/woff' | 'font/woff2' | 'font/ttf' | 'font/otf', required
    - `byteLength` integer, required: Exact size in bytes, at most 20 MiB.
    - `sha256` string, required: Lowercase hex SHA-256 of the exact bytes you will upload.

## Response `200`

Success.

- AlphaBrandKitImportsCreateResponse
  - `importId` string, uuid, required
  - `kitKey` string, required: The kit the files are for: the new kit, when one was named.
  - `serverTime` string, date-time, required: The server's clock when it answered. An upload's time left is its expiresAt less this, whatever your own clock says.
  - `files` object[], required
    - `fileId` string, uuid, required
    - `name` string, required
    - `upload` object, nullable, required: Send the file as the body of exactly this request before expiresAt. Null when the file is refused, already uploaded, or the import has started.
      - `method` 'PUT', required
      - `url` string, uri, required
      - `headers` object, required
      - `expiresAt` string, date-time, required
    - `refusal` 'media_type_unsupported' | 'size_invalid' | 'kit_full' | 'already_in_kit' | 'kit_unavailable' | 'not_uploaded' | 'bytes_mismatch' | 'template_hazard', nullable, required: Why the file will not be added. A replay after start.v1 also answers what start refused.

## Other responses

- `400`: The input, query, or Idempotency-Key is invalid.
- `401`: The bearer is missing, expired, or not accepted.
- `402`: Billing refused the write: the code names the reason and `details.reason` carries it.
- `403`: The credential lacks the operation's scope or role, or the operation needs a different door.
- `404`: The resource or organization does not exist for this caller.
- `405`: This path takes another HTTP method, named in `Allow`.
- `409`: The request conflicts with current state or with prior use of its Idempotency-Key.
- `413`: The request, or the answer it asks for, is too large; narrow it.
- `429`: The credential's rate budget is spent; retry after `Retry-After` seconds.
- `500`: An unexpected server failure; retry later. Only `request_id` identifies it.
- `503`: A dependency is temporarily unavailable; retry after `Retry-After` seconds.
- `default`: Another status a product answers for its own refusal (for example `415` for an unsupported attachment); branch on `code`.

---

[API](https://skmtc.dev/point11/apis/point11-api.md) · [All operations](https://skmtc.dev/point11/apis/point11-api/llms.txt) · [OpenAPI document](https://skmtc.dev/point11/apis/point11-api/revisions/36a84c7aca11?raw)
