External Two squares, one overlapping the bottom one. Top square has an arrow pointing away, as if leading you away

Carrier Credentials

The Carrier Credentials API lets you manage the carrier credentials your agency uses for personal lines quoting, and organize them into product groups. A credential holds the rating and login details for one carrier, along with the states, lines of business, and carrier products it applies to.

Use it to:

Stored passwords are never returned. Responses show only whether a credential has rating or login credentials, plus masked hints of the usernames.

Authentication

The Carrier Credentials API uses OAuth 2.0, so calls are made on behalf of a signed-in Zywave user (User-based OAuth 2.0). Register an app, request the scopes below, and send the access token as Authorization: Bearer <access_token>.

Scopes

Scope Allows
api.carriercredentials Full access: create, update, and delete credentials and product groups, and read them
api.carriercredentials:read Read-only access to credentials and product groups. Write operations return 403.

Request at least one of them when you register your app. Use api.carriercredentials:read if your app only needs to read credentials and product groups.

Operation api.carriercredentials api.carriercredentials:read
Every GET endpoint Yes Yes
Every POST, PUT, PATCH, and DELETE endpoint, including POST …/health/revalidate Yes No (403)

Organization and agency

Every path includes the organization and agency, /org/{orgId}/agency/{agencyId}/.

Path parameter Type Description
orgId string Your organization ID
agencyId string Your agency ID
id string The ID of the credential or product group in the path
credentialId string The ID of a credential in a product group, used when removing it from the group

Endpoints

All paths start with /v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement. Full request and response schemas are in the specification below.

Credentials

Method Path Description
GET /credential List the agency's carrier credentials, with paging and filters
POST /credential Create a carrier credential
GET /credential/{id} Get a credential
PATCH /credential/{id} Update a credential. Only the fields you send are changed.
DELETE /credential/{id} Delete a credential
PUT /credential/{id}/scope Replace the credential's scope
PUT /credential/{id}/login Set the credential's login
DELETE /credential/{id}/login Remove the credential's login
PUT /credential/{id}/values Replace the credential's provider values
GET /credential/{id}/health Get the credential's health status
POST /credential/{id}/health/revalidate Revalidate the credential and return its updated health
GET /credential/{id}/activity Get the credential's activity log

Product groups

Method Path Description
GET /productGroup List the agency's product groups, with paging
POST /productGroup Create a product group
GET /productGroup/{id} Get a product group and its credential assignments
PATCH /productGroup/{id} Update a product group. Only the fields you send are changed.
DELETE /productGroup/{id} Delete a product group
GET /productGroup/{id}/credential List the credentials in a product group
POST /productGroup/{id}/credential Add credentials to a product group
DELETE /productGroup/{id}/credential/{credentialId} Remove a credential from a product group
GET /productGroup/{id}/coverage Get the states, lines of business, and carrier products the group covers
  • PUT …/scope and PUT …/values replace what is stored, so send the complete set each time.
  • DELETE on a credential or product group accepts an optional deactivate query parameter (default false).
  • Setting a credential's login with PUT …/login is separate from its rating username and password, which are set when you create or update the credential. If loginSameAsRating is true, the rating details are used for login.

Typical workflow

1. Create a credential

curl --request POST \
  --url https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential \
  --header 'Authorization: Bearer {access_token}' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Acme Production Login",
    "owner": { "name": "Jane Producer", "contact": "jane.producer@example.com", "userRef": "jane.producer" },
    "producerCode": "PC-1001",
    "producerSubCode": "SUB-02",
    "ratingUsername": "{rating_username}",
    "ratingPassword": "{rating_password}",
    "loginSameAsRating": true,
    "scope": [
      { "state": "TX", "lob": "Auto", "carrierProductId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" }
    ],
    "providerValues": { "agencyCode": "A12345" }
  }'

