> You are reading the Docusign Developer Documentation. For clean Markdown of any page, append .md to the page URL.
>
> Documentation indexes by section:
> - APIs and SDKs: https://docusign.docs.buildwithfern.com/docs/llms.txt
> - Platform 101: https://docusign.docs.buildwithfern.com/platform/llms.txt
> - Extension Apps: https://docusign.docs.buildwithfern.com/extension-apps/llms.txt
> - Docusign CLI: https://docusign.docs.buildwithfern.com/docusign-cli/llms.txt
>
> Authentication (OAuth, JWT Grant, M2M): https://docusign.docs.buildwithfern.com/platform/auth
> Webhooks and Connect: https://docusign.docs.buildwithfern.com/platform/webhooks
>
> OpenAPI specifications: https://docusign.docs.buildwithfern.com/openapi.json
> MCP server: https://docusign.docs.buildwithfern.com/_mcp/server

# SaveTemplate

This method returns SaveTemplateResult. Input to SaveTemplate is the EnvelopeTemplate object described in the [RequestTemplate section](/docs/esign-soap-api/reference/administrative-group/requesttemplates).

### Schema

![SaveTemplate](/_fern-files/_img/c0192e8140eea23a498e3726b536e26ac162ad08d2d3f24e6b1f5d695cb771ad.webp)

**`C#`**

```csharp title="C#"
// Request all the templates as shown in linked code
DocuSignWeb.EnvelopeTemplateDefinition[] response = <templates request>;

foreach (DocuSignWeb.EnvelopeTemplateDefinition def in response)
{
    Console.WriteLine("Retrieved template definition with ID {0}", def.TemplateID);

    // Request the template specified by the template ID
    DocuSignWeb.EnvelopeTemplate template = _apiClient.RequestTemplate(def.TemplateID,
        true);

    // Modify the name of the template
    template.EnvelopeTemplateDefinition.Name = "Modified name";

    // Save the template back to the account
    DocuSignWeb.SaveTemplateResult result = _apiClient.SaveTemplate(template);

    // Confirm that the save operation succeeded
    Console.WriteLine("\tSaved template? {0}", result.Success);
}
```

**`PHP`**

```php title="PHP"
// Request all the templates this account has on file 
$requestTemplatesparams = new RequestTemplates();
$requestTemplatesparams->AccountID = $AccountID;
$requestTemplatesparams->IncludeAdvancedTemplates = false;
$rtsResponses = $api->RequestTemplates($requestTemplatesparams)->RequestTemplatesResult->EnvelopeTemplateDefinition;

// Make a new template from each template on file and save it
$requestTemplateparams = new RequestTemplate();
$requestTemplateparams->IncludeDocumentBytes = true;
$responses = array();
foreach ($rtsResponses as $envTemplateDef) {
    $requestTemplateparams->TemplateID = $envTemplateDef->TemplateID;
    $template = $api->RequestTemplate($requestTemplateparams)->RequestTemplateResult;
    $template->EnvelopeTemplateDefinition->Name = "Modified Name";
    $saveTemplateparams = new SaveTemplate();
    $saveTemplateparams->EnvelopeTemplate = $template;
    $response = $api->SaveTemplate($saveTemplateparams);
    array_push($responses, $response);
}
```

| Name             | Schema Type      | Description                                                                             |
| ---------------- | ---------------- | --------------------------------------------------------------------------------------- |
| EnvelopeTemplate | EnvelopeTemplate | Template to save. EnvelopeTemplate object was described in the RequestTemplate section. |

## Rules and exceptions for SaveTemplate

* Account_Lacks_Permissions – account does not have permissions to use this API.
* User_Lacks_Permissions – user does not have permissions to use this API or the user does not have permissions to manage templates for the account.
* If the template ID is not provided in EnvelopeTemplate a new template will be created.