Last updated

Book a ticket for a specific Event

Workflow

1. Choose an Event

You can list all catalog events using the GET /v1/ticketing/catalogs/{id}/events as follows:

Request

curl --request GET \
  --url https://api.korusticket.com/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events\?page\=1\&itemsPerPage\=2 \
  -H 'accept: application/ld+json' \
  -H 'Authorization: Bearer {{YOUR_JWT_TOKEN}}' \
  -H 'Accept-Language: fr'

Response

{
  "@context": "/contexts/TicketingEvent",
  "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events",
  "@type": "Collection",
  "totalItems": 13,
  "member": [
    {
      "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194abfe-158a-7254-8ed7-35404c1c9b0b",
      "@type": "TicketingEvent",
      "id": "0194abfe-158a-7254-8ed7-35404c1c9b0b",
      "name": "Billetterie - Puy du Fou",
      "description": ""
    },
    {
      "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194abfe-1655-7e5a-8bb3-adf253a88d96",
      "@type": "TicketingEvent",
      "id": "0194abfe-1655-7e5a-8bb3-adf253a88d96",
      "name": "Pass Emotion - Pass Emotion",
      "description": ""
    }
  ],
  "view": {
    "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events?itemsPerPage=2&page=1",
    "@type": "PartialCollectionView",
    "first": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events?itemsPerPage=2&page=1",
    "last": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events?itemsPerPage=2&page=7",
    "next": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events?itemsPerPage=2&page=2"
  }
}

Choose the Event Session

You can list event sessions using the GET /v1/ticketing/catalogs/{catalogId}/events/{id}/sessions endpoint as follows:

Request

curl --request GET \
  --url https://api.korusticket.com/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194abfe-158a-7254-8ed7-35404c1c9b0b/sessions\?page\=1\&itemsPerPage\=2 \
  -H 'accept: application/ld+json' \
  -H 'Authorization: Bearer {{YOUR_JWT_TOKEN}}' \
  -H 'Accept-Language: fr'

Response

{
  "@context": "/contexts/TicketingSession",
  "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194abfe-158a-7254-8ed7-35404c1c9b0b/sessions",
  "@type": "Collection",
  "totalItems": 179,
  "member": [
    {
      "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194abfe-158a-7254-8ed7-35404c1c9b0b/sessions/0194abfe-158f-7c98-9c2f-fba57a0cc1a5",
      "@type": "TicketingSession",
      "id": "0194abfe-158f-7c98-9c2f-fba57a0cc1a5",
      "occursAt": "2025-04-05T00:00:00+02:00",
      "duration": null,
      "availableQuantity": null
    },
    {
      "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194abfe-158a-7254-8ed7-35404c1c9b0b/sessions/0194abfe-1590-702e-8c17-14687d7b7d67",
      "@type": "TicketingSession",
      "id": "0194abfe-1590-702e-8c17-14687d7b7d67",
      "occursAt": "2025-04-06T00:00:00+02:00",
      "duration": null,
      "availableQuantity": null
    }
  ],
  "view": {
    "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194abfe-158a-7254-8ed7-35404c1c9b0b/sessions?itemsPerPage=2&page=1",
    "@type": "PartialCollectionView",
    "first": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194abfe-158a-7254-8ed7-35404c1c9b0b/sessions?itemsPerPage=2&page=1",
    "last": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194abfe-158a-7254-8ed7-35404c1c9b0b/sessions?itemsPerPage=2&page=90",
    "next": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194abfe-158a-7254-8ed7-35404c1c9b0b/sessions?itemsPerPage=2&page=2"
  },
  "search": {
    "@type": "IriTemplate",
    "template": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194abfe-158a-7254-8ed7-35404c1c9b0b/sessions{?}",
    "variableRepresentation": "BasicRepresentation",
    "mapping": []
  }
}

Note : Some Event can have several sessions per days.

The response shows 179 available sessions. When a session's availableQuantity flag is null, it means the session has unlimited capacity and no availability check is needed before making a reservation. If the flag was true you could have checked the session real-time availability before creating a reservation. Refer to this section to learn how to.

For this example, we'll use the April 5, 2025, session with ID 0194abfe-158f-7c98-9c2f-fba57a0cc1a5. Make note of this session ID as we'll need it later.

2. Choose the Offer of your choice

To book a ticket for an Event you need to select the offer that suit you the best.

