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

# Datastore - Upsert Documents

Inserta o actualiza múltiples documentos de texto en un datastore. Los documentos se procesan de forma asíncrona para generar embeddings.

> Si el datastore es **público**, no se requiere token de autorización.

### Ejemplo

```bash theme={null}
curl -X POST https://app.braviloai.com/api/external/datastores/upsert/${datastoreId} \
-H "Authorization: Bearer ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"documents": [
"id": "doc_001",
"name": "Política de Privacidad",
"text": "El contenido completo del documento...",
"metadata": { "source_url": "https://ejemplo.com/privacidad" }
]
}'
```


## OpenAPI

````yaml POST /external/datastores/upsert/{id}
openapi: 3.0.1
info:
  title: Bravilo AI.ai - API OpenAPI specifications
  description: ''
  termsOfService: http://braviloai.com/terms
  contact:
    email: support@braviloai.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  version: 1.0.0
servers:
  - url: https://app.braviloai.com/api
security:
  - bearerAuth: []
tags:
  - name: agents
  - name: datastores
  - name: datasources
paths:
  /external/datastores/upsert/{id}:
    post:
      tags:
        - datastores
      summary: Inserta o actualiza documentos de texto en un datastore
      parameters:
        - in: path
          name: id
          schema:
            type: string
          required: true
          description: ID del datastore
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                documents:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        description: ID custom (opcional)
                      name:
                        type: string
                      text:
                        type: string
                      metadata:
                        type: object
                    required:
                      - text
              required:
                - documents
      responses:
        '200':
          description: Documentos creados y encolados para procesamiento
          content:
            application/json:
              schema:
                type: object
                properties:
                  ids:
                    type: array
                    items:
                      type: string
        '400':
          description: Body inválido
        '401':
          description: Unauthorized
        '404':
          description: Datastore no encontrado
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````