> ## Documentation Index
> Fetch the complete documentation index at: https://docs.roe-ai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Agent

> Create a new base agent.

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url "https://api.roe-ai.com/v1/agents/?organization_id=YOUR_ORG_ID" \
    --header "Authorization: Bearer YOUR_API_KEY" \
    --header "Content-Type: application/json" \
    --data '{
      "name": "My New Agent",
      "description": "Agent description"
    }'
  ```
</RequestExample>


## OpenAPI

````yaml POST /v1/agents/
openapi: 3.1.0
info:
  title: Roe AI API
  version: 1.0.0
  description: Complete API documentation for Roe AI platform
servers:
  - url: https://api.roe-ai.com
    description: Production API
security: []
paths:
  /v1/agents/:
    post:
      tags:
        - v1
      summary: Create a new base agent.
      description: Create a new base agent.
      operationId: v1_agents_create
      parameters:
        - name: organization_id
          in: query
          required: false
          schema:
            type: string
            format: uuid
          description: >-
            Organization ID. This is required for access control. It can be
            provided via query or request body depending on the endpoint.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BaseAgentCreateRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseAgent'
          description: Successfully created agent.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Invalid request data.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Access to the Agents feature is forbidden.
components:
  schemas:
    BaseAgentCreateRequest:
      type: object
      description: Serializer for creating base agents with proper JSON field handling
      properties:
        name:
          type: string
          minLength: 1
          description: Name of the base agent.
        engine_class_id:
          type: string
          minLength: 1
          description: Engine class ID for the agent.
        organization_id:
          type: string
          format: uuid
          description: Organization ID where the agent belongs.
        version_name:
          type: string
          minLength: 1
          description: Name of the first version.
        description:
          type: string
          minLength: 1
          description: Description of the first version.
        input_definitions:
          description: Input definitions for the first version.
        engine_config:
          description: Engine configuration for the first version.
      required:
        - engine_class_id
        - engine_config
        - input_definitions
        - name
        - organization_id
    BaseAgent:
      type: object
      description: Serializer for BaseAgent (agent config)
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        creator:
          oneOf:
            - $ref: '#/components/schemas/UserInfo'
            - type: 'null'
        created_at:
          type: string
          format: date-time
          readOnly: true
        name:
          type: string
          maxLength: 200
          minLength: 1
        disable_cache:
          type: boolean
          description: Whether to disable job cache fetching for this agent.
        cache_failed_jobs:
          type: boolean
          description: Whether to cache failed jobs for this agent.
        organization_id:
          type: string
          format: uuid
          description: Organization ID that owns this agent.
        engine_class_id:
          type: string
          maxLength: 200
        current_version_id:
          type: string
          format: uuid
          readOnly: true
          description: UUID of the current agent version.
        job_count:
          type:
            - integer
            - 'null'
          description: >-
            Job count from annotation, or None when not fetched (use
            /agents/job-stats/).
          readOnly: true
        most_recent_job:
          type: string
          readOnly: true
        engine_name:
          type: string
          description: Engine Display Name
          readOnly: true
        tags:
          type: string
          readOnly: true
      required:
        - cache_failed_jobs
        - created_at
        - current_version_id
        - disable_cache
        - engine_class_id
        - engine_name
        - id
        - job_count
        - most_recent_job
        - name
        - organization_id
        - tags
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Error message
      required:
        - message
    UserInfo:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        email:
          type: string
          format: email
          title: Email address
          maxLength: 254
        first_name:
          type: string
          maxLength: 150
        last_name:
          type: string
          maxLength: 150
        display_name:
          type: string
          readOnly: true
      required:
        - display_name
        - email
        - id

````