To list offers giving you access to the previously chosen event’s session you can use the GET /v1/ticketing/catalogs/{catalogId}/offers with the session query parameter as follows:

Request

curl --request GET \
  --url https://api.korusticket.com/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers\?session\=0194abfe-158f-7c98-9c2f-fba57a0cc1a5\&page\=1\&itemsPerPage\=2 \
  -H 'accept: application/ld+json' \
  -H 'Authorization: Bearer {{YOUR_JWT_TOKEN}}' \
  -H 'Accept-Language: fr'

Response

{
  "@context": "/contexts/TicketingOffer",
  "@id": "/v1/ticketing/catalogs/{catalogId}/offers",
  "@type": "Collection",
  "totalItems": 15,
  "member": [
    {
      "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers/0194ac3f-7bdd-7175-a275-30c865618283",
      "@type": "TicketingOffer",
      "id": "0194ac3f-7bdd-7175-a275-30c865618283",
      "date": "2025-04-05",
      "availableQuantity": 240,
      "realtimePriceRequired": true,
      "price": {
        "@type": "TicketingOfferPrice",
        "@id": "/.well-known/genid/49273c4fb1fa11d9ea00",
        "amountInclTax": "46.00",
        "originalAmountInclTax": "58.00",
        "currency": "EUR",
        "syncAt": "2025-01-28T09:30:29+00:00"
      },
      "product": {
        "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/products/0194abfe-1bdb-7b12-af59-ad81ae443689",
        "@type": "TicketingProduct",
        "id": "0194abfe-1bdb-7b12-af59-ad81ae443689",
        "name": "Puy du Fou 1 jour Adulte",
        "description": "Le tarif « Sur réservation » s’applique jusqu’à 72 heures avant la date de visite indiquée lors de la réservation, dans la limite des places disponibles. Les billets sont valables uniquement aux dates de visite réservées. Adulte à partir de 14 ans.<br>"
      },
      "tickets": [
        {
          "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers/0194ac3f-7bdd-7175-a275-30c865618283/tickets/0194ac3f-7be0-7f34-aa3f-7f22e2aa6285",
          "@type": "TicketingOfferTicket",
          "id": "0194ac3f-7be0-7f34-aa3f-7f22e2aa6285",
          "name": "Puy du Fou Adulte",
          "description": ""
        }
      ]
    },
    {
      "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers/0194ac3f-8eab-74ab-8aee-a8e2493dd6da",
      "@type": "TicketingOffer",
      "id": "0194ac3f-8eab-74ab-8aee-a8e2493dd6da",
      "date": "2025-04-05",
      "availableQuantity": 300,
      "realtimePriceRequired": true,
      "price": {
        "@type": "TicketingOfferPrice",
        "@id": "/.well-known/genid/e3a63896ec8b9d094244",
        "amountInclTax": "33.00",
        "originalAmountInclTax": "41.00",
        "currency": "EUR",
        "syncAt": "2025-01-28T09:30:34+00:00"
      },
      "product": {
        "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/products/0194abfe-1bdd-76da-8248-5738edcba366",
        "@type": "TicketingProduct",
        "id": "0194abfe-1bdd-76da-8248-5738edcba366",
        "name": "Puy du Fou 1 jour Enfant",
        "description": "Le tarif « Sur réservation » s’applique jusqu’à 72 heures avant la date de visite indiquée lors de la réservation, dans la limite des places disponibles. Les billets sont valables uniquement aux dates de visite réservées. Enfant de 3 à 13 ans inclus - Gratuit pour les moins de 3 ans sur présentation d'un justificatif.<br>"
      },
      "tickets": [
        {
          "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers/0194ac3f-7bdd-7175-a275-30c865618283/tickets/0194ac3f-8eac-7e50-afa0-6b708debf8b0",
          "@type": "TicketingOfferTicket",
          "id": "0194ac3f-8eac-7e50-afa0-6b708debf8b0",
          "name": "Puy du Fou Enfant",
          "description": "Enfant de 3 à 13 ans inclus - Gratuit pour les moins de 3 ans sur présentation d'un justificatif. Les mineurs doivent obligatoirement être accompagnés d'un majeur.\nEnfant de 3 à 13 ans inclus"
        }
      ]
    }
  ],
  "view": {
    "@id": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers?catalog=0194abdc-3a71-72b0-a9b9-89d4be0cd73e&itemsPerPage=2&session=0194abfe-158f-7c98-9c2f-fba57a0cc1a5&page=1",
    "@type": "PartialCollectionView",
    "first": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers?itemsPerPage=2&session=0194abfe-158f-7c98-9c2f-fba57a0cc1a5&page=1",
    "last": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers?itemsPerPage=2&session=0194abfe-158f-7c98-9c2f-fba57a0cc1a5&page=8",
    "next": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers?itemsPerPage=2&session=0194abfe-158f-7c98-9c2f-fba57a0cc1a5&page=2"
  },
  "search": {
    "@type": "IriTemplate",
    "template": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers{?product}",
    "variableRepresentation": "BasicRepresentation",
    "mapping": [
      {
        "@type": "IriTemplateMapping",
        "variable": "product",
        "property": "product",
        "required": false
      }
    ]
  }
}

