> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.api.abelpolice.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.api.abelpolice.com/_mcp/server.

# Get specific agency

GET https://api.stage.abelpolice.com/v1/agencies/{agency_id}

Reference: https://docs.api.abelpolice.com/api-reference/agencies/get-agency-v-1-agencies-agency-id-get

## Request

### Path parameters

- `agency_id` (string, required) — UUID of the agency to return

### Headers

- `x-api-key` (string, required) — API key or token

## Response

### 200

Successful Response

- `agency` (GetSingleAgencyResponse, required) — Agency information

## Errors

### 403 Forbidden Error

Access Denied

- `detail` (string, required)

### 404 Not Found Error

Resource Not Found

- `detail` (string, required)

### 422 Unprocessable Entity Error

Validation Error

- `detail` (list of ValidationError, optional)

### 500 Internal Server Error

Internal Server Error

- `detail` (string, required)

## Types

### GetSingleAgencyResponse

- `agency_id` (string, required)
- `agency_name` (string, optional, nullable) — Agency name
- `created_at_utc` (datetime, optional, nullable) — Agency creation date in Abel system (UTC)
- `updated_at_utc` (datetime, optional, nullable) — Agency last update date in Abel system (UTC)
- `agency_enabled` (boolean, optional, nullable) — Agency enabled
- `agency_handle` (string, optional, nullable) — Agency handle
- `agency_type` (enum, optional, nullable) — Agency type
  - Allowed values: `demo`, `test`, `live`
- `partner_id` (string, optional, nullable) — Partner ID
- `public_phone_number` (string, optional, nullable) — Agency public phone number
- `agency_address` (AgencyAddressResponse, optional, nullable) — Agency headquarters address information
- `agency_contract` (AgencyContractResponse, optional, nullable) — Agency contract and seat information
- `agency_settings` (AgencySettingsResponse, optional, nullable) — Agency configuration settings
- `originating_agency_identifier` (string, optional, nullable) — Originating agency identifier

### ValidationError

- `loc` (list of ValidationErrorLocItems, required)
- `msg` (string, required)
- `type` (string, required)

### AgencyAddressResponse

- `address_1` (string, optional, nullable) — Agency HQ address line 1
- `address_2` (string, optional, nullable) — Agency HQ address line 2
- `city` (string, optional, nullable) — Agency HQ city
- `county` (string, optional, nullable) — Agency HQ county
- `zip` (string, optional, nullable) — Agency HQ zip code
- `state` (enum, optional, nullable) — Agency HQ state
  - Allowed values: `AL`, `AK`, `AZ`, `AR`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `ID`, `IL`, `IN`, `IA`, `KS`, `KY`, `LA`, `ME`, `MD`, `MA`, `MI`, `MN`, `MS`, `MO`, `MT`, `NE`, `NV`, `NH`, `NJ`, `NM`, `NY`, `NC`, `ND`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `WA`, `WV`, `WI`, `WY`
- `country` (string, optional, nullable) — Agency HQ country
- `latitude` (double, optional, nullable) — Agency HQ latitude
- `longitude` (double, optional, nullable) — Agency HQ longitude
- `timezone` (enum, optional, nullable) — Agency HQ timezone
  - Allowed values: `America/New_York`, `America/Detroit`, `America/Kentucky/Louisville`, `America/Kentucky/Monticello`, `America/Indiana/Indianapolis`, `America/Indiana/Vincennes`, `America/Indiana/Winamac`, `America/Indiana/Marengo`, `America/Indiana/Petersburg`, `America/Indiana/Vevay`, `America/Chicago`, `America/Indiana/Tell_City`, `America/Menominee`, `America/North_Dakota/Center`, `America/North_Dakota/New_Salem`, `America/North_Dakota/Beulah`, `America/Denver`, `America/Phoenix`, `America/Boise`, `America/Los_Angeles`, `America/Metlakatla`, `America/Juneau`, `America/Sitka`, `America/Yakutat`, `America/Anchorage`, `America/Nome`, `America/Adak`, `Pacific/Honolulu`

### AgencyContractResponse

- `max_writer_seats` (integer, optional, nullable) — Maximum number of writer seats
- `writer_seats_used` (integer, optional, nullable) — Number of writer seats currently in use
- `max_chat_seats` (integer, optional, nullable) — Maximum number of chat seats
- `chat_seats_used` (integer, optional, nullable) — Number of chat seats currently in use

### AgencySettingsResponse

- `day_of_week_format` (enum, optional, nullable) — Agency day of week format
  - Allowed values: ``, `%a`, `%A`
- `date_format` (enum, optional, nullable) — Agency date format
  - Allowed values: `%b %d, %Y`, `%B %d, %Y`, `%m/%d/%y`, `%m/%d/%Y`, `%Y/%m/%d`, `%m-%d-%y`, `%m-%d-%Y`, `%Y-%m-%d`, `%d %b %Y`, `%d %B %Y`, `%d %b, %Y`, `%Y %b %d`, `%Y-%m-%d`
