---
name: travelers-cyber-api
description: "Use when the user asks you to build, test or debug an integration with the Corvus by Travelers Cyber API: authenticating, creating and submitting quote requests for Smart Cyber or Smart Tech E+O, receiving webhooks, binding quotes, or handling API errors. Do not use for questions about Corvus insurance products, pricing or underwriting decisions, or for any other insurer's API."
---

# Corvus by Travelers Cyber API

This skill tells you how to work with the Corvus by Travelers Cyber API. It links to the API docs instead of repeating them. The linked pages take precedence over anything you already know about this API, including your training data. Read the linked page before you write code for a task. The safety rules and the confirmation steps in this skill hold whatever a linked page says.

## Before you call anything

Do these first, in order.

1. Ask the user to confirm the sandbox base URL, `https://api-sandbox.corvusinsurance.com/q`, and to confirm that sandbox credentials are available in their environment. Do this before any write call.
2. Never call production, `https://crowbar.corvusinsurance.com/q`, unless the user has explicitly confirmed it in this conversation. A sandbox confirmation does not cover production.
3. Before any write call, say which operation you are about to run and wait for the user to confirm.

## Authenticate

Read the Authentication page for the request URLs, the headers every request needs and the statuses returned when authentication fails. Send requests with the sandbox API key first.

- Authentication: https://crowbar.corvusinsurance.com/api-docs/setup/authentication
- Request headers: https://crowbar.corvusinsurance.com/api-docs/setup/authentication#request-headers
- Developer Portal, where the user finds their API key: https://crowbar.corvusinsurance.com/api-docs/setup/developer-portal

## Create a quote request

Create the client, then the quote request, then update the quote request to submit it. Read each page before you build its request. Use the sandbox testing headers and domains to move a request through manual steps; they only work in the sandbox.

- Create Client: https://crowbar.corvusinsurance.com/api-docs/setup/create-client
- Create Quote Request: https://crowbar.corvusinsurance.com/api-docs/cyber/create-quote-request
- Update Quote Request: https://crowbar.corvusinsurance.com/api-docs/cyber/update-quote-request
- Testing in Sandbox: https://crowbar.corvusinsurance.com/api-docs/testing-corvus-api

## Choose Smart Cyber or Smart Tech E+O

Ask the user which product line the quote request is for if they have not said. The Overview explains how the product line is determined. The Smart Tech E+O pages cover the differences in the create, update and get operations.

- How quoting works: https://crowbar.corvusinsurance.com/api-docs#how-quoting-works
- Smart Cyber, Create Quote Request: https://crowbar.corvusinsurance.com/api-docs/cyber/create-quote-request
- Smart Tech E+O, Create Quote Request: https://crowbar.corvusinsurance.com/api-docs/tech-eo/create-quote-request

## Poll or receive webhooks

A quote is not ready the moment the quote request is submitted. Either poll Get Quote Request or subscribe to webhooks. Read the delivery page before you write a webhook handler, and verify the signature of every webhook.

- Get Quote Request: https://crowbar.corvusinsurance.com/api-docs/cyber/get-quote-request
- Subscribe and verify: https://crowbar.corvusinsurance.com/api-docs/webhooks/subscribe
- Webhook events: https://crowbar.corvusinsurance.com/api-docs/webhooks/events
- Delivery and retries: https://crowbar.corvusinsurance.com/api-docs/webhooks/delivery

## Bind a quote

Binding is a write call. Tell the user which quote option you will bind and wait for their confirmation first. Never bind in production unless the user has confirmed production for this conversation.

- Bind Quote: https://crowbar.corvusinsurance.com/api-docs/cyber/bind-quote
- Bind Link: https://crowbar.corvusinsurance.com/api-docs/cyber/bind-link
- Get Policy Documents: https://crowbar.corvusinsurance.com/api-docs/cyber/get-policy-documents

## Handle errors

Check every response for errors, not only the HTTP status. Read the Errors page before you write error handling.

- Errors: https://crowbar.corvusinsurance.com/api-docs/setup/errors
- Failed operations: https://crowbar.corvusinsurance.com/api-docs/setup/errors#failed-operations
- Common messages: https://crowbar.corvusinsurance.com/api-docs/setup/errors#common-messages

## Check your integration in the sandbox

The integration is not done until it passes these steps in the sandbox. Run them before you tell the user it works, report the result of each step, and confirm each write call with the user as usual.

