Run with Postman

Pec (Posta Elettronica Certificata) (1.1.0)

Web services for the activation and management of Certified Email (PEC). These services allow you to register a new certified mailbox, as well as renew or revoke existing accounts. You can also modify mailbox options such as total storage and archive space, or enable and expand legally compliant preservation. Furthermore, the system includes methods to report a certified email address to the Business Register. Finally, you can use these services to download and upload activation forms for both the mailbox and the legal preservation service.

Pec

Methods that allow you to register, activate and modify a certified e-mail

Availability of a certified e-mail box

This method shows you the availability of a certified e-mail box. It can only verify the availability of mailboxes for domains configured and managed by the system. For unmanaged domains, it will return an error since their existence cannot be verified.

Authorizations:
path Parameters
pec
required
string
Default: "<string>"

Email box

Responses

Response Schema: application/json
object
success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/verifica_pec/%7Bpec%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

List of your certified e-mail boxes

This method shows you the list of certified e-mail boxes that belong to your account

Authorizations:
query Parameters
skip
integer
Default: "<integer>"
Example: skip=0

Optional. Number of items to skip for pagination. If not specified, the default value is 0.

limit
integer
Default: "<integer>"
Example: limit=100

Optional. Maximum number of items to return. If not specified, the default value is 100.

expiring
integer [ -366 .. 365 ]
Default: "<integer>"
Example: expiring=30

Optional. Number of days. Positive (1-365): returns mailboxes in 'evasa' state with expiration date (timestamp.scadenza) falling on that calendar day (today + N days, 00:00:00-23:59:59), sorted by expiration date ascending. Negative (-1 to -366): returns mailboxes in 'revocata' state with expiration date (timestamp.scadenza) falling on that calendar day (today + N days, i.e. today - |N| days, 00:00:00-23:59:59), sorted by expiration date ascending.

Responses

Response Schema: application/json
Array of objects (Caselle) [ items ]
total_count
integer

Total number of PEC mailboxes matching the query, ignoring skip/limit pagination.

success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/pec?skip=0&limit=100&expiring=30");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "total_count": 2,
  • "success": true,
  • "message": "",
  • "error": null
}

Register a new certified mailbox

This method allows you to register a new certified mailbox.

If you do not have your own certified domain, the mailbox must necessarily consist of:

In Sandbox must be: 'box_name'@testcert.legalmail.it (Es. provapec@testcert.legalmail.it) or 'box_name'@test.domiciliodigitale.com (Es. provapec@test.domiciliodigitale.com).

Authorizations:
Request Body schema: application/json
casella_pec
required
string
Default: "<string>"

the certified email address (PEC)

tipo_casella
required
string
Default: "<string>"
Enum: "STANDARD" "BRONZE" "SILVER" "GOLD" "DOMICILIODIGITALE" "PECMASSIVA" "MASSIVA1" "MASSIVA2" "MASSIVA3"

type of mailbox. STANDARD/BRONZE/SILVER/GOLD/MASSIVA1-3 are provisioned via InfoCert; DOMICILIODIGITALE/PECMASSIVA are provisioned via Namirial. The provider is derived from this value (plus the domain), not chosen separately, and it determines which of the other BodyPostPec fields actually apply (see their descriptions).

tipo_cliente
required
string
Default: "<string>"
Enum: "IM" "PS" "PL" "PC" "A" "PV" "X"

the customer type

sottotipo_cliente
string
Default: "<string>"
Enum: "SI" "IN" "CM" "TE" "ES" "ME" "AL" "CF" "ED" "TM" "MA" "AR" "TL" "FI" "X" "PC" "PR" "PN" "PT" "PA" "PL" "LR" "LP" "LC" "LM" "LA" "LI"

The customer subtype. Validated against the DB-driven 'tipologie' lookup collection, not a fixed list — which valid codes apply depends on 'tipo_cliente'; see the TipologieCliente schema for the per-tipo_cliente code tables.

sottotipo_cliente_altro
string
Default: "<string>"

other customer subtype

nome_richiedente
required
string
Default: "<string>"

first name of the applicant

cognome_richiedente
required
string
Default: "<string>"

last name of the applicant

email
required
string
Default: "<string>"

standard email address of the applicant

telefono
required
string
Default: "<string>"

phone number of the applicant

cellulare
string
Default: "<string>"

mobile phone number of the applicant

codice_fiscale_richiedente
required
string
Default: "<string>"

fiscal code of the applicant

data_nascita_richiedente
required
string
Default: "<string>"

date of birth of the applicant

sesso_richiedente
required
string
Default: "<string>"
Enum: "M" "F"

gender of the applicant

nazione_nascita_richiedente
required
string
Default: "<string>"

country of birth of the applicant

comune_nascita_richiedente
string
Default: "<string>"

city of birth of the applicant

provincia_nascita_richiedente
string
Default: "<string>"

province of birth of the applicant

denominazione_titolare
string
Default: "<string>"

name of the mailbox holder. Required when tipo_cliente is not 'PV'.

