Get /surveys/{{survey-id}}/previous-page

Example Request

https://api.questionpro.{{env}}/a/api/v2/surveys/{{survey-id}}/previous-page

The value of environment {{env}} variable depends upon your datacenter. Refer to the Environment page for more details.


Navigates the respondent back to the previous survey page. The response has the same shape as GET /take — it returns the previous page's questions with the answers the respondent previously submitted already embedded in the question JSON.


Authorization

arrow_rightSession Cookie — JSESSIONID
Name : JSESSIONID
required
Location : Cookie header
Type : string
Description : Obtained from the Set-Cookie header of the initial GET /take response. A previous page submission (POST /submit-page) must have succeeded at least once before this endpoint can be called.
arrow_rightSecurity - API Key
Name : api-key
required
Location : Request Header
Type : string

Request Parameters

arrow_rightPath Parameters
survey-id integer
required

Example Code

arrow_rightcURL
Snippet copied successfully.
application/json

curl --location 'https://api.questionpro.{{env}}/a/api/v2/surveys/{{survey-id}}/previous-page' \
--header 'Accept: application/json' \
--header 'Cookie: JSESSIONID={{jsessionid}}'
            
arrow_rightPython
Snippet copied successfully.
application/json

import requests

url = "https://api.questionpro.{{env}}/a/api/v2/surveys/{{survey-id}}/previous-page"

headers = {
    "Accept": "application/json"
}

#  Use the same session object that was used for GET /take and POST /submit-page
session = requests.Session()
response = session.get(url, headers=headers)

print(response.text)
            
arrow_rightPHP - cURL
Snippet copied successfully.
application/json

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL            => 'https://api.questionpro.{{env}}/a/api/v2/surveys/{{survey-id}}/previous-page',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST  => 'GET',
  CURLOPT_HTTPHEADER     => array(
    'Accept: application/json',
    'Cookie: JSESSIONID={{jsessionid}}'
  ),
  CURLOPT_COOKIEFILE     => '/tmp/cookie.txt',
  CURLOPT_COOKIEJAR      => '/tmp/cookie.txt',
));

$response = curl_exec($curl);
curl_close($curl);
echo $response;
            
arrow_rightJavaScript (fetch)
Snippet copied successfully.
application/json

const response = await fetch(
  'https://api.questionpro.{{env}}/a/api/v2/surveys/{{survey-id}}/previous-page',
  {
    method: 'GET',
    headers: { 'Accept': 'application/json' },
    credentials: 'include'   // forwards JSESSIONID cookie automatically
  }
);
const data = await response.json();
console.log(data);
            

Responses

arrow_right200 OK — Previous page loaded with pre-filled answers
application/json

{
  "response": {
    "status": "success",
    "meta": {
      "isFinalPage": false,
      "progressPercentage": 25
    },
    "navigation": {
      "previousPageUrl": null,
      "nextPageSubmitUrl": "/a/api/v2/surveys/123456/submit-page"
    },
    "themeConfig": {
      "cssUrls": ["https://cdn.questionpro.com/themes/corporate.css"],
      "jsUrls": []
    },
    "questions": [
      {
        "html": "<div class='qstn-row'>...rendered HTML with previously selected answer highlighted...</div>",
        "json": "{\"id\":10001,\"type\":\"U\",\"text\":\"How satisfied are you with our service?\",\"answers\":[{\"id\":50001,\"text\":\"Very satisfied\"},{\"id\":50002,\"text\":\"Satisfied\",\"selected\":true},{\"id\":50003,\"text\":\"Neutral\"}],\"formParam\":{\"paramPrefix\":\"u_\",\"paramIdType\":\"questionId\"}}"
      }
    ]
  },
  "requestID": "7ab12cde-3f45-67gh-89ij-0k1lm2n3o4p5"
}
                
arrow_rightSchema
application/json
{
  "$schema": "http://json-schema.org/draft-06/schema# ",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "navigation": {
          "type": "object",
          "properties": {
            "previousPageUrl": {
              "type": "string"
            },
            "nextPageSubmitUrl": {
              "type": "string"
            }
          },
          "additionalProperties": false,
          "required": [
            "previousPageUrl",
            "nextPageSubmitUrl"
          ]
        },
        "meta": {
          "type": "object",
          "properties": {
            "isFinalPage": {
              "type": "string"
            },
            "progressPercentage": {
              "type": "string"
            }
          },
          "additionalProperties": false,
          "required": [
            "isFinalPage",
            "progressPercentage"
          ]
        },
        "questions": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "json": {
                "type": "string"
              },
              "html": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "json",
              "html"
            ]
          }
        },
        "themeConfig": {
          "type": "object",
          "properties": {
            "jsUrls": {
              "type": "string"
            },
            "cssUrls": {
              "type": "string"
            }
          },
          "additionalProperties": false,
          "required": [
            "jsUrls",
            "cssUrls"
          ]
        },
        "status": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": [
        "navigation",
        "meta",
        "questions",
        "themeConfig",
        "status"
      ]
    },
    "requestID": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "response",
    "requestID"
  ]
}
arrow_right400 — No previous page available
application/json

{
    "response": {
     "error": {
         "docs": www.questionpro.com/api/error-codes.html
         "name": "BAD_REQUEST",
         "httpStatusCode": 400,
         "id" : "1000",
         "message": "Invalid URL parameters",
         "resourceUrl":"resource_url"
        }
    }
}
                                
arrow_rightSchema
application/json