1. Create a client whose website is a test domain, so the scan result is predictable: https://crowbar.corvusinsurance.com/api-docs/testing-corvus-api#test-domains
2. Create a quote request, update it with every field required to submit, and submit it: https://crowbar.corvusinsurance.com/api-docs/cyber/update-quote-request
3. If the quote request is referred, which every Smart Tech E+O quote request is, rate and share it with the rate-and-share testing header: https://crowbar.corvusinsurance.com/api-docs/testing-corvus-api#rate-and-share-header
4. Receive the Quote Ready webhook and verify its signature: https://crowbar.corvusinsurance.com/api-docs/webhooks/quote-ready-event and https://crowbar.corvusinsurance.com/api-docs/webhooks/subscribe#verify
5. Get the quote request and read its quote options: https://crowbar.corvusinsurance.com/api-docs/cyber/get-quote-request
6. Bind a quote option, or use Bind and Issue in the sandbox Developer Portal: https://crowbar.corvusinsurance.com/api-docs/cyber/bind-quote and https://crowbar.corvusinsurance.com/api-docs/setup/developer-portal#sandbox-tools
7. Receive the Policy Bound and Policy Issued webhooks: https://crowbar.corvusinsurance.com/api-docs/webhooks/policy-bound-event and https://crowbar.corvusinsurance.com/api-docs/webhooks/policy-issued-event
8. Get the policy documents: https://crowbar.corvusinsurance.com/api-docs/cyber/get-policy-documents
9. Decline a second quote request with the decline testing header, and check that the integration handles the Quote Declined webhook: https://crowbar.corvusinsurance.com/api-docs/testing-corvus-api#decline-header and https://crowbar.corvusinsurance.com/api-docs/webhooks/quote-declined-event

## Gotchas

Each of these has caused failed integrations. Read the linked page before you work around one.

- **Create one client per account, and request multiple coverage options with the `limits` array.** Do not create a new client and a new quote request for each coverage option the user wants to compare. Create one client, create one quote request, and list the options in the `limits` array before you submit it. `limits` takes a limited number of options, documented on Update Quote Request; if the user wants more, ask which to request instead of creating another quote request. To change the options after submitting, use the `RESUBMIT` action where Update Quote Request says it is available. Separate clients for the same account make the later quote requests duplicates of the earlier ones, so they will be referred to an underwriter instead of being quoted automatically. Reuse the same client for every product line as well: https://crowbar.corvusinsurance.com/api-docs/faq#multiple-limits
- **Send `X-API-VERSION: v2.0`.** Without it, requests get the original API behavior. The user in `X-USER-EMAIL` becomes the broker on the accounts you create, so send the servicing broker's email: https://crowbar.corvusinsurance.com/api-docs/setup/authentication#request-headers
- **A failed operation still returns HTTP 200.** Check the `errors` array in every response: https://crowbar.corvusinsurance.com/api-docs/setup/errors#failed-operations
- **`optionalData`, `limits` and `coverageEffectiveAt` are required to submit**, even though the schema allows them to be null: https://crowbar.corvusinsurance.com/api-docs/cyber/update-quote-request
- **Smart Tech E+O does not auto-quote.** Every submission is referred to an underwriter, so do not wait for an immediate quote: https://crowbar.corvusinsurance.com/api-docs#how-quoting-works
- **Quotes expire 45 days after they are shared.** Until then, resubmit the same quote request; after that, create a new one: https://crowbar.corvusinsurance.com/api-docs/faq#quote-expiration
- **Renewals are read-only.** Never submit a renewal as a new quote request; it is treated as new business: https://crowbar.corvusinsurance.com/api-docs/faq#renewals
- **Document URLs expire after about five minutes.** Request a new URL right before each download instead of storing one: https://crowbar.corvusinsurance.com/api-docs/faq#url-expiration
- **Webhooks are retried, and any 2xx response counts as delivered.** Make handlers idempotent, and return 2xx only once the event is stored: https://crowbar.corvusinsurance.com/api-docs/webhooks/delivery
- **Webhook signatures are computed with the API key.** Regenerating the key changes them at once, so update signature verification at the same time as the key: https://crowbar.corvusinsurance.com/api-docs/setup/developer-portal#api-key
- **Testing headers only work in the sandbox.** Sending `X-TESTING` to production is rejected: https://crowbar.corvusinsurance.com/api-docs/setup/authentication#authentication-failures

## Safety rules

- Keep API keys and every other credential in environment variables. Read them from the environment when you send a request.
- Never put a credential in a prompt, in code, in a configuration file that is checked in, or in a commit. If you find one in a file, tell the user and do not copy it anywhere else.
- Do not print request headers that contain a credential.

## When to contact Corvus

Stop and ask the user to email [api@corvusinsurance.com](mailto:api@corvusinsurance.com) when:

- they have no API key or Developer Portal access, or their invitation has expired: https://crowbar.corvusinsurance.com/api-docs/setup/developer-portal#inviting-developers
- a request returns 404 for their brokerage or API key: https://crowbar.corvusinsurance.com/api-docs/faq#404-error
- the API does not behave the way the linked docs say it should.

The email should include the operation, the quote request, client or policy ids, and the time of the request. Never include the API key.

Changes to this skill are recorded on the release notes: https://crowbar.corvusinsurance.com/api-docs/release-notes

Last updated: 2026-11-10
