# General Translation Platform: Subir archivos de origen URL: https://generaltranslation.com/es/docs/platform/openapi/reference/files/upload-source.mdx --- title: Subir archivos de origen description: Sube uno o varios archivos de origen a un proyecto de General Translation antes de poner en cola la traducción. Referencia de la API para subir archivos de origen. method: POST --- Sube archivos de origen a un proyecto para que puedan ponerse en cola para su traducción. Envía el contenido de los archivos en base64, de 1 a 100 archivos por solicitud. ## Descripción general [#overview] ```http POST https://api2.gtx.dev/v2/project/files/upload-files ``` **Permiso** `project:files:write` · **Límite de solicitudes** Medio (120/min) Sube los archivos de origen (sin traducir) de un proyecto. Para subir archivos ya traducidos, usa [Subir traducciones](/docs/platform/openapi/reference/files/upload-translations). Luego, para traducir los archivos subidos, consulta [Poner en cola traducciones](/docs/platform/openapi/reference/translation/queue). ## Cómo funciona [#how-it-works] * El `content` de cada archivo se codifica en base64 y se decodifica en el servidor; el base64 no válido se rechaza. * Si falta `fileId`, se deriva aplicando hash a `fileName`; si falta `versionId`, se deriva aplicando hash al contenido del archivo, por lo que volver a subir contenido idéntico es idempotente por versión. * Los archivos se adjuntan a la rama predeterminada, a menos que se proporcione un `branchId` válido. Un `branchId` desconocido devuelve `400`. * Si se envía `sourceLocale` y difiere de la configuración regional predeterminada actual del proyecto, se actualiza la configuración regional predeterminada del proyecto. ## Solicitud [#request] ### Cabeceras | Cabecera | Descripción | Obligatorio | | ----------------- | ----------------------------------------------------------------------- | ----------- | | `x-gt-api-key` | API Key del proyecto o de Organization. | Sí | | `x-gt-project-id` | ID del proyecto. Obligatorio cuando se usa una API Key de Organization. | No | ### Cuerpo **Tipo de contenido** `application/json` | Campo | Descripción | Tipo | Opcional | Predeterminado | | --------------- | --------------------------------------------------------- | ---------- | -------- | -------------------------------------------------- | | [`data`](#data) | Lista de archivos para subir (1–100). | `object[]` | No | — | | `sourceLocale` | Configuración regional de origen de los archivos subidos. | `string` | Sí | Configuración regional predeterminada del proyecto | #### `data` [#data] **Tipo** `object[]` · **Obligatorio** Cada elemento es `{ "source": { ... } }`, donde `source` tiene estos campos: | Campo | Descripción | Tipo | Opcional | Predeterminado | | ---------------- | ---------------------------------------------------------------------------------- | -------- | -------- | ------------------- | | `content` | Contenido del archivo codificado en Base64. Se aplica el tamaño máximo de archivo. | `string` | No | — | | `fileName` | Nombre del archivo; no puede estar vacío. | `string` | No | — | | `fileFormat` | Identificador del formato de archivo (por ejemplo, `JSON`, `MDX`). | `string` | No | — | | `locale` | Configuración regional del contenido de origen; no puede estar vacía. | `string` | No | — | | `dataFormat` | Formato de datos para contenido estructurado. | `string` | Sí | — | | `fileId` | Identificador estable del archivo. | `string` | Sí | Hash de `fileName` | | `versionId` | Identificador de versión de este contenido. | `string` | Sí | Hash del contenido | | `branchId` | Rama a la que se adjuntará el archivo. | `string` | Sí | Rama predeterminada | | `formatMetadata` | Metadatos adicionales específicos del formato. | `object` | Sí | — | ## Respuesta [#response] **Estado** `201 Created` ```json title="Response" { "uploadedFiles": [ { "branchId": "br_...", "fileId": "file_...", "versionId": "ver_...", "fileName": "en/common.json", "fileFormat": "JSON", "dataFormat": "JSON" } ], "count": 1, "message": "Successfully uploaded 1 source file(s)" } ``` ## Errores [#errors] | Estado | Causa | | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `400` | Cuerpo de solicitud no válido, configuración regional/formato no válidos, error de decodificación, archivo demasiado grande o `branchId` desconocido. | | `401` | Falta la API key o no es válida. | | `403` | La API key no tiene `project:files:write`. | | `429` | Se superó el límite de solicitudes. | | `503` | Servidor ocupado; vuelve a intentarlo con espera exponencial. | ## Ejemplo [#example] ```bash curl -X POST https://api2.gtx.dev/v2/project/files/upload-files \ -H "x-gt-api-key: gtx-api-..." \ -H "Content-Type: application/json" \ -d '{ "sourceLocale": "en", "data": [ { "source": { "content": "eyJoZWxsbyI6ICJIZWxsbyJ9", "fileName": "en/common.json", "fileFormat": "JSON", "locale": "en" } } ] }' ```