There are 15 offers available to reserve. We will use the first offer with ID 0194ac3f-7bdd-7175-a275-30c865618283 in the next section to create a reservation.

Some Offers can give you access to more than one Event, in that case you will need to choose a session for all events included in that Offer. For more details, please refer to this section

3. Create a reservation

Creating a reservation temporarily holds an offer, guaranteeing its availability and price for a limited time.

To create the reservation you can use the POST /v1/booking/reservations/_bulk endpoint by passing the following JSON body:

{
  "items": [
    {
      "quantity": 1,
      "offer": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers/0194ac3f-7bdd-7175-a275-30c865618283",
      "ticketSessions": [
        {
          "ticket": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers/0194ac3f-7bdd-7175-a275-30c865618283/tickets/0194ac3f-7be0-7f34-aa3f-7f22e2aa6285",
          "session": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194d709-d501-7b71-8e4c-427d0dc9562f/sessions/0194abfe-158f-7c98-9c2f-fba57a0cc1a5"
        }
      ]
    }
  ]
}

We can use the items array to pass multiple offers to reserve in one call.

In this example we choose to reserve a quantity of one offer with id 0194ac3f-7bdd-7175-a275-30c865618283. In the ticketSessions array we specify the chosen session alongside the offer ticket returned from the GET /v1/ticketing/catalogs/{catalogId}/offers endpoint.

Request

curl --request POST \
  --url https://api.korusticket.com/v1/booking/reservations/_bulk \
  -H 'accept: application/ld+json' \
  -H 'Authorization: Bearer {{YOUR_JWT_TOKEN}}' \
  -d '{"items":[{"quantity":1,"offer":"/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers/0194ac3f-7bdd-7175-a275-30c865618283","ticketSessions":[{"ticket":"/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers/0194ac3f-7bdd-7175-a275-30c865618283/tickets/0194ac3f-7be0-7f34-aa3f-7f22e2aa6285","session":"/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194d709-d501-7b71-8e4c-427d0dc9562f/sessions/0194abfe-158f-7c98-9c2f-fba57a0cc1a5"}]}]}'

Response

{
  "@context": {
    "@vocab": "https://api.demo.korusticket.com/docs.jsonld#",
    "hydra": "http://www.w3.org/ns/hydra/core#",
    "reservations": "CreateReservationBulkOutput/reservations",
    "failedReservations": "CreateReservationBulkOutput/failedReservations"
  },
  "@type": "CreateReservationBulkOutput",
  "@id": "/.well-known/genid/78651cc4640b9253b7c0",
  "reservations": [
    {
      "@id": "/v1/booking/reservations/0194b10f-3ddd-70a5-a96a-d1026cd42746",
      "@type": "BookingReservation",
      "expired": false,
      "id": "0194b10f-3ddd-70a5-a96a-d1026cd42746",
      "createdAt": "2025-01-29T07:55:53+00:00",
      "totalAmountInclTax": "42.32",
      "totalAmountExclTax": null,
      "expiresAt": "2025-01-29T08:10:53+00:00",
      "items": [
        {
          "@type": "ReservationItem",
          "@id": "/.well-known/genid/dbb1fda993fdc977bbab",
          "unitAmountInclTax": "42.32",
          "unitAmountExclTax": null,
          "quantity": 1,
          "totalAmountInclTax": "42.32",
          "totalAmountExclTax": null,
          "offer": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers/0194ac3f-7bdd-7175-a275-30c865618283",
          "product": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/products/0194abfe-1bdb-7b12-af59-ad81ae443689",
          "offerTickets": [
            {
              "@type": "ReservationItemOfferTicket",
              "@id": "/.well-known/genid/603f51eaef68c943a2f8",
              "ticket": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers/0194ac3f-7bdd-7175-a275-30c865618283/tickets/0194ac3f-7be0-7f34-aa3f-7f22e2aa6285",
              "session": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194d709-d501-7b71-8e4c-427d0dc9562f/sessions/0194abfe-158f-7c98-9c2f-fba57a0cc1a5"
            }
          ]
        }
      ],
      "organization": "/v1/organizations/0194abdc-3a79-7ec3-b1b9-a1f291de587d",
      "order": null
    }
  ],
  "failedReservations": []
}

