# getForm

Fetch one lead-capture form by id - full configuration including fieldConfig (the page-and-field document: either a flat array of fields for a single-page form, or a { fields, steps, showStepProgress } envelope for a multi-page one - see createForm), styleConfig (the JSON object of visual styling - colors, typography, spacing, border radius, button/input styling, custom CSS; null = default styling; see updateForm for the key vocabulary), submitButtonLabel, auto-apply tags/lists, dedupe settings, notification toggles, and the assignee pool. Use fieldConfig to interpret the submittedData keys returned by listFormSubmissions; read fieldConfig before editing fields or pages, and styleConfig before restyling, so an updateForm write merges instead of clobbering.

- Call: `POST https://server.goliathdata.com/api/v1/call` with `{ "operationId": "getForm", "variables": {...} }`
- Scope: `READ`
- Type: query
- Idempotency: a read; rejects `Idempotency-Key`
- Rate-limited: no

## Variables

- `formId`: `ID!` (required)

## Response (data, an example)

```json
{
  "embedFormQuery": {
    "get": {
      "id": "<ID>",
      "name": "…",
      "slug": "…",
      "status": "DRAFT",
      "publicUrl": "…",
      "shortUrl": "…",
      "submissionCount": 0,
      "source": "…",
      "ownerType": "ORG",
      "headerText": "…",
      "descriptionText": "…",
      "submitButtonLabel": "…",
      "successMessage": "…",
      "fieldConfig": "…",
      "styleConfig": "…",
      "autoTagIds": [
        "<ID>"
      ],
      "autoListIds": [
        "<ID>"
      ],
      "allowDuplicateContact": true,
      "dedupePrimaryField": "EMAIL",
      "dedupeSecondaryField": "EMAIL",
      "enableEmailNotification": true,
      "enableSmsNotification": true,
      "enableSlackNotification": true,
      "slackChannelId": "…",
      "slackChannelName": "…",
      "slackMessageTemplate": "…",
      "collectSmsConsent": true,
      "smsTransactionalConsentText": "…",
      "smsMarketingConsentText": "…",
      "smsDisclaimerText": "…",
      "showMarketingConsent": true,
      "marketingConsentText": "…",
      "termsAndConditionsText": "…",
      "privacyPolicyUrl": "…",
      "termsOfServiceUrl": "…",
      "privacyPolicyContent": "…",
      "termsOfServiceContent": "…",
      "showPoweredBy": true,
      "gtmContainerId": "…",
      "triggerAgents": [
        {
          "id": "<ID>",
          "name": "…",
          "status": "ACTIVE"
        }
      ],
      "assignmentConfig": {
        "assignees": [
          {
            "userId": "<ID>",
            "calendarConfig": {
              "isFixed": true,
              "checkExternalCalendars": true
            }
          }
        ],
        "teamIds": [
          "<ID>"
        ],
        "participantUserIds": [
          "<ID>"
        ]
      },
      "createdAt": "2026-01-01T00:00:00.000Z",
      "updatedAt": "2026-01-01T00:00:00.000Z"
    }
  }
}
```

## Example

```bash
curl https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer $GOLIATH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "operationId": "getForm",
    "variables": {
      "formId": "<formId>"
    }
  }'
```