{
  "credentialId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "carrierId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "carrierName": "Acme Insurance Co.",
  "name": "Acme Production Login",
  "owner": {
    "name": "Jane Producer",
    "contact": "jane.producer@example.com",
    "userRef": "jane.producer"
  },
  "producerCode": "PC-1001",
  "producerSubCode": "SUB-02",
  "hasRatingCredentials": true,
  "loginSameAsRating": true,
  "hasLoginCredentials": false,
  "bridge": null,
  "active": true,
  "status": "Active",
  "scope": [
    {
      "state": "TX",
      "lob": "Auto",
      "carrierProductId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
      "carrierProductName": "Acme Personal Auto"
    }
  ],
  "scopeSummary": {
    "states": 1,
    "lobs": 1
  },
  "maskedHints": {
    "ratingUsername": "j***g",
    "loginUsername": null
  },
  "providerValueKeys": [
    "agencyCode"
  ],
  "assignedProductGroupCount": 0,
  "lastUpdated": "2026-10-20T09:00:00Z",
  "updatedBy": "2c1a9e3e-9b7a-4a1d-8f3a-0a7b5a2b9f31",
  "health": null
}
using System.Net.Http;
using System.Net.Http.Headers;

HttpClient client = new HttpClient();

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential");

request.Headers.Add("Authorization", "Bearer {access_token}");

request.Content = new StringContent("{\n    \"name\": \"Acme Production Login\",\n    \"owner\": { \"name\": \"Jane Producer\", \"contact\": \"jane.producer@example.com\", \"userRef\": \"jane.producer\" },\n    \"producerCode\": \"PC-1001\",\n    \"producerSubCode\": \"SUB-02\",\n    \"ratingUsername\": \"{rating_username}\",\n    \"ratingPassword\": \"{rating_password}\",\n    \"loginSameAsRating\": true,\n    \"scope\": [\n      { \"state\": \"TX\", \"lob\": \"Auto\", \"carrierProductId\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\" }\n    ],\n    \"providerValues\": { \"agencyCode\": \"A12345\" }\n  }");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential"))
    .POST(BodyPublishers.ofString("{\n    \"name\": \"Acme Production Login\",\n    \"owner\": { \"name\": \"Jane Producer\", \"contact\": \"jane.producer@example.com\", \"userRef\": \"jane.producer\" },\n    \"producerCode\": \"PC-1001\",\n    \"producerSubCode\": \"SUB-02\",\n    \"ratingUsername\": \"{rating_username}\",\n    \"ratingPassword\": \"{rating_password}\",\n    \"loginSameAsRating\": true,\n    \"scope\": [\n      { \"state\": \"TX\", \"lob\": \"Auto\", \"carrierProductId\": \"9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\" }\n    ],\n    \"providerValues\": { \"agencyCode\": \"A12345\" }\n  }"))
    .setHeader("Authorization", "Bearer {access_token}")
    .setHeader("Content-Type", "application/json")
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
fetch('https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer {access_token}',
    'Content-Type': 'application/json'
  },
  // body: '{\n    "name": "Acme Production Login",\n    "owner": { "name": "Jane Producer", "contact": "jane.producer@example.com", "userRef": "jane.producer" },\n    "producerCode": "PC-1001",\n    "producerSubCode": "SUB-02",\n    "ratingUsername": "{rating_username}",\n    "ratingPassword": "{rating_password}",\n    "loginSameAsRating": true,\n    "scope": [\n      { "state": "TX", "lob": "Auto", "carrierProductId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" }\n    ],\n    "providerValues": { "agencyCode": "A12345" }\n  }',
  body: JSON.stringify({
    'name': 'Acme Production Login',
    'owner': {
      'name': 'Jane Producer',
      'contact': 'jane.producer@example.com',
      'userRef': 'jane.producer'
    },
    'producerCode': 'PC-1001',
    'producerSubCode': 'SUB-02',
    'ratingUsername': '{rating_username}',
    'ratingPassword': '{rating_password}',
    'loginSameAsRating': true,
    'scope': [
      {
        'state': 'TX',
        'lob': 'Auto',
        'carrierProductId': '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
      }
    ],
    'providerValues': {
      'agencyCode': 'A12345'
    }
  })
});
import requests