The response contains two arrays :

  • the “reservations” array contains the successful reservations
  • the "failedReservations" array contains offers that failed to be reserved

The "expiresAt" indicates when the reservation expires. After this timestamp, the offer will be released and the reservation will become invalid for booking.

4. Create the Order

To finalize the booking, call the POST /v1/booking/orders/_bulk endpoint. This converts reservations into actual bookings in the ticket issuer's system. Make this call only after confirming that the customer's payment was successful.

To create the order, call the endpoint with the previously created reservation IDs and customer information. You can also include your own reference ID in the optional "externalReference" field. This field accepts any string value you wish to use.

{
  "reservations": [
    "/v1/booking/reservations/0194b10f-3ddd-70a5-a96a-d1026cd42746"
  ],
  "customer": {
    "firstname": "John",
    "lastname": "Doe",
    "email": "[email protected]",
    "phone": "0612345678",
    "country": "FR",
    "language": "fr"
  },
  "externalReference": "CUSTOM_BOOKING_REF_NUMBER_003"
}

Request

Execute the request as follows:

url --request POST \
  --url https://api.korusticket.com/v1/booking/orders/_bulk? \
  -H 'accept: application/ld+json' \
  -H 'Authorization: Bearer {{YOUR_JWT_TOKEN}}' \
  -d '{"reservations":["/v1/booking/reservations/0194b10f-3ddd-70a5-a96a-d1026cd42746"],"customer":{"firstname":"John","lastname":"Doe","email":"[email protected]","phone":"0612345678","country":"FR","language":"fr"}}'

Response

{
  "@context": {
    "@vocab": "https://api.demo.korusticket.com/docs.jsonld#",
    "hydra": "http://www.w3.org/ns/hydra/core#",
    "orders": "CreateOrderBulkOutput/orders"
  },
  "@type": "CreateOrderBulkOutput",
  "@id": "/.well-known/genid/ca4347e0ca0909425dee",
  "orders": [
    {
      "@id": "/v1/booking/orders/0194b132-448c-7d1b-bb13-f8e09ae5c18f",
      "@type": "BookingOrder",
      "id": "0194b132-448c-7d1b-bb13-f8e09ae5c18f",
      "createdAt": "2025-01-29T08:34:09+00:00",
      "organization": "/v1/organizations/0194abdc-3a79-7ec3-b1b9-a1f291de587d",
      "reference": "KT-ORD-6799E80128885",
      "externalReference": "CUSTOM_BOOKING_REF_NUMBER_003",
      "totalAmountInclTax": "42.32",
      "totalAmountExclTax": "40.11",
      "reservation": "/v1/booking/reservations/0194b10f-3ddd-70a5-a96a-d1026cd42746",
      "customer": [],
      "items": [
        {
          "@type": "OrderItem",
          "@id": "/.well-known/genid/fc26307a17a3ad7720bc",
          "unitAmountInclTax": "42.32",
          "unitAmountExclTax": "40.11",
          "quantity": 1,
          "totalAmountInclTax": "42.32",
          "totalAmountExclTax": "40.11",
          "offer": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers/0194ac3f-7bdd-7175-a275-30c865618283",
          "product": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/products/0194abfe-1bdb-7b12-af59-ad81ae443689",
          "offerTickets": [
            {
              "@type": "OrderItemOfferTicket",
              "@id": "/.well-known/genid/2c89a04ae411eae8a3af",
              "ticket": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/offers/0194ac3f-7bdd-7175-a275-30c865618283/tickets/0194ac3f-7be0-7f34-aa3f-7f22e2aa6285",
              "session": "/v1/ticketing/catalogs/0194abdc-3a71-72b0-a9b9-89d4be0cd73e/events/0194d709-d501-7b71-8e4c-427d0dc9562f/sessions/0194abfe-158f-7c98-9c2f-fba57a0cc1a5"
            }
          ]
        }
      ],
      "documents": [
        "/v1/booking/orders/0194b132-448c-7d1b-bb13-f8e09ae5c18f/documents/0194b132-449c-79cd-9da1-50be439b6e9d"
      ]
    }
  ]
}

