> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hopae.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit Activation Form

> Submit the activation request form required for provider activation.

Submits the activation request form for a specific provider. The `data` object must contain all fields listed in the provider's `requiredFields` (from [Get Activation Steps](/api-reference/workspace/activation/get-activation-steps)).

A form can only be submitted once per provider. If the form was previously rejected, it can be resubmitted.

## Request

<ParamField header="Authorization" type="string" required>
  `Bearer <API_KEY>` from Console > Developers > Workspace API Keys.
</ParamField>

<ParamField header="Content-Type" type="string">
  `application/json`
</ParamField>

### Path parameters

<ParamField path="client_id" type="string" required>
  Client identifier of the app.
</ParamField>

<ParamField path="provider_id" type="string" required>
  Provider identifier (e.g., `smartid`, `spid-ig`, `no-bankid`).
</ParamField>

### Request body

<Note>
  Required fields are **dynamic per provider**. Always call [Get Activation Steps](./get-activation-steps) first and read `steps[].requiredFields` on the `activation-form` step — that is the authoritative list. Submitting without the expected fields returns `400 VALIDATION_MISSING_PARAMETER`. Empty strings, whitespace-only values, and `null` are also treated as missing — the server trims and rejects them, not just absent keys.
</Note>

<ParamField body="data" type="object" required>
  Key-value object containing the provider's required fields. Fields vary by provider — use the `requiredFields` from [Get Activation Steps](/api-reference/workspace/activation/get-activation-steps) to determine which fields to submit.

  #### Common fields

  | Field                | Type   | Description                                                                                          |
  | -------------------- | ------ | ---------------------------------------------------------------------------------------------------- |
  | `legalCompanyName`   | string | Full legal name of the company as shown on official incorporation documents.                         |
  | `displayName`        | string | Short brand name shown to end users during verification (e.g., on consent screens).                  |
  | `logo`               | base64 | Base64-encoded PNG or SVG logo (max 256KB).                                                          |
  | `registrationNumber` | string | Company registration number from your country's business registry (e.g., RCS, HRB, CVR).             |
  | `registeredAddress`  | string | Full registered business address including street, city, postal code, and country.                   |
  | `vatNumber`          | string | EU VAT identification number including the country prefix (e.g., `DE123456789`).                     |
  | `serviceDescription` | string | One-sentence description of your service, shown during provider activation review.                   |
  | `websiteUrl`         | url    | Public website URL.                                                                                  |
  | `contactEmail`       | email  | Operations contact email. **Required for all providers** — used for activation status notifications. |
  | `contactPhone`       | string | Operations contact phone in international format.                                                    |

  <Accordion title="SPID provider-specific fields">
    | Field           | Type   | Description                                                                                                                                                                                   |
    | --------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `userDataLevel` | string | SPID data retrieval scope. Allowed values: `basic` (name, surname, fiscal code, date of birth), `advanced` (adds place of birth, gender, document details, phone, email, registered address). |
  </Accordion>

  <Accordion title="iDIN provider-specific fields">
    | Field           | Type   | Description                                                  |
    | --------------- | ------ | ------------------------------------------------------------ |
    | `legalRepName`  | string | Full legal name of the authorized iDIN legal representative. |
    | `legalRepEmail` | email  | Email of the authorized iDIN legal representative.           |
    | `legalRepPhone` | string | Phone of the authorized iDIN legal representative.           |
  </Accordion>

  <Accordion title="BankID Norway provider-specific fields">
    | Field            | Type    | Description                                                                                                                                                                                                               |
    | ---------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `bankName`       | string  | Name of the primary bank partner for Norwegian BankID integration.                                                                                                                                                        |
    | `useSsn`         | boolean | Whether you need the end-user Norwegian social security number (fødselsnummer). Requires legal basis when `true`.                                                                                                         |
    | `ssnReason`      | string  | Short justification for requesting the SSN. Required when `useSsn` is `true`.                                                                                                                                             |
    | `gdprArticle`    | string  | GDPR legal basis for processing the SSN. Allowed values: `GDPR Art. 6(1)(a) - Consent`, `GDPR Art. 6(1)(b) - Contractual Performance`, `GDPR Art. 6(1)(c) - Legal Compliance`, `GDPR Art. 6(1)(f) - Legitimate Interest`. |
    | `signatoryName`  | string  | Full name of the person signing the BankID NO service agreement on behalf of your company.                                                                                                                                |
    | `signatoryEmail` | email   | Email of the BankID NO signatory — must be reachable for the signing workflow.                                                                                                                                            |
    | `signatoryPhone` | string  | Phone of the BankID NO signatory.                                                                                                                                                                                         |
  </Accordion>

  <Accordion title="BankID CZ provider-specific fields">
    | Field               | Type | Description                                                                |
    | ------------------- | ---- | -------------------------------------------------------------------------- |
    | `privacyPolicyUrl`  | url  | Link to your privacy policy page — shown to end users before verification. |
    | `termsOfServiceUrl` | url  | Link to your terms of service page.                                        |
  </Accordion>