headers = {
    'Authorization': 'Bearer {access_token}',
    'Content-Type': 'application/json',
}

json_data = {
    'name': 'Acme Production Login',
    'owner': {
        'name': 'Jane Producer',
        'contact': 'jane.producer@example.com',
        'userRef': 'jane.producer',
    },
    'producerCode': 'PC-1001',
    'producerSubCode': 'SUB-02',
    'ratingUsername': '{rating_username}',
    'ratingPassword': '{rating_password}',
    'loginSameAsRating': True,
    'scope': [
        {
            'state': 'TX',
            'lob': 'Auto',
            'carrierProductId': '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d',
        },
    ],
    'providerValues': {
        'agencyCode': 'A12345',
    },
}

response = requests.post(
    'https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential',
    headers=headers,
    json=json_data,
)

# Note: json_data will not be serialized by requests
# exactly as it was in the original request.
#data = '{\n    "name": "Acme Production Login",\n    "owner": { "name": "Jane Producer", "contact": "jane.producer@example.com", "userRef": "jane.producer" },\n    "producerCode": "PC-1001",\n    "producerSubCode": "SUB-02",\n    "ratingUsername": "{rating_username}",\n    "ratingPassword": "{rating_password}",\n    "loginSameAsRating": true,\n    "scope": [\n      { "state": "TX", "lob": "Auto", "carrierProductId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" }\n    ],\n    "providerValues": { "agencyCode": "A12345" }\n  }'
#response = requests.post(
#    'https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential',
#    headers=headers,
#    data=data,
#)

The response is 201 Created and contains the new credential. Passwords are never returned: use hasRatingCredentials, hasLoginCredentials, and maskedHints to see what is stored.

Request body fields:

Field Required Description
name Yes Display name for the credential
owner No Who owns the credential: name, contact, and userRef
producerCode, producerSubCode No The agency's producer code and sub-code with the carrier
ratingUsername, ratingPassword No The carrier rating login
loginSameAsRating No true to use the rating username and password for login as well
login No A separate login: loginUsername and loginPassword
bridge No The bridge the credential is used with
scope No The states, lines of business, and carrier products the credential applies to. Each entry requires state and carrierProductId; lob is optional.
providerValues No Carrier-specific key/value settings, such as an agency code

2. Check the credential's health

curl --request GET \
  --url https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential/{id}/health \
  --header 'Authorization: Bearer {access_token}'

{
  "credentialId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "status": "Healthy",
  "expiresUtc": null,
  "lastValidatedUtc": "2026-10-20T08:00:00Z",
  "lastFailureUtc": null,
  "consecutiveFailures": 0,
  "lastFailureReason": null
}
using System.Net.Http;

HttpClient client = new HttpClient();

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential/{id}/health");

request.Headers.Add("Authorization", "Bearer {access_token}");

HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential/{id}/health"))
    .GET()
    .setHeader("Authorization", "Bearer {access_token}")
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
fetch('https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential/{id}/health', {
  headers: {
    'Authorization': 'Bearer {access_token}'
  }
});
import requests

headers = {
    'Authorization': 'Bearer {access_token}',
}

response = requests.get(
    'https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential/{id}/health',
    headers=headers,
)

To check the credential again right away, call POST …/health/revalidate with no body. It returns the updated health in the same format. consecutiveFailures and lastFailureReason help you find out why a credential stopped working.

3. Create a product group and add credentials

curl --request POST \
  --url https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/productGroup \
  --header 'Authorization: Bearer {access_token}' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Preferred Auto Carriers",
    "description": "Carriers eligible for the preferred auto program",
    "color": "#2E8B57"
  }'

{
  "productGroupId": "b2a1e3f4-5c6d-7e8f-9a0b-1c2d3e4f5a6b",
  "name": "Preferred Auto Carriers",
  "description": "Carriers eligible for the preferred auto program",
  "color": "#2E8B57",
  "active": true,
  "assignments": []
}
using System.Net.Http;
using System.Net.Http.Headers;

