---
seo_title: API JPEG a SVG: Incrusta JPG en SVG por código | EnConvert
meta_desc: Envuelve un JPEG en un SVG con POST /v1/convert/jpeg-to-svg. La API incrusta la imagen en base64: es un envoltorio ráster, no una vectorización.
keywords: convertir jpeg a svg api, convertir jpg a svg api, api para convertir jpg a svg, incrustar jpeg en svg, conversor de jpg a svg api, imagen base64 en svg api, envoltorio svg de imagen ráster
---

# API de JPEG a SVG

Convierte un JPEG al formato SVG con `POST /v1/convert/jpeg-to-svg`, que codifica el JPEG en base64 y lo incrusta como un URI de datos dentro de un elemento `<image>` de SVG. Esto no es vectorización: la salida es la imagen ráster completa envuelta en un contenedor SVG, útil para flujos de trabajo que requieren SVG pero aceptan contenido ráster incrustado. Las respuestas devuelven bytes sin procesar para descarga directa, o metadatos JSON con una URL de descarga prefirmada.

---

## Endpoint

```
POST /v1/convert/jpeg-to-svg
```

**Content-Type:** `multipart/form-data`

**Entrada aceptada:** archivos `.jpeg or .jpg`

**Formato de salida:** `.svg` (`image/svg+xml`)

---

## Autenticación

Requiere una clave de API privada o un token JWT obtenido a partir de una clave pública.

```
X-API-Key: sk_your_private_key
```

O bien:

```
Authorization: Bearer <jwt_token>
```

---

## Parámetros de la solicitud

| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|-----------|------|----------|---------|-------------|
| `file` | file | Sí | -- | El archivo de imagen `.jpeg or .jpg` a convertir. |
| `output_filename` | `string` | No | Nombre del archivo de entrada | Nombre de archivo de salida personalizado. La extensión `.svg` se añade automáticamente. |
| `direct_download` | `boolean` | No | `true` | Cuando es `true`, devuelve los bytes de la imagen sin procesar. Cuando es `false`, devuelve metadatos JSON con una URL de descarga prefirmada. |

---

## Detalles de la conversión

- El JPEG se **codifica en base64 y se incrusta** dentro de un elemento `<image>` de SVG como un URI de datos
- Las dimensiones del SVG y el viewBox coinciden con las dimensiones en píxeles de la imagen original
- **Esto NO es vectorización** -- la salida contiene los datos completos de la imagen ráster, no rutas vectoriales
- Útil para flujos de trabajo que requieren formato SVG pero aceptan contenido ráster incrustado

<div class="alert alert-warning">
<strong>No es vectorización:</strong> Este endpoint incrusta la imagen ráster dentro de un contenedor SVG. No traza ni convierte la imagen a rutas vectoriales. El archivo de salida será más grande que el de entrada debido a la codificación base64 (~33% de sobrecarga).
</div>

---

## Respuesta

### Descarga directa (`direct_download=true`, predeterminado)

```
HTTP 200 OK
Content-Type: image/svg+xml
Content-Disposition: inline; filename="photo_20260405_123456789.svg"
```

Devuelve los bytes de la imagen sin procesar.

### Respuesta de metadatos (`direct_download=false`)

```json
{
    "presigned_url": "https://spaces.example.com/...",
    "object_key": "env/files/{project_id}/jpeg-to-svg/photo_20260405_123456789.svg",
    "filename": "photo_20260405_123456789.svg",
    "file_size": 45678,
    "conversion_time_seconds": 0.5
}
```

---

## Ejemplos de código

### Python

```python
import requests

with open("photo.jpg", "rb") as f:
    response = requests.post(
        "https://api.enconvert.com/v1/convert/jpeg-to-svg",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("photo.jpg", f)}
    )

with open("photo_20260405_123456789.svg", "wb") as out:
    out.write(response.content)
```

### Node.js

```javascript
const form = new FormData();
form.append("file", fs.createReadStream("photo.jpg"));

const response = await fetch("https://api.enconvert.com/v1/convert/jpeg-to-svg", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

fs.writeFileSync("photo_20260405_123456789.svg", Buffer.from(await response.arrayBuffer()));
```

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/jpeg-to-svg");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: sk_your_private_key"],
    CURLOPT_POSTFIELDS => ["file" => new CURLFile("photo.jpg")]
]);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents("photo_20260405_123456789.svg", $output);
```

### Go

```go
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "photo.jpg")
file, _ := os.Open("photo.jpg")
io.Copy(part, file)
writer.Close()

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/jpeg-to-svg", body)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("X-API-Key", "sk_your_private_key")
resp, _ := http.DefaultClient.Do(req)
```

---

## Respuestas de error

| Estado | Condición |
|--------|-----------|
| `400 Bad Request` | El archivo no es un archivo `.jpeg or .jpg` |
| `400 Bad Request` | La conversión de la imagen falló (archivo corrupto o no compatible) |
| `401 Unauthorized` | Falta la clave de API o el token JWT, o no es válido |
| `402 Payment Required` | Se agotó la cuota mensual de ops |
| `402 Payment Required` | Se alcanzó el límite de almacenamiento |
| `413 Payload Too Large` | El archivo supera el tamaño máximo permitido por el plan |

---

## Límites

| Límite | Valor |
|-------|-------|
| Tamaño máximo de archivo | Según el plan (Founding: 5 MB) |
| Calidad de salida | Máxima (no configurable) |
| Conversiones mensuales | Según el plan |

---

## Preguntas frecuentes

### ¿Cómo convierto un JPG a SVG con una API REST?

Envía una solicitud POST `multipart/form-data` a `/v1/convert/jpeg-to-svg` con tu archivo `.jpeg` o `.jpg` en el campo `file`, autenticada mediante `X-API-Key` o un token JWT `Bearer`. La API devuelve un SVG con tu imagen incrustada en base64 dentro de un elemento `<image>`.

### ¿La API de JPEG a SVG vectoriza mi imagen?

No. Este endpoint no traza ni convierte la imagen a rutas vectoriales: incrusta el JPEG ráster dentro de un contenedor SVG como un URI de datos en base64. Las dimensiones del SVG y el viewBox coinciden con las dimensiones en píxeles de la imagen original.

### ¿Por qué la salida SVG es más grande que mi entrada JPEG?

La codificación base64 añade aproximadamente un 33% de sobrecarga, por lo que el archivo de salida es más grande que el de entrada, ya que contiene los datos completos de la imagen ráster codificados como texto.

### ¿Puedo obtener una URL de descarga en lugar de los bytes del archivo sin procesar?

Sí. Define `direct_download=false` y la API devuelve metadatos JSON que incluyen `presigned_url`, `object_key`, `filename`, `file_size` y `conversion_time_seconds`.
