Skip to main content
New Participant
Jan 29, 2026 7:41 PM UTC
Question

Query Parameter Encoding Issue: Spaces encoded as + but API encodes it as %20 - Is there a workaround?

Hello Appian Community,

I'm experiencing a URL encoding challenge with query parameters in an integration and would like to know if there's a solution or workaround.

The Problem:

I need to pass query parameter values that contain spaces (e.g., "North America") to an external API via a GET request. When I use Appian's standard Query Parameters in my integration object, the spaces are encoded as + signs, resulting in ?searchText=North+America.

However, the external API we're integrating with does not recognize + as a space character and requires spaces to be encoded as %20 (i.e., ?searchText=North%20America).

What I've Tried:

  1. Pre-encoding the parameter with substitute() - Replacing spaces with %20 before passing to the integration causes double encoding, resulting in %2520 because Appian encodes the % character itself
  2. Using urlwithparameters() function - Still produces + encoding for spaces, which follows the application/x-www-form-urlencoded standard
  3. Standard Query Parameters section - Consistently encodes spaces as + signs
  4. Building URL manually in Relative Path - Same encoding behavior

My Questions:

  1. Is there any way in Appian to force query parameters to use %20 encoding for spaces instead of + encoding?
  2. Is it even possible to pass literal spaces (unencoded) in query parameter values, or will Appian always encode them?
  3. Are there any alternative approaches or workarounds to handle this scenario?

Additional Context:

  • Integration uses a Connected System with GET method
  • Cannot modify the external API to accept + encoding
  • API endpoint only accepts GET requests (POST with JSON body is not an option)
  • Cannot change the parameter values to avoid spaces (business requirement)

Has anyone encountered a similar issue or found a workaround for controlling the URL encoding format in Appian integrations?

Thank you in advance for any guidance!

5 replies

harshas2775
Brainy
Jan 30, 2026 7:22 AM UTC

Suggest you to do the below. 

1. Select 'Build URL from Scratch' in the integration. 

2. Use urlwithparameters like() this in the URL configuration 

urlwithparameters(
   "https://openlibrary.org/search.json",
   {"q"},
   {"the lord of the rings"}
 )

3. Leave Query Parameters empty

Happy to help. Even happier to optimize.
New Participant
Jan 30, 2026 1:30 PM UTC

okay i tried implementing that, but our requirement needs passing parameters and values, the urlwithparameters helped me in encoding but still cant get the data out of it.[mention:65b14048184a4eb5aff3a76c87b97431:e9ed411860ed4f2ba0265705b8793d05] . can you help me out on this , if you have a fix for this.

harshas2775
Brainy
Jan 30, 2026 3:31 PM UTC

Whatever data you need to pass you can pass as rule inputs to the integration and then create urlwithparameters() to work with rule inputs in place of hard code values - the result should be same. Query parameters explicitly would not be needed. 

Happy to help. Even happier to optimize.