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

# Specialties

> What you ask Solum to verify on a verification of benefits or a prior authorization, and how to request VOB specialties through the API.

A **specialty** is what you ask Solum to verify: ABA, Speech therapy, MRI. Every verification of benefits (VOB) requests one or more specialties, and a prior authorization names the specialty it covers. Solum picks the code it asks the payer for each specialty, so you never choose or see a payer code.

***

## The specialties

| Specialty | `specialty` value | Group |
| - | - | - |
| ABA | `aba` | Behavioral health |
| Mental health | `mental_behavioral_health` | Behavioral health |
| Psychiatry | `psychiatry` | Behavioral health |
| Social work | `social_work` | Behavioral health |
| Speech therapy | `speech_therapy` | Therapy |
| Occupational therapy | `occupational_therapy` | Therapy |
| Physical therapy | `physical_therapy` | Therapy |
| MRI | `mri` | Imaging |
| MRA | `mra` | Imaging |
| CT | `ct` | Imaging |
| Ultrasound | `ultrasound` | Imaging |
| X-ray | `x_ray` | Imaging |
| Mammogram | `mammogram` | Imaging |
| DEXA | `dexa` | Imaging |

`GET /v1/specialties` returns this list with each specialty's `label` and `group` (`behavioral_health`, `therapy` or `imaging`). It is the same for every company, so you can cache it.

```bash theme={null}
curl https://api.getsolum.com/v1/specialties \
  -H "X-API-Key: $SOLUM_API_KEY"
```

```json theme={null}
[
  { "value": "aba", "label": "ABA", "group": "behavioral_health" },
  { "value": "mental_behavioral_health", "label": "Mental health", "group": "behavioral_health" },
  { "value": "speech_therapy", "label": "Speech therapy", "group": "therapy" },
  { "value": "mri", "label": "MRI", "group": "imaging" }
]
```

The response lists all 14; the example shows four.

***

## Your company's specialties

Your company keeps two lists:

* **Specialties**, under [**Settings → General**](https://app.getsolum.com/settings/company): what your team can request. Only these appear in the specialty dropdowns (the Create VOB form, a VOB's services, a prior authorization's **Specialty Type**), and the API refuses a VOB request for any other. Anyone on your team can add one.
* **Default specialties**, under **Settings → Eligibility**: what Solum requests when a VOB is created without naming any, for example from your intake integration, a form submission or a fax. You can replace them for patients in a given state with **Default specialties by state**.

Default specialties are always some of your specialties, so removing a specialty in **Settings → General** also removes it from your defaults; Solum shows which before you save. Credentials, default CPT and ICD codes and notification rules are set per specialty too: see [Credentialing](/guides/credentialling#specialties-on-a-credential).

When Solum reads a referral or order to [create a VOB from files](/guides/creating-a-vob-from-files), it fills only your specialties. A service the files ask for that isn't one of them is left out.

***

## Requesting specialties through the API

Each item of `specialties` on `POST /v1/verification-of-benefits`, `PATCH /v1/verification-of-benefits/{id}` and `POST /v1/verification-of-benefits/resolve` takes a required `specialty`:

```json theme={null}
{
  "patient_id": "<patient id>",
  "patient_policy_id": "<policy id>",
  "specialties": [
    { "specialty": "aba", "cpt_codes": ["97153", "97155"] },
    { "specialty": "mental_behavioral_health" }
  ]
}
```

Leave out `credentialing_id`, `cpt_codes`, `service_locations` or `icd_codes` to take your company's default for that specialty. A VOB lists each specialty once. Two specialties the payer answers the same way, such as ABA and Mental health, can be on one VOB, and each gets its own result.

Leave `specialties` out of `POST /v1/verification-of-benefits/resolve` and it returns the specialties Solum would request for the policy, each resolved from your defaults. When none derive because your company has no specialties set up, it answers `200` with an empty list and `company_has_no_specialties: true`.

Responses carry `specialty`, never a payer code: each requested specialty of a VOB, `result.services[]` (`include=result`) and `current_version.services[]` on the policies of `GET /v1/patients/{id}?expand[]=policies`.

***

## Solum chooses the payer code

For each specialty, Solum asks the payer with the service type code payers use for it. ABA and Mental health, for example, are asked the same way. Specialties asked the same way that share the billing NPI and the place of service are answered by one eligibility check, and its answer is written to each of them. When a payer only answers at the plan level, the answer is still recorded under the specialty you requested. See [Automatic Eligibility Checks](/guides/automatic-eligibility-checks#one-check-per-question).

The **Eligibility Checks** page and batch uploads still take service type codes: see [Eligibility Service Type Codes](/guides/service-type-codes).

***

## Errors

On `POST /v1/verification-of-benefits`, `PATCH /v1/verification-of-benefits/{id}` and `POST /v1/verification-of-benefits/resolve`, a request with a specialty Solum can't use fails with `422`, naming the specialty:

| Cause | `param` | `message` |
| - | - | - |
| The item sends `service_type` beside `specialty` | `specialties.0.service_type` | `Extra inputs are not permitted` |
| The item has no `specialty` (a request that only sends `service_type` is this) | `specialties.0.specialty` | `Field required` |
| The value isn't one of the 14 | `specialties.0.specialty` | `Input should be 'aba', 'mental_behavioral_health', … or 'dexa'` |
| The specialty isn't one of your company's | `specialties[0].specialty` | `Psychiatry isn't one of this company's specialties` |
| Your company has no specialties set up | `specialties[0].specialty` | `this company has no specialties set up (Settings → General)` |
| The same specialty is listed twice | `specialties[1].specialty` | `ABA is requested twice` |

The first three are checked before anything else:

```json theme={null}
{
  "type": "validation_error",
  "code": "invalid_parameter",
  "message": "Extra inputs are not permitted",
  "param": "specialties.0.service_type",
  "meta": null
}
```

The last three come with every refusal of the request at once, under `details.errors`, and `details.specialties` lists what each requested specialty resolved to (`null` for each field that did not):

```json theme={null}
{
  "type": "validation_error",
  "code": "invalid_parameter",
  "message": "specialties[0].specialty: Psychiatry isn't one of this company's specialties",
  "param": "specialties[0].specialty",
  "details": {
    "errors": [
      { "param": "specialties[0].specialty", "message": "Psychiatry isn't one of this company's specialties" }
    ],
    "specialties": [
      {
        "specialty": "psychiatry",
        "credentialing_id": null,
        "npi": null,
        "cpt_codes": null,
        "service_locations": null,
        "icd_codes": null
      }
    ]
  }
}
```

To request a specialty your company doesn't have yet, add it under **Settings → General** first.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.