---
title: "create"
repo: "WEARFITS/saas"
last_updated: "2026-10-12"
source_files:
  - "src/pages/create/index.tsx"
  - "src/pages/create/[requestId].tsx"
  - "src/pages/s/[slug].tsx"
  - "src/pages/api/v1/create/claim.ts"
  - "src/pages/api/v1/create/source-images.ts"
  - "src/pages/api/v1/create/requests/index.ts"
  - "src/pages/api/v1/create/requests/[id]/index.ts"
  - "src/pages/api/v1/create/requests/[id]/share.ts"
  - "src/pages/api/v1/create/checkout.ts"
  - "src/application/create/createPage.operations.ts"
  - "src/application/create/createView.operations.ts"
  - "src/application/create/createCheckout.operations.ts"
  - "src/application/create/create.client.ts"
  - "src/domain/create/create.config.ts"
  - "src/domain/create/createCopy.config.ts"
  - "src/UI/building-blocks/create/CreateStart.organism.tsx"
  - "src/UI/building-blocks/create/CreateResult.organism.tsx"
  - "src/UI/building-blocks/create/SharePage.organism.tsx"
description: "WEARFITS /create lets a new personal account turn photos of one shoe into a 3D model, try it on with a phone, share it publicly, and upgrade from the result..."
---


# Create a free 3D shoe

WEARFITS `/create` lets a new personal account turn photos of one shoe into a 3D model, try it on with a phone, share it publicly, and upgrade from the result page when more product features are needed.

The flow includes:

- One free shoe generation
- Magic-link sign-in
- Upload of one to four shoe photos
- A short store question
- 3D preview with AR on compatible mobile devices
- Phone try-on and desktop QR codes
- Ready and failed email notifications
- Public sharing at `/s/<slug>`
- Plan checkout that returns to the same model

> Availability may be introduced gradually. If the flow is paused or your account is directed to Plans, use the available plan options or contact WEARFITS.

## Prerequisites

For the dashboard flow, you need:

- A personal WEARFITS account without an active plan
- Access to the email address used for sign-in
- One to four photos of the same shoe
- JPG, JPEG, PNG, or WebP images
- A modern browser
- A compatible phone for AR and phone try-on

Accounts already using a team or partner workspace should generate models through that workspace instead of the free `/create` flow.

## How the flow works

```mermaid
graph TD
    A[Open /create] --> B[Choose 1–4 shoe photos]
    B --> C[Request a magic sign-in link]
    C --> D[Open the link]
    D --> E[Answer the store question]
    E --> F[Click Generate]
    F --> G[Generation in progress]
    G --> H{Generation result}
    H -->|Ready| I[3D preview, AR and phone try-on]
    H -->|Ready| J[Enable public sharing]
    H -->|Ready| K[Upgrade or open the model in Studio]
    H -->|Failed| L[Failure email and retry guidance]
    J --> M[Public /s/ page]
    K --> N[Secure plan checkout]
    N --> O[Return to the same result page]
```

## Step-by-step

### 1. Choose photos

Open:

```text
https://dash.wearfits.com/create
```

Choose one to four photos showing the same shoe from different angles. A plain background and good lighting generally produce better results.

Before sign-in, photos remain in the current browser. They are not sent for generation until you return from the magic link and explicitly start the generation.

If you open the sign-in link on another device or browser, the original photo draft will not be available there. Return to the browser where you selected the photos, or choose the photos again.

### 2. Sign in with a magic link

Enter your email address and select the sign-in or sign-up action. WEARFITS sends a secure link to your inbox.

The `/create` sign-in flow returns you to the generator. It does not require the usual AI/AR onboarding question.

### 3. Answer the store question

Before generation, answer:

> Do you sell shoes online?

You can select **Yes** or **No**. If you select **Yes**, you can optionally enter your store URL. The address should be a normal web address, such as:

```text
https://example.com
```

This information helps WEARFITS understand the type of customer using the self-serve flow. It does not grant or remove product access.