cf_piva_titolare
string
Default: "<string>"

fiscal code or VAT number of the mailbox holder. Required when tipo_cliente is not 'PV'.

indirizzo_titolare
required
string
Default: "<string>"

address of the mailbox holder

comune_titolare
required
string
Default: "<string>"

city of the mailbox holder

cap_titolare
required
string
Default: "<string>"

postal code (CAP) of the mailbox holder

nazione_titolare
required
string
Default: "<string>"

country of the mailbox holder

provincia_titolare
required
string
Default: "<string>"

province of the mailbox holder

object (Callback)

Standardized callback configuration. Enables receiving notifications about status updates of asynchronous requests.

autorinnovo
boolean
Default: false

if set to true, it allows the system to renew the account automatically upon expiration, trying to withdraw credit from the owner's purse

tipo_documento
string
Default: "<string>"
Enum: "CARTA_D_IDENTITA" "PATENTE" "PASSAPORTO"

type of identification document

numero_documento
string
Default: "<string>"

number of the document

data_scadenza_documento
string
Default: "<string>"

expiration date of the document

documento_rilasciato_da
string
Default: "<string>"

issuing authority of the document

data_rilascio_documento
string
Default: "<string>"

Issue date of the document

rinnovo_anni
integer [ 0 .. 3 ]
Default: 0

additional years beyond the mandatory first year (0-3); total registration length = 1 + rinnovo_anni, i.e. 1-4 years; defaults to 0

spazio_disco
integer
Default: "<integer>"

initial disk space in MB (optional; must be a multiple of 1024)

spazio_storico
integer
Default: "<integer>"

initial archive space in MB (optional; must be a multiple of 1024)

spazio_conservazione
integer
Default: "<integer>"

initial conservation space in MB (optional; must be a multiple of 512)

invio_massivo_pec
integer
Default: "<integer>"

InfoCert only. Bulk sending quota (must be a positive multiple of 50). Not supported on Namirial boxes.

phishing_protection
boolean
Default: "<boolean>"

InfoCert only. Activate phishing protection at registration. Not supported on Namirial boxes.

password_protection
boolean
Default: "<boolean>"

InfoCert only. Activate password protection at registration. Not supported on Namirial boxes.

boolean or Array of objects
note
string
Default: "<string>"

internal notes

Responses

Response Schema: application/json
object (Casella)
success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

