---
title: Ejemplos de solicitud y respuesta
description: Aprende a documentar APIs con los componentes RequestExample y ResponseExample usando un flujo de trabajo práctico de tickets de soporte de Acme.
api: GET /tickets/{ticket_id}
---

Usa `RequestExample` y `ResponseExample` para mostrar el uso real de la API junto a la documentación de tu endpoint. Los componentes admiten múltiples lenguajes, estados de respuesta y explicaciones en línea.

## Ejemplo: Obtener un ticket de soporte

Este ejemplo documenta un endpoint simple `GET /tickets/{ticket_id}` para la API de soporte de Acme.

### Solicitud

Usa campos de parámetros para describir qué espera el endpoint. El ejemplo de código se encuentra en la barra lateral derecha.

<ParamField path="ticket_id" type="string" required>
  Identificador único del ticket devuelto cuando se creó el ticket.
</ParamField>

<RequestExample>
```bash cURL
curl -X GET https://api.acme.com/v1/tickets/tkt_9S8L2 \
  -H "Authorization: Bearer $ACME_TOKEN"
```

```python Python
import requests

response = requests.get(
    "https://api.acme.com/v1/tickets/tkt_9S8L2",
    headers={"Authorization": f"Bearer {ACME_TOKEN}"}
)

ticket = response.json()
print(ticket["id"])
```

```javascript JavaScript
const response = await fetch("https://api.acme.com/v1/tickets/tkt_9S8L2", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.ACME_TOKEN}`,
  }
});

const ticket = await response.json();
console.log(ticket.id);
```

```go Go
package main

import (
  "fmt"
  "io"
  "net/http"
)

func main() {
  req, _ := http.NewRequest("GET", "https://api.acme.com/v1/tickets/tkt_9S8L2", nil)
  req.Header.Set("Authorization", "Bearer ACME_TOKEN")

  resp, _ := (&http.Client{}).Do(req)
  defer resp.Body.Close()

  body, _ := io.ReadAll(resp.Body)
  fmt.Println(string(body))
}
```

```ruby Ruby
require 'net/http'
require 'uri'
require 'json'

uri = URI("https://api.acme.com/v1/tickets/tkt_9S8L2")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer ACME_TOKEN"

response = http.request(request)
puts JSON.parse(response.body)
```

```csharp C#
using System.Net.Http;

var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer ACME_TOKEN");

var response = await client.GetAsync("https://api.acme.com/v1/tickets/tkt_9S8L2");
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
```

```java Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.acme.com/v1/tickets/tkt_9S8L2"))
    .header("Authorization", "Bearer ACME_TOKEN")
    .GET()
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
```

```rust Rust
#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {
    let client = reqwest::Client::new();

    let response = client
        .get("https://api.acme.com/v1/tickets/tkt_9S8L2")
        .header("Authorization", "Bearer ACME_TOKEN")
        .send()
        .await?;

    let body = response.text().await?;
    println!("{}", body);

    Ok(())
}
```

```php PHP
<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.acme.com/v1/tickets/tkt_9S8L2');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ACME_TOKEN']);

$response = curl_exec($ch); curl_close($ch);

echo $response;
```
</RequestExample>

### Respuesta

Usa campos de respuesta para documentar los atributos más importantes devueltos por la API.

<ResponseField name="id" type="string" required>
  Identificador único del ticket.
</ResponseField>

<ResponseField name="status" type="string">
  Estado actual del ticket (`open`, `pending` o `resolved`).
</ResponseField>

<ResponseField name="created_at" type="string">
  Marca de tiempo ISO 8601 de cuándo se creó el ticket.
</ResponseField>

<ResponseExample>
```json 200: OK
{
  "id": "tkt_9S8L2",
  "customer_id": "cus_2X9W8",
  "subject": "Export stuck on step 3",
  "priority": "high",
  "status": "open",
  "created_at": "2026-02-04T16:12:00Z"
}
```

```json 404: Not found
{
  "code": "not_found",
  "message": "ticket_id does not exist"
}
```
</ResponseExample>

## Consejos

- Incluye al menos una respuesta de éxito y una respuesta de error.
- Usa identificadores y marcas de tiempo realistas para que los ejemplos parezcan reales.
- Mantén los payloads mínimos para que los lectores puedan escanearlos rápidamente.

## Páginas relacionadas

<Columns cols={2}>
  <Card title="API Playground" icon="flask-vial" href="/es/api-reference/playground">
    Habilita pruebas interactivas de API en tus páginas de endpoint
  </Card>
  <Card title="Ejemplo OpenAPI" icon="plug" href="/es/api-reference/openapi-example">
    Ver una página de endpoint generada automáticamente
  </Card>
</Columns>

<Columns cols={2}>
  <Card title="Componente Examples" icon="code" href="/es/components/examples">
    Aprende las props del componente y las reglas de formato
  </Card>
  <Card title="Componente Fields" icon="list-check" href="/es/components/fields">
    Documenta esquemas de solicitud y respuesta
  </Card>
</Columns>