### 4. Start generation

Select **Generate my 3D shoe**.

Generation does not start merely because photos were uploaded. The explicit Generate action is required.

The progress screen shows:

- That the model is being prepared
- The elapsed time
- Typical timing of approximately 10–27 minutes

There is no percentage or countdown. You can close the browser while the generation continues.

### 5. Review the result

When the model is ready, the result page provides:

- An interactive 3D preview
- AR on compatible mobile browsers
- A phone try-on link
- A QR code for opening the phone experience from a desktop
- A public sharing option
- Upgrade actions for downloading or using the model in the wider WEARFITS product

On a phone, use the AR or try-on action directly. On a computer, scan the displayed QR code with your phone.

## Email notifications

WEARFITS sends a transactional email when the generation finishes.

### Ready email

The ready email includes:

- A link to view the result
- A **See it on your foot** action
- A QR code for opening the model on a phone when sharing is enabled
- Guidance about what a plan unlocks

### Failed email

If the generation fails, the email explains that the model could not be completed and provides retry guidance when another attempt is available.

A failed generation does not always mean that another free attempt is available. The result page is the source of truth for whether **Try again** is offered.

## Free-generation limits

The self-serve offer is intended for one first model:

- One free generation per person and verified mailbox
- A retry may be available when a generation fails in an eligible way
- Daily capacity is limited
- Additional generations and product features require a plan

Deleting a model does not restore the free generation. A completed free generation remains used even if the model is later removed.

## Public sharing

From the result page, enable sharing to create a public URL such as:

```text
https://dash.wearfits.com/s/AbC_-123xyz9
```

Anyone with the URL can open the public page without a WEARFITS account. The page includes the 3D model, supported AR actions, phone try-on access, and a **Made with WEARFITS** badge.

To disable sharing, turn off the sharing control on the result page. The public URL then stops displaying the model. You can enable sharing again later if the result remains eligible.

Do not share the URL if the model is intended to remain private.

## Using the `/create` API

The web interface is the recommended way to use the flow. The following same-origin endpoints are also available for authenticated dashboard integrations.

These endpoints use the signed-in WEARFITS session. They are not anonymous API endpoints, and an API key is not required for the browser flow.

### 1. Save the store answer

```bash
curl -X POST "https://dash.wearfits.com/api/v1/create/claim" \
  -H "Content-Type: application/json" \
  -H "Cookie: <authenticated-session-cookie>" \
  --data '{
    "sellsShoesOnline": true,
    "storeUrl": "https://example.com"
  }'
```

Successful response:

```json
{
  "success": true,
  "data": {
    "outcome": "claimed"
  }
}
```

Other successful outcomes can indicate that a generation is already running, that the free generation has already been used, or that the account should use its existing product access instead.

### 2. Upload a source image

Send the image as the request body. The endpoint accepts a prepared image rather than a JSON base64 payload.

```bash
curl -X POST "https://dash.wearfits.com/api/v1/create/source-images" \
  -H "Content-Type: image/jpeg" \
  -H "Cookie: <authenticated-session-cookie>" \
  --data-binary "@front.jpg"
```

Successful response:

```json
{
  "success": true,
  "url": "https://temporary-image-url.example/front.jpg"
}
```

Repeat this request for each photo, then use the returned URLs when submitting the generation.

### 3. Submit the generation

```bash
curl -X POST "https://dash.wearfits.com/api/v1/create/requests" \
  -H "Content-Type: application/json" \
  -H "Cookie: <authenticated-session-cookie>" \
  --data '{
    "sourceImages": [
      {
        "kind": "external",
        "url": "https://temporary-image-url.example/front.jpg"
      },
      {
        "kind": "external",
        "url": "https://temporary-image-url.example/side.jpg"
      }
    ]
  }'
```

A newly created request returns a response similar to:

