Skip to main content
Use /generate for direct ThinkFeel requests. Send a persona ID and full message history. The response returns the selected final reply and optional alternatives.
POST https://playground.curvelabs.org/api/v1/generate

Headers

HeaderTypeRequiredDescription
Content-TypestringYesMust be application/json
x-api-keystringConditionalAPI key for API-key billing
AuthorizationstringConditionalAlternative bearer format: Bearer YOUR_API_KEY_HERE

Body parameters

ParameterTypeRequiredDescription
personaIdstringYesPersona UUID provided during onboarding
messagesarrayYesConversation messages to use as context
messages[].rolestringYesuser, assistant, system, or developer
messages[].contentstring or text arrayYesPlain text, or an array of text parts shaped as { type: "text", text: string }
messages[].timestampnumber or stringNoOptional timestamp; createdAt and created_at are also accepted
includeVariationsbooleanNoReturn alternative reply choices. Defaults to false
messages[] must contain at least one message. The last message must use the user role; assistant cannot be the last message. system and developer messages are accepted as text-only context before the final user message. Only text content is supported.

Request

curl -X POST https://playground.curvelabs.org/api/v1/generate \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY_HERE" \
  -d '{
    "personaId": "YOUR_PERSONA_ID",
    "messages": [
      {
        "role": "user",
        "content": "Hello!"
      }
    ]
  }'

Default response

When includeVariations is false, the API returns the final reply and chunks.
{
  "status": "success",
  "result": {
    "finalReply": "hey! what's up?",
    "chunks": ["hey! what's up?"]
  }
}

Response with variations

When includeVariations is true, the API may include replyChoices.
{
  "status": "success",
  "result": {
    "finalReply": "hey! what's up?",
    "chunks": ["hey! what's up?"],
    "replyChoices": ["hey! what's up?", "hi there! how's it going?", "hey! good to hear from you"]
  }
}
API-key /generate responses may also include a top-level rateLimits array when rate-limit metadata is available for your account.

SDK and CLI notes

The ThinkFeel SDK wraps /api/v1/generate and /api/v1/personify. It does not wrap /api/v1/completions, which remains the OpenAI-compatible endpoint.
The ThinkFeel SDK package is currently 0.1.6 and supports:
  • new ThinkFeel({ apiKey, personaId, baseUrl? })
  • generate({ messages, includeVariations? })
  • personify({ raw })
When setting SDK baseUrl, pass only the site origin, such as https://playground.curvelabs.org; the SDK appends /api/v1 internally.