eContract Developers
API ReferenceContracts

Get signing links for the signers (no email is sent)

Mints a fresh token for every external signer who has not signed or declined (older links stay valid). Internal signers get the dashboard link. 409 unless the contract is pending or in signing.

POST
/api/v1/contracts/{id}/signing-links
AuthorizationBearer <token>

API key cl_live_… or OAuth access token eco_at_… in Authorization: Bearer. Public operations (x-econtract-auth: public) need no credential.

In: header

Path Parameters

id*string

Header Parameters

Idempotency-Key?string

Up to 255 characters. Retries with the same key and body replay the first result (header Idempotent-Replayed: true) for 24 h.

Response Body

application/json

curl -X POST "https://api.econtract.online/api/v1/contracts/string/signing-links"
{
  "data": [
    {
      "signerId": "string",
      "name": {},
      "email": "string",
      "signerType": "internal",
      "status": "pending",
      "signingUrl": {},
      "expiresAt": {}
    }
  ]
}
Empty

Code Examples

curl -X POST "https://api.econtract.online/api/v1/contracts/abc123/signing-links" \
  -H "Authorization: Bearer cl_live_your_key_here"
const res = await fetch("https://api.econtract.online/api/v1/contracts/abc123/signing-links", {
  headers: { "Authorization": "Bearer cl_live_your_key_here" },
}).then(r => r.json());

console.log(res);
import requests

res = requests.get(
    "https://api.econtract.online/api/v1/contracts/abc123/signing-links",
    headers={"Authorization": "Bearer cl_live_your_key_here"},
).json()

print(res)
package main

import (
    "fmt"
    "io"
    "net/http"
)

func main() {
    req, _ := http.NewRequest("POST", "https://api.econtract.online/api/v1/contracts/abc123/signing-links", nil)
    req.Header.Set("Authorization", "Bearer cl_live_your_key_here")
    req.Header.Set("Content-Type", "application/json")

    resp, _ := http.DefaultClient.Do(req)
    defer resp.Body.Close()
    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.econtract.online/api/v1/contracts/abc123/signing-links");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer cl_live_your_key_here",
    "Content-Type: application/json",
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.econtract.online/api/v1/contracts/abc123/signing-links"))
    .header("Authorization", "Bearer cl_live_your_key_here")
    .GET()
    .build();

HttpResponse<String> response = HttpClient.newHttpClient()
    .send(request, HttpResponse.BodyHandlers.ofString());

System.out.println(response.body());
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer cl_live_your_key_here");
var response = await client.GetAsync("https://api.econtract.online/api/v1/contracts/abc123/signing-links");
var body = await response.Content.ReadAsStringAsync();

Console.WriteLine(body);