```jsonc
{
  "success": true,
  "created": true,
  "data": {
    "id": "request-id",
    "status": "processing",
    "createdAt": "2026-10-12T10:00:00.000Z",
    "elapsedMinutes": 0,
    "glbUrl": null,
    "thumbnailUrl": null,
    "shareEnabled": false,
    "shareUrl": null,
    "tryOnUrl": null,
    "failureCopy": null,
    "canDownload": false,
    "downloadUrl": null,
    "studioUrl": null,
    "retryAvailable": false,
    "retryRefusal": null,
    "retrySourceImages": null
  }
}
```

If the account already has an active free request, the endpoint returns the existing request rather than starting a duplicate generation. In that case, `created` is `false`.

### 4. Read the result

```bash
curl "https://dash.wearfits.com/api/v1/create/requests/request-id" \
  -H "Cookie: <authenticated-session-cookie>"
```

A ready result includes links according to the account’s access:

```jsonc
{
  "success": true,
  "data": {
    "id": "request-id",
    "status": "ready_for_qa",
    "createdAt": "2026-10-12T10:00:00.000Z",
    "elapsedMinutes": 18,
    "glbUrl": "https://model-file.example/shoe.glb",
    "thumbnailUrl": "https://image.example/shoe.jpg",
    "shareEnabled": true,
    "shareUrl": "https://dash.wearfits.com/s/AbC_-123xyz9",
    "tryOnUrl": "https://tryon.example/shoe",
    "failureCopy": null,
    "canDownload": false,
    "downloadUrl": null,
    "studioUrl": null,
    "retryAvailable": false,
    "retryRefusal": "FREE_GENERATION_USED",
    "retrySourceImages": null
  }
}
```

A plan unlocks the downloadable model file and the option to open the model in 3D Studio.

### 5. Toggle public sharing

```bash
curl -X POST "https://dash.wearfits.com/api/v1/create/requests/request-id/share" \
  -H "Content-Type: application/json" \
  -H "Cookie: <authenticated-session-cookie>" \
  --data '{"enabled": false}'
```

Response:

```json
{
  "success": true,
  "data": {
    "shareEnabled": false
  }
}
```

A request belonging to another account, a non-free request, or a deleted request is not exposed through this endpoint.

### 6. Start plan checkout

The result page can offer available plans through its own checkout:

```bash
curl -X POST "https://dash.wearfits.com/api/v1/create/checkout" \
  -H "Content-Type: application/json" \
  -H "Cookie: <authenticated-session-cookie>" \
  --data '{
    "requestId": "request-id",
    "priceKey": "basic_monthly",
    "attemptId": "7b7f5f7e-9f16-4b7f-a2ec-7bd0d7e9d3cb"
  }'
```

Successful response:

```json
{
  "success": true,
  "data": {
    "url": "https://checkout.example/secure-session",
    "planId": "ar-0"
  }
}
```

Redirect the browser to `data.url`. After payment, WEARFITS returns the customer to the same result page. The page then reflects the account’s updated access, including download and Studio actions.

If checkout is not configured or the account is not eligible to buy from the result page, use the main Plans page instead.

## Direct 2D-to-3D integrations

For direct WEARFITS 2D-to-3D integrations, use the canonical endpoint:

```http
POST /api/v1/shoe-3d
```

The `/create` flow is the recommended self-serve experience because it handles sign-in, eligibility, photo preparation, progress, sharing, notifications, and checkout.

> TODO: Add the full direct `/api/v1/shoe-3d` authentication, request, and response contract to the API reference. This article documents the customer-facing `/create` flow and its dashboard endpoints.

## Notes and caveats

- Keep the magic-link flow in the same browser where photos were selected if you want the draft to be restored automatically.
- AR and phone try-on depend on device and browser support. If AR is unavailable, open the try-on link on a compatible phone.
- The progress indicator is intentionally indeterminate. Generation time can vary.
- A public share URL can be opened without an account. Treat it as public information.
- Downloading the GLB, additional generations, store integrations, and other product capabilities require an applicable plan.
- If the generation fails, follow the retry instruction on the result page rather than submitting a second request manually.