# Versiones

> Cada cuenta usa una versión de la API, por fecha. Un cambio que no es compatible llega como una versión nueva, y usted decide cuándo moverse.

La API se versiona por fecha, como Stripe. Cada respuesta dice en el encabezado `Fiscalisto-Version` en qué versión se escribió:

```http
HTTP/1.1 200 OK
Fiscalisto-Version: 2026-10-24
```

Hoy hay una sola versión, `2026-10-24`.

## Qué es una versión nueva

Lo que **no** rompe nada llega sin versión nueva, en la que ya usa: rutas, campos, eventos, parámetros opcionales y códigos de error nuevos. Escriba su integración para que ignore los campos que no conoce (los SDKs ya lo hacen).

Una versión nueva es para lo que sí cambiaría lo que ya funciona: un campo que cambia de nombre o de significado, o que deja de existir. Cada una se anuncia en [Cambios](https://fiscalisto.com/docs/api/cambios) y por correo en [Avisos por correo](/avisos?tema=cambios), con lo que cambió y cómo adaptarse.

## Qué versión recibe

1. **La de la solicitud**, si manda el encabezado `Fiscalisto-Version`. Los SDKs mandan la versión para la que se hicieron, así que un SDK siempre recibe lo que espera.
2. **La de su cuenta**, si no lo manda (por ejemplo con `curl`). Su cuenta queda en la versión más reciente del día en que la creó, y no se mueve sola.

Una versión que no existe responde `400` con `api_version_invalid` y la lista de las que hay.

```bash
curl https://api.fiscalisto.com/v1/account \
  -H "Authorization: Bearer $FISCALISTO_API_KEY" \
  -H "Fiscalisto-Version: 2026-10-24"
```

`GET /v1/account` dice la de su cuenta (`api_version`) y la más reciente (`latest_api_version`).

## Moverse a una versión nueva

1. Lea en [Cambios](https://fiscalisto.com/docs/api/cambios) qué cambió.
2. Pruébela en modo de pruebas mandando `Fiscalisto-Version` con la nueva fecha (o actualice el SDK).
3. Cuando todo funcione, mueva su cuenta: lo que llama sin encabezado y los webhooks sin versión propia pasan a la nueva.

```bash tab="cURL"
curl https://api.fiscalisto.com/v1/account \
  -H "Authorization: Bearer $FISCALISTO_API_KEY" \
  -d '{ "api_version": "2026-10-24" }' \
  -H "Content-Type: application/json"
```

```ts tab="TypeScript"
import { Fiscalisto } from "fiscalisto";

// La llave viene de FISCALISTO_API_KEY.
const fiscalisto = new Fiscalisto();

const account = await fiscalisto.account.update({ api_version: "2026-10-24" });
```

```python tab="Python"
from fiscalisto import Fiscalisto

# La llave viene de FISCALISTO_API_KEY.
fiscalisto = Fiscalisto()

account = fiscalisto.account.update({"api_version": "2026-10-24"})
```

```php tab="PHP"
<?php

use Fiscalisto\Fiscalisto;

// La llave viene de FISCALISTO_API_KEY.
$fiscalisto = new Fiscalisto();

$account = $fiscalisto->account->update(['api_version' => '2026-10-24']);
```

```go tab="Go"
package main

import (
	"context"
	"fmt"
	"log"

	fiscalisto "fiscalisto.com/go"
)

func main() {
	// La llave viene de FISCALISTO_API_KEY.
	client, err := fiscalisto.NewClient("")
	if err != nil {
		log.Fatal(err)
	}
	ctx := context.Background()

	account, err := client.Account.Update(ctx, &fiscalisto.UpdateAccountParams{APIVersion: "2026-10-24"})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(account.ID)
}
```

```java tab="Java"
import com.fiscalisto.FiscalistoClient;
import com.fiscalisto.model.UpdateAccountParams;

// La llave viene de FISCALISTO_API_KEY.
var fiscalisto = new FiscalistoClient();

var account = fiscalisto.account().update(new UpdateAccountParams().setApiVersion("2026-10-24"));
System.out.println(account.getId());
```

```csharp tab="C#"
using Fiscalisto;

// La llave viene de FISCALISTO_API_KEY.
var fiscalisto = new FiscalistoClient();

var account = await fiscalisto.Account.UpdateAsync(new UpdateAccountParams { ApiVersion = "2026-10-24" });
```

Se cambia con una llave de la cuenta con todos los permisos (no con una de solo lectura, restringida a emisores ni de un entorno de prueba), y queda en **Desarrolladores › Actividad**. Puede volver a la anterior de la misma forma.

## Webhooks

Cada evento trae `api_version`, la versión en la que se escribió su `data.object`. Un endpoint recibe sus eventos en la versión de su cuenta, o en la suya propia si la tiene (`api_version` al crearlo o cambiarlo con `POST /v1/webhook_endpoints/{id}`; `null` vuelve a la de la cuenta).

Para mover los webhooks sin cortes: cree un segundo endpoint con la versión nueva, adapte su código para recibir las dos, y borre el viejo.

## En los SDKs

Cada SDK trae la versión para la que se hizo y la manda en cada solicitud. Para pedir otra, o ninguna (la de la cuenta):

```ts
const fiscalisto = new Fiscalisto("fk_test_…", { apiVersion: "2026-10-24" }); // null: la de la cuenta
```

```python
fiscalisto = Fiscalisto("fk_test_…", api_version="2026-10-24")  # None: la de la cuenta
```

```php
$fiscalisto = new Fiscalisto('fk_test_…', ['api_version' => '2026-10-24']); // null: la de la cuenta
```

```go
client, err := fiscalisto.NewClient("fk_test_…", fiscalisto.WithAPIVersion("2026-10-24")) // "": la de la cuenta
```

```java
var client = new FiscalistoClient(ClientOptions.builder().apiKey("fk_test_…").apiVersion("2026-10-24").build());
```

```csharp
var client = new FiscalistoClient("fk_test_…", new FiscalistoClientOptions { ApiVersion = "2026-10-24" });
```

Una respuesta guardada por [idempotencia](https://fiscalisto.com/docs/api/idempotencia) se repite tal como se contestó la primera vez, en esa versión.