</ParamField>

<ParamField body="saveToCompanyInfo" type="boolean">
  If `true`, matching fields are also persisted to the app's company information. Defaults to `false`. Any field saved this way is prefilled into the `requiredFields[].value` returned by [Get Activation Steps](/api-reference/workspace/activation/get-activation-steps) for subsequent providers on the same app, so your users don't have to re-enter shared details (legal company name, address, contact email, etc.) for every provider they activate.
</ParamField>

## Response

<ResponseField name="formId" type="string">
  Unique identifier of the submitted form.
</ResponseField>

<ResponseField name="clientId" type="string">
  Client identifier of the app.
</ResponseField>

<ResponseField name="providerId" type="string">
  The provider the form was submitted for.
</ResponseField>

<ResponseField name="data" type="object">
  The submitted form data.
</ResponseField>

<ResponseField name="status" type="string">
  Always `submitted` on a successful submission. Review outcomes (approval, rejection) are observed via [Get Activation Steps](/api-reference/workspace/activation/get-activation-steps), not this endpoint.
</ResponseField>

<ResponseField name="createdAt" type="string">
  ISO 8601 timestamp of when the form was submitted.
</ResponseField>

Once the form is submitted, the activation flow advances to the next step automatically. Call [Get Activation Steps](/api-reference/workspace/activation/get-activation-steps) to check progress.

<RequestExample>
  ```bash theme={null}
  curl -X POST \
    -H "Authorization: Bearer sk_workspace_test_..." \
    -H "Content-Type: application/json" \
    -d '{
      "data": {
        "legalCompanyName": "Acme Corp",
        "registeredAddress": "9 Boulevard Prince Henri, L-1724 Luxembourg",
        "vatNumber": "LU12345678",
        "registrationNumber": "12345678",
        "serviceDescription": "Customer identity verification for KYC onboarding.",
        "userDataLevel": "basic",
        "logo": "data:image/png;base64,iVBORw0KGgo...",
        "contactEmail": "compliance@acme.com"
      },
      "saveToCompanyInfo": true
    }' \
    "https://sandbox.api.hopae.com/connect/v1/apps/QzNf1D0I/providers/spid-ig/activation/form"
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "formId": "fe1ce6d9-90fb-4f42-88ae-4622135c7f19",
    "clientId": "QzNf1D0I",
    "providerId": "spid-ig",
    "data": {
      "legalCompanyName": "Acme Corp",
      "registeredAddress": "9 Boulevard Prince Henri, L-1724 Luxembourg",
      "vatNumber": "LU12345678",
      "registrationNumber": "12345678",
      "serviceDescription": "Customer identity verification for KYC onboarding.",
      "userDataLevel": "basic",
      "logo": "data:image/png;base64,iVBORw0KGgo...",
      "contactEmail": "compliance@acme.com"
    },
    "status": "submitted",
    "createdAt": "2026-04-20T02:20:27.521Z"
  }
  ```
</ResponseExample>
