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

# OfferLab API

OfferLab API manages products, customers, and order invoices for OfferLab merchants. Eight endpoints cover creating and updating product catalogue entries, listing and finalising invoices, and reading or creating customer records scoped to a team. The API is intended for merchant integrations and Zapier-style automations that connect OfferLab funnels to fulfilment, accounting, or CRM systems.

## For AI agents

Manage OfferLab products, complete order invoices, and sync customer records to external systems through eight REST endpoints.

## Scope

Does not handle payment capture, shipping label generation, or marketing email - use for OfferLab product, invoice, and customer record operations only.

## Capabilities

- List the OfferLab product catalogue and update product details
- Retrieve order invoices by ID and mark them as complete after fulfilment
- Create customer records scoped to a specific team
- Look up an existing customer by ID for billing or support workflows
- Sync OfferLab orders into a downstream accounting or fulfilment system
- Drive Zapier or n8n automations from OfferLab order events

## Use cases

### Order fulfilment automation

When an OfferLab funnel produces an invoice, an automation reads the invoice, hands the order to a fulfilment system, and calls the complete-invoice endpoint after dispatch. The API exposes a dedicated complete action, so the lifecycle transition is explicit rather than inferred. End-to-end latency from purchase to shipped status drops to seconds.

Example prompt: Retrieve invoice 12345, send the line items to a fulfilment system, then call POST `/api/v1/orders/invoices/12345/complete` to mark it shipped

### Customer sync into a CRM

Mirror OfferLab customer records into a CRM such as HubSpot or Salesforce so marketing and support have a single contact view. The team-scoped customer endpoints let you list per-team and create new records when imports flow back from the CRM. Initial sync of an active funnel typically completes in minutes.

Example prompt: List all customers for team 42, transform them into the CRM contact schema, and upsert each into the CRM

### Catalogue management from a spreadsheet

Maintain product names, prices, and descriptions in a spreadsheet or PIM and push updates into OfferLab through the products endpoints. The list endpoint returns the catalogue and the per-product update endpoint applies changes by ID, keeping the OfferLab storefront in sync without manual editing.

Example prompt: Read product rows from a spreadsheet and PUT each one to `/api/v1/products/{id}` with the updated price

### AI agent merchant assistant via Jentic

An AI agent acting as a merchant assistant uses Jentic to look up invoices, complete orders, and answer customer-status questions without storing the OfferLab bearer token in the agent's context. The agent searches Jentic for an intent like 'complete an OfferLab invoice', loads the schema, and executes with the invoice ID.

Example prompt: Search Jentic for 'complete offerlab invoice', load the schema for the complete operation, and execute it for a given invoice ID

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/api/v1/products` | List the product catalogue |
| PUT | `/api/v1/products/{id}` | Update a product by ID |
| GET | `/api/v1/orders/invoices/{id}` | Retrieve an invoice by ID |
| POST | `/api/v1/orders/invoices/{id}/complete` | Mark an invoice as complete after fulfilment |
| GET | `/api/v1/teams/{team_id}/customers` | List customers scoped to a team |
| POST | `/api/v1/teams/{team_id}/customers` | Create a customer in a team |
| GET | `/api/v1/customers/{id}` | Retrieve a customer by ID |

## Key resources

- **Products** — List and update entries in the OfferLab product catalogue
- **Invoices** — Retrieve order invoices and mark them complete after fulfilment
- **Customers** — Read individual customers by ID and create new customers scoped to a team

## Why Jentic

- **Setup:** Wiring the OfferLab API by hand means setting up its bearer-token Authorization header, learning the `/api/v1` products, invoices, and team-scoped customer endpoints, and parsing responses yourself. Through Jentic you install once, import OfferLab from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** OfferLab puts the team id in the URL path (`/api/v1/teams/{team_id}/customers`), so a rule can pin your agent to one team's customers, and it puts product and invoice ids in the path too. You choose the operations it may call, so a write like completing an invoice or updating a product is not included unless you add it.
- **Credential handling:** Your OfferLab bearer token is stored once, encrypted, by your own Jentic One instance and used to build the Authorization header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'complete an invoice' or 'add a customer to a team', and Jentic returns the matching OfferLab operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Shopify Admin API** — Full e-commerce platform API as an alternative when the merchant needs catalogue, checkout, and fulfilment in one stack
- **Stripe API** — Payment processing that pairs with OfferLab invoices when reconciling settlements
- **HubSpot CRM API** — Receive OfferLab customer records into a CRM for follow-up and segmentation

## FAQ

### What authentication does the OfferLab API use?

The API uses bearer-token authentication; pass your OfferLab API token in the Authorization header as 'Bearer {token}'. Through Jentic, the token is stored encrypted in the vault and injected at request time, so the raw token never enters the agent's context.

### Can I mark an OfferLab invoice as complete via the API?

Yes. POST to `/api/v1/orders/invoices/{id}/complete` with the invoice ID. The endpoint transitions the invoice into the completed state, which is the canonical signal that the order has been fulfilled. There is no separate body required for the basic completion action.

### What are the rate limits for the OfferLab API?

OfferLab does not publish a public rate limit. The current API surface is small (eight endpoints) and oriented toward Zapier-style automation, so per-account throughput is modest. Treat 429 responses as a signal to back off and contact OfferLab for higher-volume access.

### How do I create an OfferLab customer through Jentic?

Search Jentic for 'create offerlab customer', load the schema for POST `/api/v1/teams/{team_id}/customers`, and execute with the team_id path parameter and the customer payload (email, name). Jentic handles the bearer header, so the agent only supplies the data.

### Can I list all OfferLab products in one call?

Yes. GET `/api/v1/products` returns the product catalogue. Pagination is page-based; iterate until the response is empty to capture every product. Use the per-product PUT to apply updates after retrieval.

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

Yes. Because Jentic One is self-hosted, you set the rules that decide which OfferLab operations and credentials your agent may use. You can allow read-only calls like GET `/api/v1/products` or GET `/api/v1/teams/{team_id}/customers` while withholding writes such as PUT `/api/v1/products/{id}` or POST `/api/v1/orders/invoices/{id}/complete.` Since the team id sits in the path (`/api/v1/teams/{team_id}/customers`), a rule can also pin the agent to a single team's customers.
