canonical: https://jentic.com/apis/remihq.com/remihq

# Remihq Remi Public API

The Remi Public API lets partners hand roofing jobs to Remi and follow each one from bid to finished work. A job starts as a bid request built from a homeowner and a property address, gathers quotes for the cost of the roof, and moves forward when a quote is approved, the homeowner contract (HIC) is signed, and a notice to proceed (NTP) is submitted. Projects are then generated from the approved quote's scope, and completion-of-work files such as finished work photos and final inspection documents can be retrieved at the end.

## For AI agents

Submit roofing bid requests to Remi, read and approve quotes, send and track homeowner contracts, submit notices to proceed, and retrieve project completion files. Authenticated with the x-remi-key header.

## Scope

Does not handle homeowner financing, contractor search, or roofing material ordering. Use for submitting and tracking Remi roofing jobs from bid request to completion only.

## Capabilities

- Submit a roofing bid request with homeowner, property address, billing address, and files
- Read every quote on a bid request and download a quote as PDF or image
- Approve a quote, which triggers Remi to send the homeowner contract
- Check homeowner contract signature status, sent date, and signed date
- Submit a notice to proceed so Remi starts scheduling the work
- Retrieve completion-of-work photos and final inspection files for a project

## Use cases

### Agent-driven roofing job intake

A partner's agent turns a homeowner enquiry into a Remi job. It creates a bid request with the required id, propertyAddress, billingAddress, homeowner, instructions, url, and files, then checks back on the quotes Remi produces for that bid request.

Example prompt: Call POST `/v0/bid-request` with id, propertyAddress, billingAddress, homeowner, instructions, url, and files, then call GET `/v0/quotes` with id set to that bid request id

### Quote review and approval

Each bid request can carry several quotes, with one active. An agent fetches them, shares the quote PDF or image with the homeowner, and approves the chosen quote once the homeowner agrees. Approval makes Remi immediately email the homeowner contract through PandaDoc, so the homeowner should expect it first.

Example prompt: Call GET `/v0/quotes/{quoteId}/pdf` for the active quote, and after the homeowner confirms, call POST `/v0/quotes/{quoteId}/approve`

### Track the contract and release work

After approval, the agent polls the homeowner contract status for signature and signed date, resends the contract if needed, and once it is signed submits the notice to proceed, after which Remi calls the homeowner and schedules the job.

Example prompt: Call GET `/v0/homeowner-contract` with id set to the bid request id, and once it shows signed, call POST `/v0/ntp` with id set to the bid request id

### Close out a finished project

When the roof is done, the agent lists the bid request's projects and pulls the completion-of-work files, including completed work photos and final inspection documents, for the partner's records.

Example prompt: Call GET `/v0/projects` with id set to the bid request id, then GET `/v0/projects/{projectId}/completion-of-work` for each project

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/v0/bid-request` | Create a bid request |
| GET | `/v0/quotes` | Get quotes for a bid request |
| POST | `/v0/quotes/{quoteId}/approve` | Approve a quote |
| GET | `/v0/homeowner-contract` | Get homeowner contract status |
| POST | `/v0/ntp` | Submit a notice to proceed |
| GET | `/v0/projects/{projectId}/completion-of-work` | Get completion of work files |

## Key resources

- **Bid requests** — A Remi job built from a homeowner and an address; create and read
- **Quotes** — Roof cost estimates per bid request; list, read, download PDF or image, approve
- **Homeowner contracts (HIC)** — The contract the homeowner signs; read status, download PDF, send
- **Notice to proceed (NTP)** — Permission to start work; submit to trigger scheduling
- **Projects** — Work generated from the approved quote; list and retrieve completion-of-work files

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 68 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 72 / 100
  - Developer Experience & Jentic Compatibility: 81 / 100
  - AI-Readiness & Agent Experience: 55 / 100
  - Agent Usability: 94 / 100
  - Security: 50 / 100
  - AI Discoverability: 71 / 100
- **View full report:** https://jentic.com/apis/remihq.com/remihq/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Remi by hand means sending the x-remi-key header, assembling the full bid request body with homeowner, addresses, and files, and sequencing quote approval, contract, and NTP calls in the right order. Through Jentic you install once, import Remi from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Remi puts the quote id in the URL path (`/v0/quotes/{quoteId}/...`), so a rule can limit your agent to one quote, while bid request ids travel as query parameters and in the NTP body. You choose the operations it may call, so high-impact ones like quote approval or NTP submission are not included unless you add them.
- **Credential handling:** Your Remi API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'submit a roofing bid request' or 'check homeowner contract status', and Jentic returns the matching Remi operation with its input schema so the agent sends the right fields.

## Related APIs

- **Angi Pros** — Find local home-service pros instead of handing the job to Remi
- **PandaDoc** — E-signature platform Remi uses to deliver homeowner contracts
- **CompanyCam** — Jobsite photo documentation for contractors

## FAQ

### What authentication does the Remi Public API use?

Per its OpenAPI spec, the Remi Public API authenticates with an API key sent in the x-remi-key header. The homeowner-facing claim-intro operation also takes a per-claim access token in the x-claim-token header. Through Jentic, your Remi key is stored encrypted by your own Jentic One instance and injected at execution time.

### What happens when I approve a quote through the Remi API?

Approving a quote with POST `/v0/quotes/{quoteId}/approve` makes Remi immediately send the homeowner contract, which arrives as an email from PandaDoc. Remi asks partners to tell the homeowner to expect that email before approving.

### How do I know when a homeowner has signed the Remi contract?

Call GET `/v0/homeowner-contract` with the bid request id. It returns the signature status along with the sent date, signed date, and other contract details, and GET `/v0/homeowner-contract/pdf` returns the document itself.

### What are the rate limits for the Remi Public API?

The OpenAPI spec does not specify rate limits. Check with Remi at https://remihq.com for current limits.

### Is there a Remi MCP server?

You don't need an MCP server to give your agent Remi. Jentic connects it directly from the API Directory: import it, store your x-remi-key once, and your agent calls it. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Can I limit what my agent is allowed to do with the Remi Public API?

Yes. A status-tracking agent can be given only the GET operations on quotes, homeowner contracts, and projects, so it reports job progress while POST `/v0/quotes/{quoteId}/approve` and POST `/v0/ntp`, which send contracts and start scheduling, stay out of its reach. Every call it makes is logged.
