---
title: "Batch-mint Try-Me Configs and email each invitee an invitation."
method: POST
path: "/dojo/try-me-configs/batch"
tags: ["Dojo"]
---

# Batch-mint Try-Me Configs and email each invitee an invitation.

`POST /dojo/try-me-configs/batch`

## Request

- Base URL: `https://api.mnemom.ai/v1`
- URL: `https://api.mnemom.ai/v1/dojo/try-me-configs/batch`
- Auth: HTTP bearer

Mints one single-use Try-Me Config per invite (each its OWN server-generated `tryme_…` token) and sends each invitee a formatted invitation email (Resend, no-reply@mnemom) carrying that invite's route-composed `share_line`. Caps at 50 invites per batch; a per-invite mint failure is recorded in `results` and skipped (it never aborts the batch). Email delivery is best-effort (logged to `email_log`); the response reflects MINT status. Compute keys are bound server-side and NOT returned (MNE-828). Admin-only. MNE-1320.

## Request body

- object
  - `scenarioId` string, required: dojo_scenarios.id shared by every config minted in this batch.
  - `model` object: Frontier model; defaults to {provider:'anthropic', name:'claude'}.
    - `provider` 'anthropic' | 'openai' | 'google'
    - `name` string
  - `expiresAt` string, date-time, nullable
  - `usageLimit` integer
  - `logoUrl` string, uri, nullable: MNE-1322: optional brand logo (https URL) applied to every invite in the batch; each minted agent carries it as its avatar.
  - `invites` object[], required: One entry per person to invite (1–50).
    - `email` string, email, required
    - `name` string: Optional display name used in the email greeting.
    - `routes` object: Which route(s) the invite's share line composes; defaults to both.
      - `npx` boolean
      - `mcp` boolean

## Response `201`

Batch processed. Each invite reports its mint status in `results`; sent emails are logged to email_log. Compute keys are NOT returned (MNE-828).

- object
  - `requested` integer, required
  - `sent` integer, required
  - `failed` integer, required
  - `results` object[], required
    - `email` string, email, required
    - `name` string, nullable
    - `status` 'sent' | 'failed', required
    - `config_id` string
    - `share_line` string
    - `error` string

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Forbidden
- `429`: Rate-limit exceeded. The global per-IP limiter (100 requests/minute, applied to every `/v1/*` route) rejected this request. Back off until the window resets — `Retry-After` carries the cooldown in seconds and `X-RateLimit-Reset` the absolute reset time.
- `500`: Server error — request was well-formed but the server failed to fulfill it. Typically a downstream dependency (DB / RPC / external API) returned an unexpected error.

---

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