Content type
application/json
Example
{
  • "casella_pec": "[email protected]",
  • "tipo_casella": "bronze",
  • "tipo_cliente": "PV",
  • "sottotipo_cliente": "SI",
  • "sottotipo_cliente_altro": "",
  • "nome_richiedente": "mario",
  • "cognome_richiedente": "rossi",
  • "email": "[email protected]",
  • "telefono": "0548798569",
  • "cellulare": "3401234567",
  • "codice_fiscale_richiedente": "RSSXXXXXXXX56E",
  • "data_nascita_richiedente": "11/04/1982",
  • "sesso_richiedente": "M",
  • "nazione_nascita_richiedente": "it",
  • "comune_nascita_richiedente": "roma",
  • "provincia_nascita_richiedente": "RM",
  • "denominazione_titolare": "",
  • "cf_piva_titolare": "",
  • "indirizzo_titolare": "via verdi 20",
  • "comune_titolare": "roma",
  • "cap_titolare": "00042",
  • "nazione_titolare": "it",
  • "provincia_titolare": "rm",
  • "tipo_documento": "CARTA_D_IDENTITA",
  • "numero_documento": "CA00000AA",
  • "data_rilascio_documento": "01/01/2020",
  • "data_scadenza_documento": "01/01/2030",
  • "documento_rilasciato_da": "Comune di Roma",
  • "autorinnovo": false,
  • "rinnovo_anni": 1,
  • "spazio_disco": 1024,
  • "spazio_storico": 1024,
  • "spazio_conservazione": 512,
  • "invio_massivo_pec": 50,
  • "phishing_protection": false,
  • "password_protection": false,
  • "multiutenza": [
    ],
  • "note": "note interne",
  • "callback": {}
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Specific certified e-mail address

This method shows you the specific certified e-mail address related to the id

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 6040e4613a716838dc4eee0e

Pec id

Responses

Response Schema: application/json
object (Casella)
success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/pec/%7Bid%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Pec revocation

This method allows you to revoke the specific certified e-mail address related to the id

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 6040e4613a716838dc4eee0e

Pec id

Responses

Response Schema: application/json
object (Casella)
success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/pec/%7Bid%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Combined PEC operations

Perform one or more operations on a PEC mailbox in a single call with a single billing checkout: upload activation documents, renew, upgrade box type, modify storage/options, activate conservation, and/or add multi-user accounts. At least one operation must be specified. Activation (ModuloAttivazione) requires stato registrata/documenti_errati; all other operations require stato evasa (rinnovo also accepts revocata). Several fields are InfoCert-only: 'upgrade_casella' always fails on Namirial (error 236, no tiers to upgrade to), and 'phishing_protection'/'password_protection'/'invio_massivo_pec' have no effect there. 'multiutenza' also behaves differently per provider (a real per-user list on InfoCert vs a single on/off service on Namirial, with no individual user management). See field descriptions below and the 'combined_namirial' example.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 6045fdee3a716847a978a471

Pec id

Request Body schema: application/json
Array of objects <= 2 items [ items ]

Documents to upload; each item must have 'tipo' (ModuloAttivazione|richiestaConservazione) and 'file' (base64-encoded PDF). This only stages the documents — real provider-side activation is done later by an operator, not through this API. For 'richiestaConservazione': InfoCert needs just 1 document; Namirial needs exactly 2, in order (1st = conservation contract, 2nd = privacy disclosure) before conservazione can actually be activated.

rinnovo_anni
integer [ 1 .. 3 ]
Default: "<integer>"

number of years to renew (1-3)

upgrade_casella
string
Default: "<string>"
Enum: "STANDARD" "BRONZE" "SILVER" "GOLD"

InfoCert only. Upgrade the box type (only upgrades allowed, one of the InfoCert tiers). Always fails on Namirial boxes (DOMICILIODIGITALE/PECMASSIVA — error 236, they have no upgrade tiers).

string or integer

disk space in MB. Prefix '+' adds to current (e.g. '+1024'); plain integer sets absolute value. Must be a multiple of 1024.

string or integer

archive space in MB. Prefix '+' adds to current; plain integer sets absolute. Must be a multiple of 1024.

string or integer

conservation space in MB. Prefix '+' adds to current; plain integer sets absolute. Must be a multiple of 512.

phishing_protection
boolean
Default: "<boolean>"

InfoCert only. Activate phishing protection (one-way). Not supported on Namirial boxes — has no effect there.

password_protection
boolean
Default: "<boolean>"

InfoCert only. Activate password protection (one-way). Not supported on Namirial boxes — has no effect there.

invio_massivo_pec
integer
Default: "<integer>"

InfoCert only. Bulk sending quota to add (must be a positive multiple of 50). Not supported on Namirial boxes.

boolean or Array of objects

Responses

Response Schema: application/json
object (Casella)
operazioni_eseguite
Array of strings

operations executed: attivazione, rinnovo, upgrade_casella, modifica, conservazione, multiutenza

success
boolean
message
string
error
integer

Request samples

Content type
application/json
Example
{
  • "documenti": [
    ],
  • "rinnovo_anni": 1,
  • "upgrade_casella": "SILVER",
  • "spazio_disco": "+1024",
  • "spazio_storico": "2048",
  • "spazio_conservazione": "512",
  • "invio_massivo_pec": 50,
  • "phishing_protection": true,
  • "password_protection": true,
  • "multiutenza": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "operazioni_eseguite": [
    ],
  • "success": true,
  • "message": "",
  • "error": null
}

Certified e-mail activation

This method allows you, once you have registered your certified electronic mailbox, to activate it by uploading the necessary documentation. The required documentation includes your valid identity document and the completed and signed activation form that you can download using the method GET/pec/{id}/modulo_attivazione. For the boxes of type DOMICILIODIGITALE and PECMASSIVA it is necessary to create a single document comprising the signed activation form and the identity document.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 6045fdee3a716847a978a471

Pec id

Request Body schema: application/json
required
string or Array of strings

Responses

Response Schema: application/json
object (Casella)
success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

Content type
application/json
{
  • "documenti": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Modify mailbox settings

Modify settings of an active PEC mailbox. Space fields (spazio_disco, spazio_storico, spazio_conservazione) accept an integer (absolute value) or a string prefixed with '+' for incremental increase (e.g. '+1024'). Only upgrades allowed for space. Boolean fields activate optional services (phishing_protection, password_protection) — InfoCert only, no effect on Namirial boxes. invio_massivo_pec sets the bulk-send add-on quota (multiple of 50) — also InfoCert only. At least one field must be provided.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 6045fdee3a716847a978a471

Pec id

Request Body schema: application/json
string or integer

If you put the + symbol in front you go to add space to what you have. If you pass only a number go to set the space with that value.

string or integer

If you put the + symbol in front you go to add space to what you have. If you pass only a number go to set the space with that value.

string or integer

If you put the + symbol in front you go to add space to what you have. If you pass only a number go to set the space with that value. Requires 'conservazione' service to be active.

invio_massivo_pec
integer multiple of 50 >= 50
Default: "<integer>"

InfoCert only. Bulk-send add-on quota. Must be a positive multiple of 50 (e.g. 50, 100, 150). Not supported on Namirial boxes.

phishing_protection
boolean
Default: "<boolean>"

InfoCert only. Activate phishing protection add-on. Cannot be set to true if already active (error 516). Not supported on Namirial boxes.

password_protection
boolean
Default: "<boolean>"

InfoCert only. Activate password protection add-on. Cannot be set to true if already active (error 517). Not supported on Namirial boxes.

Responses

Response Schema: application/json
object (Casella)
success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

Content type
application/json
{
  • "spazio_disco": "+1024",
  • "invio_massivo_pec": 100,
  • "phishing_protection": true
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Activation of conservation according to law

This method allows you to activate the standard storage service in your certified e-mail. Supported for all mailbox types including DOMICILIODIGITALE and PECMASSIVA (Namirial). This only stages the request (space + documents) — real provider-side activation is done later by an operator, not through this API. InfoCert needs just 1 document ('documenti' as a plain string or a 1-item array); Namirial needs exactly 2, passed in order (1st = conservation contract, 2nd = privacy disclosure) — see the 'namirial' request example.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 6045fdee3a716847a978a471

Pec id

Request Body schema: application/json
string or integer

If this parameter is not passed it defaults to 512 (InfoCert) or 1024 (Namirial)

required
string or Array of strings

Responses

Response Schema: application/json
object (Casella)
success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

Content type
application/json
Example
{
  • "spazio_conservazione": 512,
  • "documenti": "JVBERi0xLjUKJeLjz9MKNyAwIG9iago8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9UaW1lcyMyME5ldyMyMFJvbWFuCi9GbGFncyAzMgovSXRhbGljQW5nbGUgMAovQXNjZW50IDg5MQovRGVzY2VudCAtMjE2Ci9DYXBIZWlnaHQgNjkzCi9BdmdXaWR0aCA0MDEKL01heFdpZHRoIDI2MTQKL0ZvbnRXZWlnaHQgNDAwCi9YSGVpZ2h0IDI1MAovTGVhZGluZyA0MgovU3RlbVYgNDAKL0ZvbnRCQm94IFstNTY4IC0yMTYgMjA0NiA2OTNdCj4+CmVuZG9iago4IDAgb2JqClsyNTAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAyNTAgMCA1MDAgMCA1MDAgMCAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNDQ0IDAgNDQ0IDAgMCAwIDAgMCAyNzggMCAwIDAgMCA1MDAgNTAwIDUwMCAwIDMzMyAzODkgMjc4IDAgNTAwXQplbmRvYmoKNiAwIG9iago8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHJ1ZVR5cGUKL05hbWUgL0YxCi9CYXNlRm9udCAvVGltZXMjMjBOZXcjMjBSb21hbgovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwovRm9udERlc2NyaXB0b3IgNyAwIFIKL0ZpcnN0Q2hhciAzMgovTGFzdENoYXIgMTE4Ci9XaWR0aHMgOCAwIFIKPj4KZW5kb2JqCjkgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovQk0gL05vcm1hbAovY2EgMQo+PgplbmRvYmoKMTAgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovQk0gL05vcm1hbAovQ0EgMQo+PgplbmRvYmoKMTEgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZ"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Change box type

This method allows you to change the type of certified email. Only upgrades are allowed, for example from a STANDARD you can switch to a SILVER or GOLD one. Action not allowed for these two types of boxes: DOMICILIODIGITALE, PECMASSIVA.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 6045fdee3a716847a978a471

Pec id

Request Body schema: application/json
tipo_casella
string
Default: "<string>"
Enum: "STANDARD" "BRONZE" "SILVER" "GOLD"

type of mailbox

Responses

Response Schema: application/json
object (Casella)
success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

Content type
application/json
{
  • "tipo_casella": "GOLD"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Renewal of certified e-mail

This method allows you to renew for one year or re-activate the certified e-mail identified by the id

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 6040e4613a716838dc4eee0e

Pec id

query Parameters
anni
integer [ 1 .. 3 ]
Default: "<integer>"
Example: anni=2

Number of years for which you want to renew the pec box (1-3). If not passed it is 1 by default. Values above 3 are silently clamped down to 3; non-numeric or values below 1 return error 649.

Responses

Response Schema: application/json
object (Casella)
success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/pec/%7Bid%7D/rinnovo?anni=2");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Add user

InfoCert: adds a user who can use an existing pec box (repeatable, up to 25 users). Namirial (DOMICILIODIGITALE/PECMASSIVA): does not add a user — this call only activates the multiutenza on/off service once. The body is not read at all for Namirial, an empty '{}' works; calling it again returns error 596 'multiutenza just available for this pec'.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 6040e4613a716838dc4eee0e

Pec id

Request Body schema: application/json
nome
required
string
Default: "<string>"

first name

cognome
required
string
Default: "<string>"

last name

descrizione
string
Default: "<string>"

description. Required for InfoCert mailboxes (STANDARD/BRONZE/SILVER/GOLD). Not validated at all for Namirial mailboxes (DOMICILIODIGITALE/PECMASSIVA), whose multiutenza is a simple on/off flag.

email_gestione_password
required
string
Default: "<string>"

email of the user

Responses

Response Schema: application/json
object (Casella)
success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

Content type
application/json
Example
{
  • "nome": "luca",
  • "cognome": "bianchi",
  • "descrizione": "prima utenza",
  • "email_gestione_password": "[email protected]"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

List (or fetch one) multiutenza slave user

Returns the slave users of an InfoCert mailbox's multiutenza service. Not applicable to Namirial (DOMICILIODIGITALE/PECMASSIVA) boxes, whose 'multiutenza' field is a boolean, not an array — see error 208.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 6040e4613a716838dc4eee0e

Pec id

query Parameters
id_subset
string
Default: "<string>"
Example: id_subset=6040e4613a716838dc4eee0e_0

If provided, returns only the single slave user at this index instead of the full list. Format: '_' (only the part after the last underscore is used, e.g. the mailbox's own 'id_utenza' value works directly).

Responses

Response Schema: application/json
Array of Utenza (objects) or Utenza (object)
success
boolean
message
string
error
integer or null

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/pec/%7Bid%7D/multiutenza?id_subset=6040e4613a716838dc4eee0e_0");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "success": true,
  • "message": "",
  • "error": null
}

Comunica Pec

Methods that allow you to communicate a certified e-mail to the business register

List of your communications

This method shows you all the certified e-mail communications to the business register started

Authorizations:

Responses

Response Schema: application/json
Array of objects (RichiesteComunicazionePec) [ items ]
success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/comunica_pec");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [],
  • "success": true,
  • "message": "",
  • "error": null
}

Communicate a certified e-mail

This method allows you to communicate a certified e-mail to the business register

Authorizations:
Request Body schema: application/json
casella_pec
required
string
Default: "<string>"

the certified email address (PEC)

pec_amministratore
boolean
Default: false

if true, the mailbox belongs to the company administrator

cf
required
string
Default: "<string>"

fiscal code

nome
required
string
Default: "<string>"

first name

cognome
required
string
Default: "<string>"

last name

qualifica
required
string
Default: "<string>"
Enum: "AMMINISTRATORE" "COMMISSARIO_GIUDIZIARIO" "CURATORE_FALLIMENTARE" "LEGALE_RAPPRESENTANTE" "LIQUIDATORE" "SOCIO" "TITOLARE"

qualification of the owner

email
required
string
Default: "<string>"

email of the owner

cellulare
required
string
Default: "<string>"

mobile phone of the owner

ragione_sociale
required
string
Default: "<string>"

company name

cf_piva
required
string
Default: "<string>"

company's fiscal code or VAT number

comune
required
string
Default: "<string>"

municipality of the company

provincia
required
string
Default: "<string>"

province of the company

object (Callback)

Standardized callback configuration. Enables receiving notifications about status updates of asynchronous requests.

Responses

Response Schema: application/json
object (RichiestaComunicazionePec)
success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

Content type
application/json
{
  • "casella_pec": "[email protected]",
  • "pec_amministratore": false,
  • "cf": "RSSMRA80A01L117D",
  • "nome": "mario",
  • "cognome": "rossi",
  • "qualifica": "LEGALE_RAPPRESENTANTE",
  • "email": "[email protected]",
  • "cellulare": "34xxxxxx18",
  • "ragione_sociale": "azienda test",
  • "cf_piva": "12345678910",
  • "comune": "roma",
  • "provincia": "RM",
  • "callback": {}
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Specific request for communication pec

This method returns you the specific request marked with the id

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 60ad149c3a7168084f1d2b68

Comunica Pec id

Responses

Response Schema: application/json
object (RichiestaComunicazionePec)
success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/comunica_pec/%7Bid%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Upload the documents

This method allows you to complete the request for communication of your pec to the business register by uploading the necessary documentation. The required documentation includes the completed and digitally signed form (PDF or p7m) that you can download using the method GET/comunica_pec/{id}/procura_registro_imprese.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 60dc8da86c8b04624536bbb2

Comunica Pec id

Request Body schema: application/json
required
string or Array of strings

Responses

Response Schema: application/json
object (RichiestaComunicazionePec)
success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

Content type
application/json
{
  • "documenti": "JVBERi0xLjUKJeLjz9MKNyAwIG9iago8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9UaW1lcyMyME5ldyMyMFJvbWFuCi9GbGFncyAzMgovSXRhbGljQW5nbGUgMAovQXNjZW50IDg5MQovRGVzY2VudCAtMjE2Ci9DYXBIZWlnaHQgNjkzCi9BdmdXaWR0aCA0MDEKL01heFdpZHRoIDI2MTQKL0ZvbnRXZWlnaHQgNDAwCi9YSGVpZ2h0IDI1MAovTGVhZGluZyA0MgovU3RlbVYgNDAKL0ZvbnRCQm94IFstNTY4IC0yMTYgMjA0NiA2OTNdCj4+CmVuZG9iago4IDAgb2JqClsyNTAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAyNTAgMCA1MDAgMCA1MDAgMCAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNDQ0IDAgNDQ0IDAgMCAwIDAgMCAyNzggMCAwIDAgMCA1MDAgNTAwIDUwMCAwIDMzMyAzODkgMjc4IDAgNTAwXQplbmRvYmoKNiAwIG9iago8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHJ1ZVR5cGUKL05hbWUgL0YxCi9CYXNlRm9udCAvVGltZXMjMjBOZXcjMjBSb21hbgovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwovRm9udERlc2NyaXB0b3IgNyAwIFIKL0ZpcnN0Q2hhciAzMgovTGFzdENoYXIgMTE4Ci9XaWR0aHMgOCAwIFIKPj4KZW5kb2JqCjkgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovQk0gL05vcm1hbAovY2EgMQo+PgplbmRvYmoKMTAgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovQk0gL05vcm1hbAovQ0EgMQo+PgplbmRvYmoKMTEgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZ"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "success": true,
  • "message": "",
  • "error": null
}

Domini

Methods that allow you to activate and modify a certified domain

List all domains associated with the account

Authorizations:

Responses

Response Schema: application/json
Array of objects (Dominio) <= 2 items [ items ]

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/dominio");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Activate a new certified domain

Before calling this endpoint, the customer must configure an MX record on their domain's own DNS pointing to the provider's mail server: 'mx.cert.legalmail.it' for InfoCert, 'mailpro.sicurezzapostale.it' for Namirial. This check is skipped for internal legalmail.it subdomains and in test environments (AMBIENTE_TEST_DOMINI). If the MX record is missing or incorrect, the request fails with error 714. In addition to the local DB check, the domain is also checked against the central domain registry (the same lookup used by GET /domini_pec/{dominio}); if already censito there, the request fails with error 712 (InfoCert) or 732 (Namirial), and if the registry lookup itself fails the request fails with error 710 (503).

Authorizations:
Request Body schema: application/json
dominio
required
string
Default: "<string>"

The domain name to activate (e.g. example.com). An MX record must already be configured on this domain's DNS pointing to the provider's mail server before calling this endpoint — see 'fornitore'.

fornitore
required
string
Default: "<string>"
Enum: "infocert" "namirial"

The service provider. Determines the required MX record for 'dominio': 'mx.cert.legalmail.it' for infocert, 'mailpro.sicurezzapostale.it' for namirial.

anni
integer
Default: 1
Enum: 1 2 3

Number of years for which the domain is purchased (initial activation only, 1-3)

numero_pec
integer
Default: 0

Number of PEC boxes purchased for the domain

note
string
Default: "<string>"

Free-text internal note stored with the domain. Never returned by GET /dominio or GET /dominio/{id} (stripped from those two responses only).

data_scadenza
string
Default: "<string>"

Explicit expiration date (dd/mm/yyyy). If provided, it overrides the 'anni'-based calculation entirely and the 1-3 years validation is skipped.

tipo_cliente
string
Default: "<string>"
Enum: "IM" "PS" "PL" "PC" "A" "PV" "X"

[Namirial only] Customer type. Forced to 'IM' whenever absent or 'PV' — a domain activation can never actually be recorded as 'PV', so denominazione_titolare/cf_piva_titolare are effectively always required for Namirial.

nome_richiedente
string
Default: "<string>"

[Namirial only] First name of the applicant. Required.

cognome_richiedente
string
Default: "<string>"

[Namirial only] Last name of the applicant. Required.

codice_fiscale_richiedente
string
Default: "<string>"

[Namirial only] Fiscal code of the applicant. Required.

data_nascita_richiedente
string
Default: "<string>"

[Namirial only] Date of birth of the applicant (dd/mm/yyyy). Required for domain activation regardless of tipo_cliente.

sesso_richiedente
string
Default: "<string>"
Enum: "M" "F"

[Namirial only] Gender of the applicant. Required for domain activation regardless of tipo_cliente.

email
string
Default: "<string>"

[Namirial only] Email address of the applicant. Required.

cellulare
string
Default: "<string>"

[Namirial only] Mobile phone of the applicant. Required.

indirizzo_titolare
string
Default: "<string>"

[Namirial only] Address of the holder. Required.

comune_titolare
string
Default: "<string>"

[Namirial only] City of the holder. Required.

cap_titolare
string
Default: "<string>"

[Namirial only] Postal code of the holder. Required.

provincia_titolare
string
Default: "<string>"

[Namirial only] Province of the holder. Required.

nazione_titolare
string
Default: "<string>"

[Namirial only] Country of the holder. Required.

denominazione_titolare
string
Default: "<string>"

[Namirial only] Company/entity name. Always required in practice — tipo_cliente can never remain 'PV' for a domain activation.

cf_piva_titolare
string
Default: "<string>"

[Namirial only] Fiscal code or VAT number of the holder. Always required in practice — tipo_cliente can never remain 'PV' for a domain activation.

comune_nascita_richiedente
string
Default: "<string>"

[Namirial only] City of birth of the applicant. Required for domain activation regardless of tipo_cliente.

provincia_nascita_richiedente
string
Default: "<string>"

[Namirial only] Province of birth of the applicant.

nazione_nascita_richiedente
string
Default: "<string>"

[Namirial only] Country of birth of the applicant. Required for domain activation regardless of tipo_cliente.

tipo_documento
string
Default: "<string>"
Enum: "CARTA_D_IDENTITA" "PASSAPORTO"

[Namirial only] Type of identification document. Required. Driver's license (PATENTE) is NOT accepted for domain registration (unlike PEC mailbox activation, which does accept it).

numero_documento
string
Default: "<string>"

[Namirial only] Document number. Required.

data_scadenza_documento
string
Default: "<string>"

[Namirial only] Document expiry date (dd/mm/yyyy). Required.

documento_rilasciato_da
string
Default: "<string>"

[Namirial only] Issuing authority of the document. Required.

data_rilascio_documento
string
Default: "<string>"

[Namirial only] Document issue date (dd/mm/yyyy). Required.

object (Callback)

Standardized callback configuration. Enables receiving notifications about status updates of asynchronous requests.

Responses

Response Schema: application/json
object (Dominio)

GET/POST/PATCH/DELETE all return the domain record as stored in MongoDB pretty much as-is (only a handful of fields are stripped, see individual endpoints). On some InfoCert domains this includes fields not written by any current API code path — 'anagrafica_sincronizzata', 'pec_attive', 'pec_totali', 'sottotipo_cliente', 'telefono' (all documented below) — plus Italian-language 'dns'/'config'/'certif' values (e.g. 'CORRETTO'/'ERRATO') produced by InfoCert's XML integration (DominioInfoCert::sincronizza / InfocertDominiClient::getStatoDominio), as opposed to the English 'OK'/'KO' produced by the REST integration used at initial activation.

Request samples

Content type
application/json
Example

InfoCert only needs the domain, provider, duration/quota and optional note/callback — none of the applicant/holder fields apply.

{
  • "dominio": "testdominio.legalmail.it",
  • "fornitore": "infocert",
  • "anni": 1,
  • "numero_pec": 1
}

Response samples

Content type
application/json
Example
{
  • "data": {
    }
}

Get details of a specific domain

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 69806bcce09fb76c6b0fef0b

The domain ID

Responses

Response Schema: application/json
object (Dominio)

GET/POST/PATCH/DELETE all return the domain record as stored in MongoDB pretty much as-is (only a handful of fields are stripped, see individual endpoints). On some InfoCert domains this includes fields not written by any current API code path — 'anagrafica_sincronizzata', 'pec_attive', 'pec_totali', 'sottotipo_cliente', 'telefono' (all documented below) — plus Italian-language 'dns'/'config'/'certif' values (e.g. 'CORRETTO'/'ERRATO') produced by InfoCert's XML integration (DominioInfoCert::sincronizza / InfocertDominiClient::getStatoDominio), as opposed to the English 'OK'/'KO' produced by the REST integration used at initial activation.

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/dominio/%7Bid%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
Example
{
  • "data": {
    }
}

Update a certified domain

Updates a certified domain. Accepts activation documents (Namirial only — InfoCert returns error 730) and/or renews or reactivates the domain for a given number of years (1–10). At least one of 'documenti' or 'anni' must be provided. If the domain is in 'revocato' state and 'anni' is provided, the domain is reactivated.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 69806bcce09fb76c6b0fef0b

The domain ID

Request Body schema: application/json
Array of strings or objects <= 2 items [ items ]

Activation documents. Namirial only — triggers document submission via certified PEC email to the provider. If the domain is currently in 'revocato' state, submitted documents are silently discarded and the domain is reactivated instead (see 'anni' behavior below).

anni
integer [ 1 .. 10 ]
Default: "<integer>"

Number of years to renew or reactivate the domain (1–10). If the domain is in 'revocato' state, this reactivates it (defaults to 1 year if omitted); otherwise it renews the current expiration.

Responses

Response Schema: application/json
object (Dominio)

GET/POST/PATCH/DELETE all return the domain record as stored in MongoDB pretty much as-is (only a handful of fields are stripped, see individual endpoints). On some InfoCert domains this includes fields not written by any current API code path — 'anagrafica_sincronizzata', 'pec_attive', 'pec_totali', 'sottotipo_cliente', 'telefono' (all documented below) — plus Italian-language 'dns'/'config'/'certif' values (e.g. 'CORRETTO'/'ERRATO') produced by InfoCert's XML integration (DominioInfoCert::sincronizza / InfocertDominiClient::getStatoDominio), as opposed to the English 'OK'/'KO' produced by the REST integration used at initial activation.

Request samples

Content type
application/json
Example
{
  • "anni": 1
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Revoke a certified domain

Revokes the domain and its associated PEC mailboxes. Mailboxes already in 'evasa' state are revoked through the provider (with callback notification); mailboxes not yet active (any other state except 'revocata') are soft-deleted directly to 'revocata' without contacting the provider.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 69806bcce09fb76c6b0fef0b

The domain ID to revoke

Responses

Response Schema: application/json
success
boolean
message
string
object (Dominio)

GET/POST/PATCH/DELETE all return the domain record as stored in MongoDB pretty much as-is (only a handful of fields are stripped, see individual endpoints). On some InfoCert domains this includes fields not written by any current API code path — 'anagrafica_sincronizzata', 'pec_attive', 'pec_totali', 'sottotipo_cliente', 'telefono' (all documented below) — plus Italian-language 'dns'/'config'/'certif' values (e.g. 'CORRETTO'/'ERRATO') produced by InfoCert's XML integration (DominioInfoCert::sincronizza / InfocertDominiClient::getStatoDominio), as opposed to the English 'OK'/'KO' produced by the REST integration used at initial activation.

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/dominio/%7Bid%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Domain and associated boxes revoked",
  • "data": {
    }
}

Renew or reactivate a certified domain

Renews the domain for the specified number of years (1–3). If the domain is in 'revocato' state, reactivates it and restores associated non-expired PEC boxes.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 69806bcce09fb76c6b0fef0b

The domain ID

query Parameters
anni
integer [ 1 .. 3 ]
Default: 1

Number of years for renewal or reactivation (1–3). Default 1.

Responses

Response Schema: application/json
object (Dominio)

GET/POST/PATCH/DELETE all return the domain record as stored in MongoDB pretty much as-is (only a handful of fields are stripped, see individual endpoints). On some InfoCert domains this includes fields not written by any current API code path — 'anagrafica_sincronizzata', 'pec_attive', 'pec_totali', 'sottotipo_cliente', 'telefono' (all documented below) — plus Italian-language 'dns'/'config'/'certif' values (e.g. 'CORRETTO'/'ERRATO') produced by InfoCert's XML integration (DominioInfoCert::sincronizza / InfocertDominiClient::getStatoDominio), as opposed to the English 'OK'/'KO' produced by the REST integration used at initial activation.

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/dominio/%7Bid%7D/rinnovo?anni=SOME_INTEGER_VALUE");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": {
    }
}

Domain check

This method allows you to check if a domain is eligible for sending or receiving a pec

Authorizations:
path Parameters
dominio
required
string
Default: "<string>"
Example: legalmail.it

Domain

Responses

Response Schema: application/json
data
Array of strings

Always an empty array in the current implementation

success
boolean

Operation success (true/false).

message
string

error message

error
integer

error code

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/domini_pec/%7Bdominio%7D");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "data": [ ],
  • "success": true,
  • "message": "legalmail.it found!",
  • "error": null
}

Modulistica

Methods that allow you to download the forms necessary for the management of certified e-mail boxes

Download domain activation form

Downloads the PDF activation form for a certified domain. Available only for Namirial domains. Once completed and signed, upload it using PATCH /dominio/{id} with the 'documenti' field.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 69806bcce09fb76c6b0fef0b

The domain ID

Responses

Response Headers
Content-Disposition
string
Example: "inline;filename=modulo_attivazione_testdominio.legalmail.it.pdf"

Namirial only — filename is built dynamically from the domain name; disposition is 'inline', not 'attachment'

Response Schema: application/pdf
string <binary>

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/dominio/%7Bid%7D/modulo_attivazione");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
Example
{
  • "success": false,
  • "message": "modulo_attivazione non supportato per questo fornitore",
  • "error": 731,
  • "data": null
}

Download the activation form

This method allows you to directly download the activation form of a certified e-mail. Once compiled and signed it will be passed in the form of a base 64 encoded string using the PATCH/pec/{id}/attivazione method together with an identity document.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 5f7b2e323a716857774a4373

request id

Responses

Response Headers
Content-Disposition
string
Example: "attachment; filename=\"modulo_attivazione.pdf\""
Response Schema: application/pdf
string <binary>

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/pec/%7Bid%7D/modulo_attivazione");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "success": false,
  • "message": "Wrong id",
  • "error": 201,
  • "data": null
}

Download the activation form

This method allows you to directly download the storage activation form for a certified e-mail. Once compiled and signed, it must be passed as a base64-encoded string via PATCH /pec/{id}/conservazione.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 5f7b2e323a716857774a4373

request id

Responses

Response Headers
Content-Disposition
string
Example: "attachment; filename=\"modulo_conservazione.pdf\""
Response Schema: application/pdf
string <binary>

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/pec/%7Bid%7D/modulo_conservazione");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
application/json
{
  • "success": false,
  • "message": "Wrong id",
  • "error": 201,
  • "data": null
}

Download the power of attorney

This method allows you to download the pec communication form to the business register. Once digitally signed in p7m format it will be passed in the form of a base 64 encoded string using the PATCH/comunica_pec/{id} method.

Authorizations:
path Parameters
id
required
string
Default: "<string>"
Example: 5f7b2e323a716857774a4373

request id

Responses

Response Headers
Content-Disposition
string
Example: "attachment; filename=\"5f7b2e323a716857774a4373_procura_registro_imprese.pdf\""
Response Schema:
string <binary>

Request samples

CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://pec.openapi.it/comunica_pec/%7Bid%7D/procura_registro_imprese");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

CURLcode ret = curl_easy_perform(hnd);

Response samples

Content type
No sample