HttpClient client = new HttpClient();

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/productGroup");

request.Headers.Add("Authorization", "Bearer {access_token}");

request.Content = new StringContent("{\n    \"name\": \"Preferred Auto Carriers\",\n    \"description\": \"Carriers eligible for the preferred auto program\",\n    \"color\": \"#2E8B57\"\n  }");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/productGroup"))
    .POST(BodyPublishers.ofString("{\n    \"name\": \"Preferred Auto Carriers\",\n    \"description\": \"Carriers eligible for the preferred auto program\",\n    \"color\": \"#2E8B57\"\n  }"))
    .setHeader("Authorization", "Bearer {access_token}")
    .setHeader("Content-Type", "application/json")
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
fetch('https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/productGroup', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer {access_token}',
    'Content-Type': 'application/json'
  },
  // body: '{\n    "name": "Preferred Auto Carriers",\n    "description": "Carriers eligible for the preferred auto program",\n    "color": "#2E8B57"\n  }',
  body: JSON.stringify({
    'name': 'Preferred Auto Carriers',
    'description': 'Carriers eligible for the preferred auto program',
    'color': '#2E8B57'
  })
});
import requests

headers = {
    'Authorization': 'Bearer {access_token}',
    'Content-Type': 'application/json',
}

json_data = {
    'name': 'Preferred Auto Carriers',
    'description': 'Carriers eligible for the preferred auto program',
    'color': '#2E8B57',
}

response = requests.post(
    'https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/productGroup',
    headers=headers,
    json=json_data,
)

# Note: json_data will not be serialized by requests
# exactly as it was in the original request.
#data = '{\n    "name": "Preferred Auto Carriers",\n    "description": "Carriers eligible for the preferred auto program",\n    "color": "#2E8B57"\n  }'
#response = requests.post(
#    'https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/productGroup',
#    headers=headers,
#    data=data,
#)

Then add credentials to the group with POST …/productGroup/{id}/credential. Send either the credential IDs, a filter, or both:

curl --request POST \
  --url https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/productGroup/{id}/credential \
  --header 'Authorization: Bearer {access_token}' \
  --header 'Content-Type: application/json' \
  --data '{
    "credentialIds": [ "3fa85f64-5717-4562-b3fc-2c963f66afa6" ],
    "filter": { "carrierId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "state": "TX", "lob": "Auto", "ownerUserRef": "jane.producer" }
  }'

[
  {
    "credentialId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "carrierId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "owner": {
      "name": "Jane Producer",
      "contact": "jane.producer@example.com",
      "userRef": "jane.producer"
    },
    "scopeSummary": {
      "states": 1,
      "lobs": 1
    },
    "health": null
  }
]
using System.Net.Http;
using System.Net.Http.Headers;

HttpClient client = new HttpClient();

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/productGroup/{id}/credential");

request.Headers.Add("Authorization", "Bearer {access_token}");

request.Content = new StringContent("{\n    \"credentialIds\": [ \"3fa85f64-5717-4562-b3fc-2c963f66afa6\" ],\n    \"filter\": { \"carrierId\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\", \"state\": \"TX\", \"lob\": \"Auto\", \"ownerUserRef\": \"jane.producer\" }\n  }");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/productGroup/{id}/credential"))
    .POST(BodyPublishers.ofString("{\n    \"credentialIds\": [ \"3fa85f64-5717-4562-b3fc-2c963f66afa6\" ],\n    \"filter\": { \"carrierId\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\", \"state\": \"TX\", \"lob\": \"Auto\", \"ownerUserRef\": \"jane.producer\" }\n  }"))
    .setHeader("Authorization", "Bearer {access_token}")
    .setHeader("Content-Type", "application/json")
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
fetch('https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/productGroup/{id}/credential', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer {access_token}',
    'Content-Type': 'application/json'
  },
  // body: '{\n    "credentialIds": [ "3fa85f64-5717-4562-b3fc-2c963f66afa6" ],\n    "filter": { "carrierId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "state": "TX", "lob": "Auto", "ownerUserRef": "jane.producer" }\n  }',
  body: JSON.stringify({
    'credentialIds': [
      '3fa85f64-5717-4562-b3fc-2c963f66afa6'
    ],
    'filter': {
      'carrierId': 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
      'state': 'TX',
      'lob': 'Auto',
      'ownerUserRef': 'jane.producer'
    }
  })
});
import requests

