public static void Main()
string response = ApiUnclaimedDraft(
"http://www.analysis.im/uploads/seminar/pdf-sample.pdf",
new[]{ "Metadata1", "abc123" },
new[]{ "Metadata2", "Policy.pdf" }
Console.WriteLine(response);
public static string ApiUnclaimedDraft(string apiKey, bool isTest, string file, string type, string name, string email, string[][] metadata)
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.hellosign.com/v3/unclaimed_draft/create");
var postData = "test_mode=" + (isTest ? "1" : "0");
postData += "&file_url[0]=" + HttpUtility.UrlEncode(file);
postData += "&type=" + type;
postData += "&signers[0][name]=" + HttpUtility.UrlEncode(name);
postData += "&signers[0][email_address]=" + HttpUtility.UrlEncode(email);
for(int i = 0; i < metadata.Length; i++)
postData += "&metadata[" + HttpUtility.UrlEncode(metadata[i][0]) + "]=" + HttpUtility.UrlEncode(metadata[i][1]);
var data = Encoding.ASCII.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
string authorization = apiKey + ":";
byte[] binaryAuthorization = System.Text.Encoding.UTF8.GetBytes(authorization);
authorization = Convert.ToBase64String(binaryAuthorization);
authorization = "Basic " + authorization;
request.Headers.Add("AUTHORIZATION", authorization);
using (var stream = request.GetRequestStream())
stream.Write(data, 0, data.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
return new StreamReader(response.GetResponseStream()).ReadToEnd();