{
  "$schema": "http://json-schema.org/draft-06/schema#                                      ",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "error": {
          "type": "object",
          "properties": {
            "docs": {
              "type": "string"
            },
            "resourceUrl": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "id": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "httpStatusCode": {
              "type": "integer"
            }
          },
          "additionalProperties": false,
          "required": [
            "docs",
            "resourceUrl",
            "name",
            "id",
            "message",
            "httpStatusCode"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "error"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "response"
  ]
}
                                
arrow_right400 Bad Request — No previous submission exists
application/json

{
  "error": {
    "code": 1002,
    "message": "No previous page to navigate back to."
  },
  "requestID": "7ab12cde-3f45-67gh-89ij-0k1lm2n3o4p5"
}
                
arrow_right400 example
application/json

{
    "response": {
     "error": {
         "docs": www.questionpro.com/api/error-codes.html
         "name": "BAD_REQUEST",
         "httpStatusCode": 400,
         "id" : "1000",
         "message": "Invalid URL parameters",
         "resourceUrl":"resource_url"
        }
    }
}
                                
arrow_rightSchema
application/json

{
  "$schema": "http://json-schema.org/draft-06/schema#                                      ",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "error": {
          "type": "object",
          "properties": {
            "docs": {
              "type": "string"
            },
            "resourceUrl": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "id": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "httpStatusCode": {
              "type": "integer"
            }
          },
          "additionalProperties": false,
          "required": [
            "docs",
            "resourceUrl",
            "name",
            "id",
            "message",
            "httpStatusCode"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "error"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "response"
  ]
}
                                
arrow_right401 example
application/json

{
    "response": {
     "error": {
         "docs": www.questionpro.com/api/error-codes.html
         "name": "UNAUTHORIZED",
         "httpStatusCode": 401,
         "id" : "1010",
         "message": "Incorrect API Key",
         "resourceUrl":"resource_url"
        }
    }
}
						
							
arrow_rightSchema
application/json

{
  "$schema": "http://json-schema.org/draft-06/schema#                                      ",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "error": {
          "type": "object",
          "properties": {
            "docs": {
              "type": "string"
            },
            "resourceUrl": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "id": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "httpStatusCode": {
              "type": "integer"
            }
          },
          "additionalProperties": false,
          "required": [
            "docs",
            "resourceUrl",
            "name",
            "id",
            "message",
            "httpStatusCode"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "error"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "response"
  ]
}
                                
arrow_right403 example
application/json

{
    "response": {
     "error": {
         "docs": www.questionpro.com/api/error-codes.html
         "name": "FORBIDDEN",
         "httpStatusCode": 403,
         "id" : "1013",
         "message": "The user does not have permission to access the resource",
         "resourceUrl":"resource_url"
        }
    }
}				
							
arrow_rightSchema
application/json

{
  "$schema": "http://json-schema.org/draft-06/schema#                                      ",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "error": {
          "type": "object",
          "properties": {
            "docs": {
              "type": "string"
            },
            "resourceUrl": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "id": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "httpStatusCode": {
              "type": "integer"
            }
          },
          "additionalProperties": false,
          "required": [
            "docs",
            "resourceUrl",
            "name",
            "id",
            "message",
            "httpStatusCode"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "error"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "response"
  ]
}
                                
arrow_right404 example
application/json

{
    "response": {
     "error": {
         "docs": www.questionpro.com/api/error-codes.html
         "name": "NOT_FOUND",
         "httpStatusCode": 404,
         "id" : "1040",
         "message": "The resource that you're trying to access doesn't exist",
         "resourceUrl":"resource_url"
        }
    }
}
							
							
arrow_rightSchema
application/json

{
  "$schema": "http://json-schema.org/draft-06/schema#                                      ",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "error": {
          "type": "object",
          "properties": {
            "docs": {
              "type": "string"
            },
            "resourceUrl": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "id": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "httpStatusCode": {
              "type": "integer"
            }
          },
          "additionalProperties": false,
          "required": [
            "docs",
            "resourceUrl",
            "name",
            "id",
            "message",
            "httpStatusCode"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "error"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "response"
  ]
}
                                
arrow_right500 example
application/json

{
    "response": {
     "error": {
         "docs": www.questionpro.com/api/error-codes.html
         "name": "INTERNAL_SERVER_ERROR",
         "httpStatusCode": 500,
         "id" : "1026",
         "message": "We are not able to process your request",
         "resourceUrl":"resource_url"
        }
    }
}
							
arrow_rightSchema
application/json

{
  "$schema": "http://json-schema.org/draft-06/schema#                                      ",
  "type": "object",
  "properties": {
    "response": {
      "type": "object",
      "properties": {
        "error": {
          "type": "object",
          "properties": {
            "docs": {
              "type": "string"
            },
            "resourceUrl": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "id": {
              "type": "string"
            },
            "message": {
              "type": "string"
            },
            "httpStatusCode": {
              "type": "integer"
            }
          },
          "additionalProperties": false,
          "required": [
            "docs",
            "resourceUrl",
            "name",
            "id",
            "message",
            "httpStatusCode"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "error"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "response"
  ]
}
                                

Behaviour Notes

arrow_rightKey Behaviours
The previousPageUrl in the navigation object of GET /take and POST /submit-page points to this endpoint.
previousPageUrl is null in the navigation object when the respondent is on the first page — do not show a 'Back' button in that case.
If the survey does not allow back navigation, GoBackSurveyServlet redirects to the survey's current position — the response will still have status=success but will return the current page, not the previous one.
A 400 is returned if no prior submission exists in session (i.e. the respondent is on the first page and has not submitted yet).