# Test a sequence of API calls with Respect Use Respect to make a series of API calls to a demo API, and use the response from the first call as an input for the second. ## Before you begin Make sure you have the following before you begin: 1. [Node.js](https://nodejs.org/) LTS version 2. [Curl](https://curl.se/) 3. A copy of the [Demo API description](https://api.redocly.com/registry/bundle/testing_acme/training/v1/openapi.yaml), renamed to `demo.yaml`. Download the demo API description with the following command: ```shell curl https://api.redocly.com/registry/bundle/testing_acme/training/v1/openapi.yaml > demo.yaml ``` ## Preview the API To get a sense of the API, preview it by running the following command, and then clicking on the link generated to your localhost. ```shell npx @redocly/cli preview demo.yaml ``` After you review the docs, press `Control` + `C`` in your terminal to stop the preview. ## Sequence requests together Let's create a flow [based on the starter guide](/docs/respect/guides/run-generated-tests) that sequences the following two requests together: - create a quiz - get scores for that quiz To complete these steps, we'll need to use a response value from the first "create a quiz" request in the second "get scores for that quiz" request to get the scores. Here's the Arazzo file to achieve the steps, put the following content into `sequence.arazzo.yaml`: ```yaml sequence.arazzo.yaml arazzo: 1.0.1 info: title: Learning API Demo version: v1 sourceDescriptions: - name: demo type: openapi url: demo.yaml workflows: - workflowId: sequence-demo steps: - stepId: createQuiz operationId: PostQuiz outputs: quizId: $response.body#/id - stepId: getScores operationId: GetScores parameters: - in: header name: quiz value: $steps.createQuiz.outputs.quizId parameters: - in: header name: IMF-KEY value: $inputs.IMFKEY inputs: type: object properties: env: type: object properties: IMFKEY: type: string format: password ``` Run the new sequence in verbose mode with the following command: ```sh npx @redocly/cli respect sequence.arazzo.yaml --input IMFKEY=abc --verbose ``` Reading through the output, observe that: 1. The first request is a `POST` to create a quiz; it returns status `201`. 2. The response body includes an `id` field. 3. The value of the `id` field from the first step is used as a parameter in the second step. Being able to use response data in later steps is what makes the testing sequence very flexible and powerful. You can test create and update workflows using this approach, where some data (such as the `id` in this example) isn't known in advance. ## Next steps Start testing your own APIs, or other APIs that you depend on, using Respect. **Remember that Respect sends real API requests**, so consider using a local development or staging version of an API for some types of testing. Use Respect to make sure that the real API has not drifted from the expected behavior described in its OpenAPI file. You can also override the server URL from the `sourceDescriptions` object with the `--server` option.