> ## Documentation Index
> Fetch the complete documentation index at: https://developers.octaviatech.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Author

> How to create an author profile in Octavia AI CMS.

In **Octavia AI CMS**, every article must be associated with an **author** — making author profiles an essential part of the content structure.\
Authors help define the identity, credibility, and organization of your published content, while also enabling advanced features like personalized author pages or bio sections on your website.

You can use author data to **promote creators**, **showcase expertise**, and **link their content** across multiple languages.\
Each author profile can include multilingual fields such as `name` and `bio`, allowing your platform to display localized author information.

***

## Multilingual Fields

Like articles and categories, author fields that support multiple languages should follow the **standard multilingual format**:

```json theme={null}
"name": {
  "en": "John Doe",
  "es": "Juan Pérez",
  ...
}
```

### Common Multilingual Fields

* `name`
* `bio` (supports plain text or HTML)
* `role` or `title` (optional)

***

## Rules

* ✅ Each author must have a **unique slug** (used for SEO-friendly author URLs)
* ✅ `name` is required and supports multilingual values
* ✅ `email` is optional but recommended for internal reference
* ✅ `bio` can contain formatted text or HTML for better presentation on profile pages
* ✅ `isPrivate` can be used to hide an author from public listings
* ❌ Do not assign multiple author IDs to the same article (each article has one primary author)

***

## Validation & Behavior

* **Author requirement:** Every article must reference an existing author through the `author` field.
* **Public profiles:** You can use author data to design custom author pages (e.g., `/authors/{slug}`) showing their articles and bio.
* **Multilingual support:** When a `lang` header is provided, the CMS automatically returns the author’s localized data for that language.
* **Deactivation:** Authors can be marked inactive (`isActive: false`) to remove them from publishing workflows without deleting their data.

***

> 💡 *Tip:*
> Building detailed author profiles (with localized bios, roles, and optional images) enhances your CMS experience and allows readers to discover more about each contributor across languages.


## OpenAPI

````yaml POST /authors/create
openapi: 3.1.0
info:
  title: Blog API
  version: 1.0.0
servers:
  - url: https://api.octaviatech.app/cms
    description: Production
security:
  - ApiKeyAuth: []
tags: []
paths:
  /authors/create:
    post:
      tags:
        - Authors
      summary: Create author
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              required:
                - name
              properties:
                name:
                  type: object
                  description: Author name in multiple languages
                  additionalProperties: false
                  properties:
                    en:
                      type: string
                    es:
                      type: string
                slug:
                  type: string
                  description: URL-friendly unique identifier
                bio:
                  type: object
                  description: Author bio in multiple languages (HTML allowed)
                  additionalProperties: false
                  properties:
                    en:
                      type: string
                      description: HTML string
                    es:
                      type: string
                      description: HTML string
                avatar:
                  type: string
                  format: uri
                  description: Avatar image URL
                role:
                  type: string
                  description: Public title/role of the author (e.g., Editor)
                socials:
                  type: object
                  description: Social and website links
                  additionalProperties: false
                  properties:
                    website:
                      type: string
                      format: uri
                    twitter:
                      type: string
                      format: uri
                    instagram:
                      type: string
                      format: uri
                    linkedin:
                      type: string
                      format: uri
                    github:
                      type: string
                      format: uri
                email:
                  type: string
                  format: email
                  description: Optional public contact email
                isActive:
                  type: boolean
                  description: Whether author is active
                order:
                  type: integer
                  minimum: 0
                  description: Optional ordering index
            examples:
              Create Author:
                value:
                  name:
                    en: John Carter
                    es: Juan Carter
                  slug: john-carter
                  bio:
                    en: <p>Editor and writer focused on AI topics.</p>
                    es: <p>Editor y escritor enfocado en temas de IA.</p>
                  avatar: https://cdn.example.com/avatars/john.jpg
                  role: Editor
                  socials:
                    website: https://john.example.com
                    twitter: https://twitter.com/john
                    linkedin: https://www.linkedin.com/in/john
                  email: john@example.com
                  isActive: true
                  order: 1
      responses:
        '201':
          description: Created
          content:
            application/json:
              examples:
                Created:
                  value:
                    success: true
                    statusCode: 201
                    message: Created
                    data:
                      id: '{{objectId}}'
                      slug: john-carter
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                Unauthorized:
                  value:
                    success: false
                    statusCode: 401
                    message: Unauthorized
                    data: null
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    success: false
                    statusCode: 403
                    message: Forbidden
                    data: null
        '409':
          description: Conflict (slug exists)
          content:
            application/json:
              examples:
                Conflict:
                  value:
                    success: false
                    statusCode: 409
                    message: Slug already exists
                    data: null
        '422':
          description: Validation error
          content:
            application/json:
              examples:
                Validation:
                  value:
                    success: false
                    statusCode: 422
                    message: Validation failed
                    data: null
        '500':
          description: Server error
          content:
            application/json:
              examples:
                ServerError:
                  value:
                    success: false
                    statusCode: 500
                    message: Internal server error
                    data: null
      security:
        - ApiKeyAuth: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````