curl --request POST \
--url https://app.govly.com/api/tools/v1/shares \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"id": "<string>",
"subject": "<string>",
"recipients": [
{
"email": "<string>",
"name": "<string>",
"company": "<string>"
}
],
"custom_message": "<string>",
"email_recipient_groups": [
{
"team_id": "<string>"
}
]
}
'import requests
url = "https://app.govly.com/api/tools/v1/shares"
payload = {
"id": "<string>",
"subject": "<string>",
"recipients": [
{
"email": "<string>",
"name": "<string>",
"company": "<string>"
}
],
"custom_message": "<string>",
"email_recipient_groups": [{ "team_id": "<string>" }]
}
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({
id: '<string>',
subject: '<string>',
recipients: [{email: '<string>', name: '<string>', company: '<string>'}],
custom_message: '<string>',
email_recipient_groups: [{team_id: '<string>'}]
})
};
fetch('https://app.govly.com/api/tools/v1/shares', 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://app.govly.com/api/tools/v1/shares",
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([
'id' => '<string>',
'subject' => '<string>',
'recipients' => [
[
'email' => '<string>',
'name' => '<string>',
'company' => '<string>'
]
],
'custom_message' => '<string>',
'email_recipient_groups' => [
[
'team_id' => '<string>'
]
]
]),
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://app.govly.com/api/tools/v1/shares"
payload := strings.NewReader("{\n \"id\": \"<string>\",\n \"subject\": \"<string>\",\n \"recipients\": [\n {\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"company\": \"<string>\"\n }\n ],\n \"custom_message\": \"<string>\",\n \"email_recipient_groups\": [\n {\n \"team_id\": \"<string>\"\n }\n ]\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://app.govly.com/api/tools/v1/shares")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"<string>\",\n \"subject\": \"<string>\",\n \"recipients\": [\n {\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"company\": \"<string>\"\n }\n ],\n \"custom_message\": \"<string>\",\n \"email_recipient_groups\": [\n {\n \"team_id\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.govly.com/api/tools/v1/shares")
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 \"id\": \"<string>\",\n \"subject\": \"<string>\",\n \"recipients\": [\n {\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"company\": \"<string>\"\n }\n ],\n \"custom_message\": \"<string>\",\n \"email_recipient_groups\": [\n {\n \"team_id\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"email": "<string>",
"name": "<string>",
"company": "<string>"
}
],
"meta": {
"entityType": "<string>",
"entityId": "<string>",
"recipientCount": 123
}
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}Share an opportunity, award, or contact by email
Send an opportunity, award, or contact to one or more recipients by email. Delivery is queued immediately and is at-least-once, so a transient failure may redeliver to recipients who already received the message.
Recipients must be Govly users at your own organization or a partner organization. Addresses outside that set are rejected rather than silently dropped, and no email is sent for the request.
The identifier form depends on the type. Opportunities take the numeric Govly ID. Awards may be addressed by numeric ID or by uniqueKey; the uniqueKey returned from award search is accepted directly.
Sharing an opportunity sends one email per recipient rather than one email addressed to everyone. Award and contact shares send a single email when no teams are named; naming any team in email_recipient_groups gives their remaining recipients one email each as well.
A share may send at most 20 emails per request: each team is one email, and each recipient outside a named team is one more. An ungrouped award or contact share is a single send and is not limited.
curl --request POST \
--url https://app.govly.com/api/tools/v1/shares \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"id": "<string>",
"subject": "<string>",
"recipients": [
{
"email": "<string>",
"name": "<string>",
"company": "<string>"
}
],
"custom_message": "<string>",
"email_recipient_groups": [
{
"team_id": "<string>"
}
]
}
'import requests
url = "https://app.govly.com/api/tools/v1/shares"
payload = {
"id": "<string>",
"subject": "<string>",
"recipients": [
{
"email": "<string>",
"name": "<string>",
"company": "<string>"
}
],
"custom_message": "<string>",
"email_recipient_groups": [{ "team_id": "<string>" }]
}
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({
id: '<string>',
subject: '<string>',
recipients: [{email: '<string>', name: '<string>', company: '<string>'}],
custom_message: '<string>',
email_recipient_groups: [{team_id: '<string>'}]
})
};
fetch('https://app.govly.com/api/tools/v1/shares', 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://app.govly.com/api/tools/v1/shares",
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([
'id' => '<string>',
'subject' => '<string>',
'recipients' => [
[
'email' => '<string>',
'name' => '<string>',
'company' => '<string>'
]
],
'custom_message' => '<string>',
'email_recipient_groups' => [
[
'team_id' => '<string>'
]
]
]),
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://app.govly.com/api/tools/v1/shares"
payload := strings.NewReader("{\n \"id\": \"<string>\",\n \"subject\": \"<string>\",\n \"recipients\": [\n {\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"company\": \"<string>\"\n }\n ],\n \"custom_message\": \"<string>\",\n \"email_recipient_groups\": [\n {\n \"team_id\": \"<string>\"\n }\n ]\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://app.govly.com/api/tools/v1/shares")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"<string>\",\n \"subject\": \"<string>\",\n \"recipients\": [\n {\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"company\": \"<string>\"\n }\n ],\n \"custom_message\": \"<string>\",\n \"email_recipient_groups\": [\n {\n \"team_id\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.govly.com/api/tools/v1/shares")
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 \"id\": \"<string>\",\n \"subject\": \"<string>\",\n \"recipients\": [\n {\n \"email\": \"<string>\",\n \"name\": \"<string>\",\n \"company\": \"<string>\"\n }\n ],\n \"custom_message\": \"<string>\",\n \"email_recipient_groups\": [\n {\n \"team_id\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"email": "<string>",
"name": "<string>",
"company": "<string>"
}
],
"meta": {
"entityType": "<string>",
"entityId": "<string>",
"recipientCount": 123
}
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>",
"source": {
"pointer": "<string>"
}
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Entity type to share. opp is accepted as an opportunity alias.
award, contact, opp, opportunity Govly entity ID. Opportunities take the numeric ID; awards also accept a uniqueKey.
Subject line for the email.
Recipients to email.
1Show child attributes
Show child attributes
Optional note included above the record details.
Groups recipients already listed above into one email per team. Does not add recipients.
Show child attributes
Show child attributes
Was this page helpful?