headers = {
    'Authorization': 'Bearer {access_token}',
    'Content-Type': 'application/json',
}

json_data = {
    'credentialIds': [
        '3fa85f64-5717-4562-b3fc-2c963f66afa6',
    ],
    'filter': {
        'carrierId': 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
        'state': 'TX',
        'lob': 'Auto',
        'ownerUserRef': 'jane.producer',
    },
}

response = requests.post(
    'https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/productGroup/{id}/credential',
    headers=headers,
    json=json_data,
)

# Note: json_data will not be serialized by requests
# exactly as it was in the original request.
#data = '{\n    "credentialIds": [ "3fa85f64-5717-4562-b3fc-2c963f66afa6" ],\n    "filter": { "carrierId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "state": "TX", "lob": "Auto", "ownerUserRef": "jane.producer" }\n  }'
#response = requests.post(
#    'https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/productGroup/{id}/credential',
#    headers=headers,
#    data=data,
#)

The response lists the credential assignments in the group. To see what the group covers, call GET …/productGroup/{id}/coverage. It returns one cell per state, line of business, and carrier product, with the IDs of the credentials that cover it. Filter it with the carrierId or carrierProductId query parameters.

Listing and paging

curl --request GET \
  --url 'https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential?state=TX&lob=Auto&take=50' \
  --header 'Authorization: Bearer {access_token}'

using System.Net.Http;

HttpClient client = new HttpClient();

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential?state=TX&lob=Auto&take=50");

request.Headers.Add("Authorization", "Bearer {access_token}");

HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential?state=TX&lob=Auto&take=50"))
    .GET()
    .setHeader("Authorization", "Bearer {access_token}")
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
fetch('https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential?state=TX&lob=Auto&take=50', {
  headers: {
    'Authorization': 'Bearer {access_token}'
  }
});
import requests

headers = {
    'Authorization': 'Bearer {access_token}',
}

params = {
    'state': 'TX',
    'lob': 'Auto',
    'take': '50',
}

response = requests.get(
    'https://api.zywave.com/v3/quoting/personalLines/v1/org/{orgId}/agency/{agencyId}/credentialManagement/credential',
    params=params,
    headers=headers,
)

GET …/credential accepts these filters:

Query parameter Description
carrierId Only credentials for this carrier
carrierProductId Only credentials that cover this carrier product
ownerUserRef Only credentials owned by this user
state Only credentials that cover this state
lob Only credentials that cover this line of business

Both list endpoints (GET …/credential and GET …/productGroup) page the same way. Use either skip and take, or pageIndex and pageSize, but not both.

Query parameter Description
skip, take Number of records to skip, and to return. take is limited to 1–500 and defaults to 100.
pageIndex, pageSize Zero-based page index and page size. Send them together. pageSize is limited to 1–500 and defaults to 100.

The response contains items and the paging details totalCount, hasMoreResults, pageIndex, pageSize, skip, and take. Keep requesting pages until hasMoreResults is false.

Errors

Errors are returned as problem details (type, title, status, detail, instance).

Status Meaning
400 The request failed validation, such as a malformed body or an invalid paging combination.
401 The access token is missing or expired.
403 The token doesn't have the required scope. Write operations need api.carriercredentials.
404 The credential or product group doesn't exist for this organization and agency.
409 A product group conflicts with an existing one. Returned when creating or updating a product group.
422 The request was well formed but can't be processed, such as an invalid scope or credential.

Specification