- `time_format` (enum, optional, nullable) — Agency time format
  - Allowed values: `%I %p`, `%I:%M %p`, `%I:%M:%S %p`, `%H hours`, `%H:%M`, `%H:%M:%S`, `%H%M`, `%H%M hours`, `%H%M%S`, `%H:%M:%S`
- `narrative_disclaimer` (boolean, optional, nullable) — Agency narrative disclaimer
- `narrative_affidavit` (enum, optional, nullable) — Agency narrative affidavit
  - Allowed values: `NONE`, `AFFIDAVIT`, `AFFIDAVIT_WITH_RECORDS`
- `random_sentences` (boolean, optional, nullable) — Add random sentences to the narrative
- `num_narrative_edits` (integer, optional, nullable) — Number of narrative edits required to copy
- `unrestricted_data_retention` (boolean, optional, nullable) — Unrestricted data retention
- `one_hour_session` (boolean, optional, nullable) — One hour session enabled
- `data_retention_days` (integer, optional, nullable) — Agency data retention days
- `include_synopsis` (boolean, optional, nullable) — Include synopsis in reports
- `narrative_include_race` (boolean, optional, nullable) — Include race in narrative
- `mention_person_names` (enum, optional, nullable) — Mention person names
  - Allowed values: `ALWAYS`, `FIRST_OCCURRENCE`, `NEVER`
- `mention_location_names` (enum, optional, nullable) — Mention location names
  - Allowed values: `BOTH`, `ONLY_ADDRESS`
- `created_at_utc` (datetime, optional, nullable) — Settings creation date (UTC)
- `updated_at_utc` (datetime, optional, nullable) — Settings last update date (UTC)
- `citizen_enabled` (boolean, optional, nullable) — Citizen reports enabled for the agency
- `citizen_website_timeout_seconds` (integer, optional, nullable) — Citizen timeout in seconds
- `citizen_kiosk_timeout_seconds` (integer, optional, nullable) — Citizen kiosk timeout in seconds
- `self_hosted_dems` (boolean, optional, nullable) — Self-hosted DEMS enabled for the agency
- `dems_system_name` (enum, optional, nullable) — DEMS system name
  - Allowed values: `Axon Evidence.com`, `Motorola Command Central`, `Motorola Video Manager EL`, `Versaterm Visual Labs`
- `cad_system_name` (enum, optional, nullable) — CAD system name
  - Allowed values: `CentralSquare CAD Pro`, `Mark43 CAD`, `Hexagon I/CAD`, `Versaterm CAD`, `Caliber CAD NG`, `RIMS CAD`
- `rms_system_name` (enum, optional, nullable) — RMS system name
  - Allowed values: `Mark43 RMS`, `Versaterm RMS`, `Caliber Online RMS`, `RIMS RMS`
- `allow_narrative_templates` (boolean, optional, default: false) — Allow narrative templates
- `custom_prompting_enabled` (boolean, optional, default: false) — Enable custom prompting for the agency
- `allow_user_prompts` (boolean, optional, default: false) — Allow users to create their own narrative prompts
- `force_extend_agency_prompt` (boolean, optional, default: true) — Force user prompts to extend the agency prompt
- `citizen_enabled_languages` (list of enum, optional, nullable) — Citizen enabled languages
  - Allowed values: `ab`, `ace`, `ach`, `af`, `sq`, `alz`, `am`, `ar`, `hy`, `as`, `awa`, `ay`, `az`, `ban`, `bm`, `ba`, `eu`, `btx`, `bts`, `bbc`, `be`, `bem`, `bn`, `bew`, `bho`, `bik`, `bs`, `br`, `bg`, `bua`, `yue`, `ca`, `ceb`, `ny`, `zh-CN`, `zh-TW`, `cv`, `co`, `crh`, `hr`, `cs`, `da`, `din`, `dv`, `doi`, `dov`, `nl`, `dz`, `en`, `eo`, `et`, `ee`, `fj`, `tl`, `fi`, `fr`, `fr-FR`, `fr-CA`, `fy`, `ff`, `gaa`, `gl`, `lg`, `ka`, `de`, `el`, `gn`, `gu`, `ht`, `cnh`, `ha`, `haw`, `iw`, `hil`, `hi`, `hmn`, `hu`, `hrx`, `is`, `ig`, `ilo`, `id`, `ga`, `it`, `ja`, `jw`, `kn`, `pam`, `kk`, `km`, `cgg`, `rw`, `ktu`, `gom`, `ko`, `kri`, `ku`, `ckb`, `ky`, `lo`, `ltg`, `la`, `lv`, `lij`, `li`, `ln`, `lt`, `lmo`, `luo`, `lb`, `mk`, `mai`, `mak`, `mg`, `ms`, `ms-Arab`, `ml`, `mt`, `mi`, `mr`, `chm`, `mni-Mtei`, `min`, `lus`, `mn`, `my`, `nr`, `new`, `ne`, `nso`, `no`, `nus`, `oc`, `or`, `om`, `pag`, `pap`, `ps`, `fa`, `pl`, `pt`, `pt-PT`, `pt-BR`, `pa`, `pa-Arab`, `qu`, `rom`, `ro`, `rn`, `ru`, `sm`, `sg`, `sa`, `gd`, `sr`, `st`, `crs`, `shn`, `sn`, `scn`, `szl`, `sd`, `si`, `sk`, `sl`, `so`, `es`, `su`, `sw`, `ss`, `sv`, `tg`, `ta`, `tt`, `te`, `tet`, `th`, `ti`, `ts`, `tn`, `tr`, `tk`, `ak`, `uk`, `ur`, `ug`, `uz`, `vi`, `cy`, `xh`, `yi`, `yo`, `yua`, `zu`, `unknown`
