# Japan Post Digital Address API Reference **Version:** 1.0.1.250707 The Digital Address API provides features such as token issuance, ZIP Code search, company-specific ZIP Code search, and Digital Address lookup. > ZIP Code refers to Postal Code --- ## Authentication ### Obtaining the API Usage Token (1-1028) Based on the `grant_type` of `client_credentials` in OAuth2.0, the API returns a usage token in response to the token request. **Endpoint:** `POST /api/v1/j/token` #### Header Parameters | Parameter | Required | Description | | ----------------- | -------- | ----------------- | | `x-forwarded-for` | Yes | Source IP address | #### Request Body ```json { "grant_type": "client_credentials", "client_id": "TEST7t6fj7eqC5v6UDaHlpvvtesttest", "secret_key": "testGzhSdzpZ1muyICtest0123456789" } ``` | Field | Required | Description | | ------------ | -------- | ------------------------------- | | `grant_type` | Yes | Fixed as `"client_credentials"` | | `client_id` | Yes | Client ID | | `secret_key` | Yes | Secret Key | #### Response (200 OK) ```json { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "token_type": "Bearer", "expires_in": 3600, "scope": "read" } ``` | Field | Type | Description | | ------------ | ------- | --------------------------- | | `token` | string | Access Token (JWT format) | | `token_type` | string | Token Type | | `expires_in` | integer | Validity duration (seconds) | | `scope` | string | Scope | #### Error Responses | Status | Description | | ------ | --------------------------------------------- | | 400 | Bad Request - Invalid client_id or secret_key | | 401 | Unauthorized | | 403 | Forbidden | | 500 | Internal Server Error | **Error Response Format:** ```json { "request_id": "(API execution tracking ID)", "error_code": "400-1028-0001", "message": "クライアントIDまたはシークレットキーが違います" } ``` --- ## Endpoints ### Code Number Search (1-1029) Unified search endpoint for ZIP Code, Unique Corporate ZIP Code, and Digital Address. **Endpoint:** `GET /api/v1/searchcode/{search_code}` **Authorization:** Bearer token #### Path Parameters | Parameter | Required | Description | | ------------- | -------- | ---------------------------------------------------------------------- | | `search_code` | Yes | ZIP Code (min 3 digits), Unique Corporate ZIP Code, or Digital Address | #### Query Parameters | Parameter | Default | Description | | ------------ | ------- | -------------------------------------------------------------------------------------------- | | `page` | 1 | Page number | | `limit` | 1000 | Maximum records to retrieve (max: 1000) | | `ec_uid` | - | Provider's user ID | | `choikitype` | 1 | Town field format: `1` = without brackets, `2` = with brackets | | `searchtype` | 1 | Search target: `1` = ZIP + Corporate ZIP + Digital Address, `2` = ZIP + Digital Address only | #### Response (200 OK) ```json { "addresses": [{}, {}], "searchtype": "bizzipcode", "limit": 10, "count": 1, "page": 1 } ``` #### Error Responses | Status | Description | | ------ | --------------------- | | 400 | Bad Request | | 401 | Unauthorized | | 404 | Not Found | | 500 | Internal Server Error | **Error Response Format:** ```json { "request_id": "string", "error_code": "string", "message": "string" } ``` --- ### ZIP Code Search by Address (1-1018/1-1019) Search for the corresponding ZIP Code and address information from part of the address. **Endpoint:** `POST /api/v1/addresszip` **Authorization:** Bearer token #### Request Body ```json { "pref_code": "13", "city_code": "13102", "flg_getcity": 0, "flg_getpref": 0, "page": 1, "limit": 100 } ``` | Field | Description | | ------------- | ---------------------------------------------------------- | | `pref_code` | Prefecture Code | | `pref_name` | Prefecture Name | | `pref_kana` | Prefecture Name (Kana) | | `pref_roma` | Prefecture Name (Romanized) | | `city_code` | City Code | | `city_name` | City Name | | `city_kana` | City Name (Kana) | | `city_roma` | City Name (Romanized) | | `town_name` | Town | | `town_kana` | Town (Kana) | | `town_roma` | Town (Romanized) | | `freeword` | Free Word search | | `flg_getcity` | Flag for city list only (0: all, 1: city only) | | `flg_getpref` | Flag for prefecture list only (0: all, 1: prefecture only) | | `page` | Page Number (default: 1) | | `limit` | Max records (default: 1000, max: 1000) | **Priority Notes:** - If both `pref_code` and `pref_name` are provided, `pref_code` takes priority - If both `city_code` and `city_name` are provided, `city_code` takes priority #### Response (200 OK) ```json { "addresses": [[], []], "level": 2, "limit": 100, "count": 2, "page": 1 } ``` **Matching Levels:** - Level 1: Matches at prefecture level - Level 2: Matches at city/ward/town/village level - Level 3: Matches at town area level --- ## Environment Variables | Variable | Required | Description | | -------------------------- | -------- | ------------------------------------------- | | `JAPAN_POST_API_URL` | Yes | Base URL for Japan Post Digital Address API | | `JAPAN_POST_CLIENT_ID` | Yes | OAuth client ID | | `JAPAN_POST_CLIENT_SECRET` | Yes | OAuth client secret | | `JAPAN_POST_TIMEOUT` | No | Request timeout in ms (default: 10000) | --- ## Error Codes Reference | Error Code Pattern | HTTP Status | Description | | ------------------ | ----------- | ------------------------------- | | `400-1028-0001` | 400 | Invalid client_id or secret_key | | `401-*` | 401 | Token invalid or expired | | `404-*` | 404 | Resource not found | | `500-*` | 500 | Internal server error | --- ## Notes - ZIP codes must be 7 digits (hyphens are stripped automatically) - If fewer than 7 digits are provided, the API searches for codes starting with the entered value - Token is JWT format and should be cached until near expiration - Rate limiting may apply - implement exponential backoff for retries