curl --request POST \
--url https://api.trycherry.ai/v1/ein-applications/{id}/request-signature \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"signerEmail": "maria@acmeventures.com"
}
'import requests
url = "https://api.trycherry.ai/v1/ein-applications/{id}/request-signature"
payload = { "signerEmail": "maria@acmeventures.com" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({signerEmail: 'maria@acmeventures.com'})
};
fetch('https://api.trycherry.ai/v1/ein-applications/{id}/request-signature', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.trycherry.ai/v1/ein-applications/{id}/request-signature",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'signerEmail' => 'maria@acmeventures.com'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.trycherry.ai/v1/ein-applications/{id}/request-signature"
payload := strings.NewReader("{\n \"signerEmail\": \"maria@acmeventures.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.trycherry.ai/v1/ein-applications/{id}/request-signature")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"signerEmail\": \"maria@acmeventures.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.trycherry.ai/v1/ein-applications/{id}/request-signature")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"signerEmail\": \"maria@acmeventures.com\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"application": {
"waiting": {
"stage": "not_filed",
"daysSinceFiled": 123,
"normalWindowDays": {
"min": 123,
"max": 123
},
"message": "<string>"
},
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"entityId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"legalName": "<string>",
"entityType": "LLC",
"filingState": "<string>",
"status": "ready_to_file",
"ein": "<string>",
"ss4DocumentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signatureEnvelopeId": "<string>",
"signedDocumentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"filedAt": "2023-11-07T05:31:56Z",
"receivedAt": "2023-11-07T05:31:56Z",
"signatureRequestedAt": "2023-11-07T05:31:56Z",
"signedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
},
"envelopeId": "<string>",
"signer": {
"email": "jsmith@example.com",
"name": "<string>",
"standing": "member"
}
}
}{
"error": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"reason": "<string>"
}Email the responsible party for signature (write scope)
Sends the rendered SS-4 to the responsible party to sign. They sign under penalties of perjury as the person named on line 7a — Cherry is only the third-party designee and can never be the signer.
signerEmail is resolved to a person Cherry already knows: the address must belong to a workspace member or trusted contact, AND the name Cherry holds for that address must be the responsible party named on the form. A colleague cannot be nominated in their place. signerName is optional and treated as a confirmation; if it disagrees with the record the request is refused rather than overridden.
The signing link is never returned. It is a bearer credential — anyone holding it can sign — so it is mailed to the recipient and nowhere else. Poll the application’s status to see when it has been signed.
curl --request POST \
--url https://api.trycherry.ai/v1/ein-applications/{id}/request-signature \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"signerEmail": "maria@acmeventures.com"
}
'import requests
url = "https://api.trycherry.ai/v1/ein-applications/{id}/request-signature"
payload = { "signerEmail": "maria@acmeventures.com" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({signerEmail: 'maria@acmeventures.com'})
};
fetch('https://api.trycherry.ai/v1/ein-applications/{id}/request-signature', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.trycherry.ai/v1/ein-applications/{id}/request-signature",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'signerEmail' => 'maria@acmeventures.com'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.trycherry.ai/v1/ein-applications/{id}/request-signature"
payload := strings.NewReader("{\n \"signerEmail\": \"maria@acmeventures.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.trycherry.ai/v1/ein-applications/{id}/request-signature")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"signerEmail\": \"maria@acmeventures.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.trycherry.ai/v1/ein-applications/{id}/request-signature")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"signerEmail\": \"maria@acmeventures.com\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"application": {
"waiting": {
"stage": "not_filed",
"daysSinceFiled": 123,
"normalWindowDays": {
"min": 123,
"max": 123
},
"message": "<string>"
},
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"entityId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"legalName": "<string>",
"entityType": "LLC",
"filingState": "<string>",
"status": "ready_to_file",
"ein": "<string>",
"ss4DocumentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"signatureEnvelopeId": "<string>",
"signedDocumentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"filedAt": "2023-11-07T05:31:56Z",
"receivedAt": "2023-11-07T05:31:56Z",
"signatureRequestedAt": "2023-11-07T05:31:56Z",
"signedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
},
"envelopeId": "<string>",
"signer": {
"email": "jsmith@example.com",
"name": "<string>",
"standing": "member"
}
}
}{
"error": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"reason": "<string>"
}Authorizations
Cherry API key, created in the app. Sent as Authorization: Bearer ck_live_…. OAuth access tokens (ck_oat_…) are accepted in exactly the same header.
Path Parameters
EIN application id, from listEinApplications or the incorporation response.
Body
Response
The form is out for signature
Show child attributes
Show child attributes