In the response you can see the following fields:

  • "reference" is the Korus Ticket API internal order reference
  • “externalReference” is your own order reference. You can call the POST v1/booking/orders/_bulk endpoint multiple times with the same value in the “externalReference” field to group all orders in the same booking.
  • "items” contains the detail of reserved products and their prices as well as tickets and associated sessions
  • “documents” lists the available order documents. These are typically the customer's tickets for the Event. You will need to call the PATCH /v1/booking/orders/{orderId}/documents endpoint to get the document's public URL.

5. Expired Reservation error

If one or more reservations passed to the POST v1/booking/orders/_bulk endpoint is expired you will get an HTTP 422 response with the following violations:

{
  "@context": "/contexts/ConstraintViolationList",
  "@id": "/validation_errors/d53a91b0-def3-426a-83d7-269da7ab4200",
  "@type": "ConstraintViolationList",
  "status": 422,
  "violations": [
    {
      "propertyPath": "reservations[0].expired",
      "message": "La réservation a expiré",
      "code": "d53a91b0-def3-426a-83d7-269da7ab4200"
    }
  ],
  "detail": "reservations[0].expired: La réservation a expiré",
  "description": "reservations[0].expired: La réservation a expiré",
  "type": "/validation_errors/d53a91b0-def3-426a-83d7-269da7ab4200",
  "title": "An error occurred"
}

6. Get an OrderDocument download Url

To get the download url of the document you should call the PATCH /v1/booking/orders/{orderId}/documents endpoint. Note that setting the Accept-Language header will get you the document in the desired language if available. If the desired language is not available the default catalog’s language will be used.

Request

$ curl --request PATCH \
  --url https://api.korusticket.com/v1/booking/orders/0194b132-448c-7d1b-bb13-f8e09ae5c18f/documents/0194b132-449c-79cd-9da1-50be439b6e9d \
  -H 'accept: application/ld+json' \
  -H 'Authorization: Bearer {{YOUR_JWT_TOKEN}}' \
  -H 'Accept-Language: fr' \
  -H 'Content-Type: application/merge-patch+json' \
  -d '{}'

Response

{
  "@context": "/contexts/BookingOrderDocument",
  "@id": "/v1/booking/orders/0194b132-448c-7d1b-bb13-f8e09ae5c18f/documents/0194b132-449c-79cd-9da1-50be439b6e9d",
  "@type": "BookingOrderDocument",
  "id": "0194b132-449c-79cd-9da1-50be439b6e9d",
  "cachedAt": "2025-01-29T09:58:06+00:00",
  "expiresAt": "2025-01-29T10:08:06+00:00",
  "temporaryUrl": "https://storage.googleapis.com/BUCKET/0194a854-daf4-78fc-aed1-b39a0867add7/0194b6c7-cbc8-7e79-b8a8-e95ffd98d08f/0194b6c7-cbc8-7e79-b8a8-e95ffe2acb49.pdf?GoogleAccessId=bucket%40bucket.iam.gserviceaccount.com&Expires=1738235339&Signature=KG27A%2Bc4z6C2McDcT4G3H70dZpp5ED7wsQawE2Q8qbeABJcWpNy7xd5fneTx%2BXLzzf0QBv8wfqVvl8tNKwyK1EFnvq%2FDwtt6OtjAwnObFZtRB4X6eHuVoVR%2FR%2FT9JznN6okNc7KC5lLTYFDUkH%2Fh7M6mQ35wrtSJ6WCFv1Zf7LaPIhubLK9%2BBEfnziLbRAph4U5XJBGf4Xa5zGJtRqArNON5Ivs0f95L6MXZ4Aft%2BhByW%2Bllq9z7T9cJJAErDWYRDQotiUGmR4AOZ3D25k1CeNf8EN3ORjYNwboxGp5S43toNxswhZlMapBqoFyNC8oHVrg7eCbwsVxEUnc%2FiTt%2Fyw%3D%3D",
  "cachedLanguage": "fr"
}

You can use the "temporaryUrl" value to download the document. As the name indicates, this URL is temporary. This means you cannot share it directly with the customer. Instead, you can either download and store the document in your own storage, or call this endpoint again to get a new URL when needed.