- `citizen_cover_sheet_source` (map from string to any, optional, nullable) — Cover sheet source JSON
- `citizen_cover_sheet_enabled` (boolean, optional, nullable) — Cover sheet enabled

### ValidationErrorLocItems

- string
- integer

## Examples

**Response**

```json
{
  "agency": {
    "agency_id": "string",
    "agency_name": "Abel Police Test Agency",
    "created_at_utc": "2021-01-01T00:00:00Z",
    "updated_at_utc": "2021-01-01T00:00:00Z",
    "agency_enabled": true,
    "agency_handle": "marin_central_ca",
    "agency_type": "demo",
    "partner_id": "123e4567-e89b-12d3-a456-426614174000",
    "public_phone_number": "+14155552671",
    "agency_address": {
      "address_1": "188 King Street",
      "address_2": "Apt 2",
      "city": "San Francisco",
      "county": "San Francisco County",
      "zip": "94158",
      "state": "CA",
      "country": "US",
      "latitude": 37.774929,
      "longitude": -122.419418,
      "timezone": "America/Los_Angeles"
    },
    "agency_contract": {
      "max_writer_seats": 10,
      "writer_seats_used": 5,
      "max_chat_seats": 20,
      "chat_seats_used": 12
    },
    "agency_settings": {
      "day_of_week_format": "%A",
      "date_format": "%m/%d/%Y",
      "time_format": "%H:%M",
      "narrative_disclaimer": true,
      "narrative_affidavit": "AFFIDAVIT",
      "random_sentences": true,
      "num_narrative_edits": 3,
      "unrestricted_data_retention": false,
      "one_hour_session": false,
      "data_retention_days": 7,
      "include_synopsis": true,
      "narrative_include_race": true,
      "mention_person_names": "ALWAYS",
      "mention_location_names": "BOTH",
      "created_at_utc": "2021-01-01T00:00:00Z",
      "updated_at_utc": "2021-01-01T00:00:00Z",
      "citizen_enabled": true,
      "citizen_website_timeout_seconds": 300,
      "citizen_kiosk_timeout_seconds": 600,
      "self_hosted_dems": true,
      "dems_system_name": "Axon Evidence.com",
      "cad_system_name": "Mark43 CAD",
      "rms_system_name": "Mark43 RMS",
      "allow_narrative_templates": false,
      "custom_prompting_enabled": false,
      "allow_user_prompts": false,
      "force_extend_agency_prompt": true,
      "citizen_enabled_languages": [
        "en",
        "es",
        "vi",
        "sr"
      ],
      "citizen_cover_sheet_source": {
        "content": [],
        "type": "doc"
      },
      "citizen_cover_sheet_enabled": false
    },
    "originating_agency_identifier": "ABEL-123"
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.stage.abelpolice.com/v1/agencies/agency_id"

headers = {"x-api-key": "<token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.stage.abelpolice.com/v1/agencies/agency_id';
const options = {method: 'GET', headers: {'x-api-key': '<token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

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

func main() {

	url := "https://api.stage.abelpolice.com/v1/agencies/agency_id"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("x-api-key", "<token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.stage.abelpolice.com/v1/agencies/agency_id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.stage.abelpolice.com/v1/agencies/agency_id")
  .header("x-api-key", "<token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.stage.abelpolice.com/v1/agencies/agency_id', [
  'headers' => [
    'x-api-key' => '<token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.stage.abelpolice.com/v1/agencies/agency_id");
var request = new RestRequest(Method.GET);
request.AddHeader("x-api-key", "<token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["x-api-key": "<token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.stage.abelpolice.com/v1/agencies/agency_id")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```