API

Build against Revolio's public API

Authentication, scopes, request/response examples, and supported integration flows for repairs, catalog, payments, customers, parts, and WooCommerce.

API key authenticationScope-based accessCurrent public v1 contractOpenAPI + Postman

Updated in April 2026

Overview

What this API covers

Start here if you need the technical scope before wiring an HTTP client, middleware, ETL pipeline, or WooCommerce bridge.

Domains

6

Endpoints

35

With writes

12

Scopes

14

Good fit for

  • Syncing repairs, customers, and payments with your ERP, CRM, or internal back office.
  • Connecting WooCommerce to the shop's real operational flow without manual dashboard workarounds.
  • Feeding BI, dashboards, or internal automations with operational shop data.
  • Querying the technical catalog, parts, and suppliers from your checkout flow.

It does not replace

  • An anonymous public data API: everything depends on an authenticated key and shop context.
  • A public OAuth app platform or a third-party app marketplace contract.
  • An embedded UI SDK or frontend extension model inside the dashboard.
  • The dashboard itself: keys, scopes, and some operational decisions still live there.

Quickstart

Quick start

If you want to validate credentials and contract shape in under 10 minutes, this is the minimum flow to authenticate, confirm scopes, and make the first useful call.

Step 1

Create the API key

Sign in to the shop dashboard, open Settings, and generate a key for your integration.

Step 2

Authenticate every request

Send the key in X-API-Key or Authorization: Bearer. Every key is tied to one shop and its allowed scopes.

Step 3

Validate before integrating

Start with /health to confirm the key is valid and the returned scopes cover the operation you want to perform.

Step 4

Make the first real read

After /health, continue with /me, /repairs, or /catalog/device-models so you validate the use case before jumping straight into writes.

Base URL

https://api.revolio.io/api/public/v1

Full compatibility remains available at https://www.revolio.io/api/public/v1

Accepted headers

X-API-Key: rvl_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxx
Authorization: Bearer rvl_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxx

Validation example

curl -X GET https://api.revolio.io/api/public/v1/health \
  -H "X-API-Key: rvl_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxx"

What you need to see in the response

  • You get `status: ok` and the API version.
  • The `context` block returns `repairShopId`, `keyId`, `keyName`, and `scopes`.
  • If the context looks right, move to a simple read such as `/me` or `/repairs?limit=5`.
  • If it fails here, fix the key and scopes before testing any write flow.

Recommended follow-up reads

/api/public/v1/me/api/public/v1/repairs?limit=5/api/public/v1/catalog/device-models?limit=5

Access and support

Conventions

Global conventions

Before wiring any client or middleware, assume these rules for authentication, context, and operation.

Authentication

Use `X-API-Key` or `Authorization: Bearer`. The current public contract is centered on one key per shop.

Per-shop context

Each key is locked to one shop and the returned data always respects that boundary.

Scopes per operation

Read and write access are separated. Adjust scopes in the dashboard and avoid granting more than you need.

Pagination

Where list endpoints support it, use `limit` and `offset` and always page on the client side.

JSON and timestamps

Examples use JSON payloads and ISO 8601 timestamps. When an endpoint does not accept a body, that is explicit in the reference.

Versioning and limits

Work against /api/public/v1 and expect 100 requests per minute per key today.

Use cases

Ready-to-ship recipes

If you need to decide where to start, these four paths cover the most obvious scenarios for a shop or partner software.

Sync the repair lifecycle

Query the backlog, read detail, follow the timeline, and change statuses from your internal system.

  • List /repairs to get backlog and tracking codes.
  • Read detail, messages, payments, and events per repair.
  • Use /repairs/{id}/status only after you have the right write scopes in place.
/api/public/v1/repairs/api/public/v1/repairs/{id}/api/public/v1/repairs/{id}/status

Create repairs from checkout

Quote first, create the validated repair next, and keep the technical context inside your ecommerce flow.

  • Calculate prices in /repairs/quote.
  • Create the repair in /repairs with customer, services, and delivery method.
  • Track status, messages, and payments in the same lifecycle.
/api/public/v1/repairs/quote/api/public/v1/repairs/api/public/v1/repairs/{id}/payments

Read customers and indicators

Cross CRM, operations, and analytics without leaving the authenticated public API.

  • List customers with search and recent activity.
  • Read stats and aggregated analytics for external dashboards.
  • Use that data for BI, follow-up, or internal reporting.
/api/public/v1/customers/api/public/v1/stats/api/public/v1/analytics/repairs

Search parts and close orders

Search the catalog, compare offers, calculate shipping, and only then create the order.

  • Search /spare-parts with brand, component, and free-text filters.
  • Validate shipping in /spare-parts/shipping.
  • Create the order in /spare-parts/order with `parts.read + orders.write`.
/api/public/v1/spare-parts/api/public/v1/spare-parts/shipping/api/public/v1/spare-parts/order

Map

Current API capabilities

This is the map of the current public contract without repeating the full reference. Each block points to a domain, its endpoint surface, and whether writes are available there.

Access and context

Validate the key, inspect the authenticated context, and confirm that your shop responds with the expected scope before moving into more sensitive operations.

2 endpointsRead1 scopes
/api/public/v1/health/api/public/v1/me

Technical catalog

Query the catalog that supports public and operational flows: brands, categories, models, fault types, statuses, and components.

6 endpointsRead2 scopes
/api/public/v1/catalog/brands/api/public/v1/catalog/categories/api/public/v1/catalog/component-types/api/public/v1/catalog/device-models

Repairs and operations

The full operational repair layer: listing, creation, detail, timeline, items, services, messages, payments, and status changes.

12 endpointsRead + write7 scopes
/api/public/v1/repairs/api/public/v1/repairs/api/public/v1/repairs/quote/api/public/v1/repairs/{id}

Customers and analytics

Read customer relationship data and aggregated operational indicators without leaving the public API channel.

4 endpointsRead2 scopes
/api/public/v1/customers/api/public/v1/customers/{id}/api/public/v1/stats/api/public/v1/analytics/repairs

Parts, offers and suppliers

There are two parts layers in the API: the legacy `/parts` list and the expanded `/spare-parts` catalog with shipping, ordering, and offer comparison.

5 endpointsRead + write3 scopes
/api/public/v1/parts/api/public/v1/spare-parts/api/public/v1/spare-parts/order/api/public/v1/spare-parts/shipping

WooCommerce and sync

Endpoints to connect a WooCommerce installation, sync customers, orders, and products, and promote scopes without reinstalling the key.

6 endpointsRead + write4 scopes
/api/public/v1/woocommerce/capabilities/api/public/v1/woocommerce/connect/api/public/v1/woocommerce/customers/upsert/api/public/v1/woocommerce/orders/upsert

Troubleshooting

Where most integrations fail

If your first attempt failed, the problem is usually not the endpoint itself: it is the key, the scopes, the plan, or the payload.

400

Invalid payload or query

Validate required fields, types, enums, and endpoint limits before retrying the request.

401

Missing or invalid key

Check the header, the key format, and whether you are using the wrong key for a different shop.

402

Plan or subscription required

Some flows depend on an active subscription or extra capabilities in the shop context.

403

Insufficient scope

Go back to the dashboard, adjust scopes, and test in /health before trying the write again.

429

Rate limit exceeded

Implement retries with backoff and avoid unnecessary bursts on the same key.

500

Internal error

Save the endpoint, payload, timestamp, and returned response so the team can investigate faster.

Before you talk to the team

  • Validate /health first with the same key.
  • Confirm scopes, plan, and whether the endpoint is actually public.
  • Save the path, method, payload, and response body before opening a ticket.
  • If the flow is WooCommerce-related, confirm capabilities and the current connection as well.

If you really need to escalate, send the endpoint, method, payload, request time, and response body. That cuts investigation time significantly.

Reference

Detailed endpoint reference

Each block below uses request and response examples aligned with the current route handlers. When an endpoint does not accept a body, that is shown explicitly.

Canonical base

https://api.revolio.io/api/public/v1

Legacy compatibility

https://www.revolio.io/api/public/v1

Current Try it out host

https://api.revolio.io/api/public/v1

You are already on the canonical API host, so Try it out runs directly against the dedicated public base.

Open on API domain
Reference verified directly from the current route handlers and used by the public downloads as well. 35 endpoints visible with the current filters.

Access and context

Validate the key, inspect the authenticated context, and confirm that your shop responds with the expected scope before moving into more sensitive operations.

GET/api/public/v1/health

Validate the API key and return the authenticated shop context.

Auth via API key
Expected success: 200Possible error: 401Possible error: 429Possible error: 500

Request example

This endpoint does not accept a JSON body.

Response example

{
  "status": "ok",
  "version": "v1",
  "time": "2026-04-05T12:00:00.000Z",
  "context": {
    "repairShopId": "shop_123",
    "keyId": "key_123",
    "keyName": "WooCommerce sync",
    "scopes": [
      "repairs.read",
      "repairs.write",
      "products.write"
    ]
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/health

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/me

Get a summary of the authenticated shop profile.

Required scope: parts.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Request example

This endpoint does not accept a JSON body.

Response example

{
  "ok": true,
  "data": {
    "countryCode": "PT",
    "country": "Portugal",
    "companyName": "Loja Exemplo",
    "city": "Lisboa",
    "postalCode": "1000-001",
    "street": "Rua da Revolio 10"
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/me

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.

Technical catalog

Query the catalog that supports public and operational flows: brands, categories, models, fault types, statuses, and components.

GET/api/public/v1/catalog/brands

List active catalog brands.

Required scope: repairs.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Query Parameters:

limit=100 max 200offset=0search=name

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "brand_apple",
      "name": "Apple",
      "logo": "https://cdn.revolio.io/brands/apple.svg"
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/catalog/brands?limit=100&offset=0

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/catalog/categories

List active catalog categories.

Required scope: repairs.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Query Parameters:

limit=100 max 200offset=0search=name

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "cat_phone",
      "name": "Smartphones",
      "description": "Telemoveis e smartphones",
      "image": null
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/catalog/categories?limit=100&offset=0

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/catalog/component-types

List component types used by the parts filters.

Required scope: parts.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Query Parameters:

limit=100 max 200offset=0search=name

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "component_screen",
      "name": "Ecra",
      "icon": "monitor",
      "color": "#0F766E"
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/catalog/component-types?limit=100&offset=0

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/catalog/device-models

List device models by brand, category, or search.

Required scope: repairs.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Query Parameters:

limit=100 max 200offset=0id=deviceModelIdsearch=namebrandId=brand_applecategoryId=cat_phone

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "dm_iphone_14_pro",
      "name": "iPhone 14 Pro",
      "releaseYear": 2022,
      "image": "https://cdn.revolio.io/device-models/iphone-14-pro.png",
      "brand": {
        "id": "brand_apple",
        "name": "Apple"
      },
      "category": {
        "id": "cat_phone",
        "name": "Smartphones"
      }
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/catalog/device-models?limit=100&offset=0

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/catalog/problem-types

Get fault types to power quote and creation flows.

Required scope: repairs.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Query Parameters:

limit=100 max 200offset=0id=problemTypeIdsearch=name

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "problem_screen",
      "name": "Ecra partido",
      "description": "Substituicao de ecra ou vidro",
      "icon": "smartphone",
      "categoryIds": [
        "cat_phone"
      ],
      "mappingTags": [
        "screen",
        "display"
      ]
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/catalog/problem-types?limit=100&offset=0

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/catalog/repair-statuses

List all supported repair statuses.

Required scope: repairs.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    "PENDING_PAYMENT",
    "PAYMENT_FAILED",
    "PAID",
    "CONFIRMED",
    "IN_REPAIR",
    "COMPLETED",
    "DELIVERED"
  ]
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/catalog/repair-statuses

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.

Repairs and operations

The full operational repair layer: listing, creation, detail, timeline, items, services, messages, payments, and status changes.

GET/api/public/v1/repairs

List repairs for your shop. Supports pagination and filtering.

Required scope: repairs.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Query Parameters:

limit=20 max 100offset=0status=PENDING_PAYMENTtrackingCode=REP-ABC123

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "repair_123",
      "trackingCode": "REP-ABC123",
      "status": "PENDING_PAYMENT",
      "customerName": "Joao Silva",
      "customerPhone": "+351912345678",
      "deviceDescription": "iPhone 14 Pro",
      "description": "Ecra partido",
      "estimatedPrice": 129.9,
      "finalPrice": 129.9,
      "createdAt": "2026-04-05T12:00:00.000Z",
      "updatedAt": "2026-04-05T12:00:00.000Z",
      "completedDate": null,
      "deliveredAt": null,
      "device": {
        "id": "dm_iphone_14_pro",
        "name": "iPhone 14 Pro",
        "brand": {
          "id": "brand_apple",
          "name": "Apple"
        }
      },
      "problemType": {
        "id": "problem_screen",
        "name": "Ecra partido"
      }
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/repairs?limit=20&offset=0

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
POST/api/public/v1/repairs

Create a repair (WooCommerce native checkout).

Required scope: repairs.writeAuth via API key
Expected success: 200Possible error: 400Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Request example

{
  "customer": {
    "name": "Joao Silva",
    "email": "joao@example.com",
    "phone": "+351912345678",
    "city": "Lisboa",
    "postalCode": "1000-001",
    "country": "PT"
  },
  "device": {
    "deviceModelId": "dm_iphone_14_pro",
    "description": "iPhone 14 Pro 128GB"
  },
  "imei": "490154203237518",
  "services": [
    {
      "problemTypeId": "problem_screen",
      "description": "Substituicao de ecra",
      "price": 129.9,
      "estimatedTime": 60
    }
  ],
  "deliveryMethod": "STORE_PICKUP",
  "description": "Cliente deixou o equipamento no balcao",
  "external": {
    "source": "woocommerce",
    "orderId": "WC-1001"
  }
}

Response example

{
  "data": {
    "repairId": "repair_123",
    "trackingCode": "REP-ABC123",
    "total": 129.9,
    "currency": "EUR",
    "status": "PENDING_PAYMENT"
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/repairs

Editable JSON body

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
POST/api/public/v1/repairs/quote

Get pricing quote for repair services.

Required scope: pricing.readAuth via API key
Expected success: 200Possible error: 400Possible error: 401Possible error: 403Possible error: 404Possible error: 429Possible error: 500

Request example

{
  "services": [
    {
      "problemTypeId": "problem_screen",
      "deviceModelId": "dm_iphone_14_pro"
    }
  ]
}

Response example

{
  "data": {
    "currency": "EUR",
    "total": 129.9,
    "lines": [
      {
        "problemTypeId": "problem_screen",
        "repairShopPriceId": "price_123",
        "basePrice": 129.9,
        "hasVariants": false,
        "variants": [],
        "selectedVariantId": null,
        "resolvedPrice": 129.9,
        "estimatedTime": 60,
        "warrantyMonths": 6
      }
    ]
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/repairs/quote

Editable JSON body

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/repairs/{id}

Get the full detail of a repair.

Required scope: repairs.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 404Possible error: 429Possible error: 500

Path params

id=repairId

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": {
    "id": "repair_123",
    "trackingCode": "REP-ABC123",
    "status": "PENDING_PAYMENT",
    "priority": "NORMAL",
    "customer": {
      "name": "Joao Silva",
      "phone": "+351912345678",
      "email": "joao@example.com"
    },
    "device": {
      "id": "dm_iphone_14_pro",
      "name": "iPhone 14 Pro",
      "brand": {
        "id": "brand_apple",
        "name": "Apple"
      },
      "description": "iPhone 14 Pro 128GB"
    },
    "problemType": {
      "id": "problem_screen",
      "name": "Ecra partido"
    },
    "description": "Cliente deixou o equipamento no balcao",
    "internalNotes": null,
    "pricing": {
      "estimated": 129.9,
      "final": 129.9,
      "paid": 0
    },
    "parts": [
      {
        "id": "repair_part_1",
        "name": "Ecra OLED",
        "quantity": 1,
        "unitPrice": 79.9,
        "totalPrice": 79.9
      }
    ],
    "dates": {
      "created": "2026-04-05T12:00:00.000Z",
      "updated": "2026-04-05T12:00:00.000Z",
      "estimatedCompletion": null,
      "completed": null,
      "delivered": null
    },
    "statusHistory": [
      {
        "id": "hist_1",
        "status": "PENDING_PAYMENT",
        "notes": "Created via Public API",
        "timestamp": "2026-04-05T12:00:00.000Z"
      }
    ]
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

/api/public/v1/repairs/{id}

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
POST/api/public/v1/repairs/{id}/status

Update repair status and register operational notes.

Required scope: repairs.writeAuth via API key
Expected success: 200Possible error: 400Possible error: 401Possible error: 403Possible error: 404Possible error: 429Possible error: 500

Path params

id=repairId

Request example

{
  "status": "IN_REPAIR",
  "notes": "Equipamento em bancada"
}

Response example

{
  "data": {
    "id": "repair_123",
    "status": "IN_REPAIR"
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

/api/public/v1/repairs/{id}/status

Editable JSON body

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/repairs/{id}/items

List items attached to a repair.

Required scope: repairs.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 404Possible error: 429Possible error: 500

Path params

id=repairId

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "repair_item_1",
      "name": "Ecra OLED",
      "description": "Ecra premium",
      "quantity": 1,
      "price": 79.9,
      "createdAt": "2026-04-05T12:05:00.000Z",
      "updatedAt": "2026-04-05T12:05:00.000Z",
      "part": {
        "id": "part_1",
        "sku": "SCR-IPH14PRO",
        "name": "Ecra OLED"
      }
    }
  ]
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

/api/public/v1/repairs/{id}/items

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/repairs/{id}/services

List services attached to a repair.

Required scope: repairs.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 404Possible error: 429Possible error: 500

Path params

id=repairId

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "service_1",
      "description": "Substituicao de ecra",
      "price": 129.9,
      "estimatedTime": 60,
      "sortOrder": 0,
      "createdAt": "2026-04-05T12:00:00.000Z",
      "updatedAt": "2026-04-05T12:00:00.000Z",
      "problemType": {
        "id": "problem_screen",
        "name": "Ecra partido"
      },
      "selectedVariant": null,
      "selectedSparePart": null,
      "supplier": null
    }
  ]
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

/api/public/v1/repairs/{id}/services

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/repairs/{id}/messages

List messages in a repair thread.

Required scope: messages.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 404Possible error: 429Possible error: 500

Path params

id=repairId

Query Parameters:

limit=50 max 100offset=0

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "msg_1",
      "message": "A reparacao ja entrou em bancada.",
      "createdAt": "2026-04-05T13:00:00.000Z",
      "updatedAt": "2026-04-05T13:00:00.000Z",
      "sender": {
        "id": "shop_123",
        "name": "Loja Exemplo",
        "email": "loja@example.com",
        "role": "REPAIR_SHOP"
      }
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 50,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

/api/public/v1/repairs/{id}/messages

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
POST/api/public/v1/repairs/{id}/messages

Send a message on a repair thread.

Required scope: messages.writeAuth via API key
Expected success: 200Possible error: 400Possible error: 401Possible error: 403Possible error: 404Possible error: 429Possible error: 500

Path params

id=repairId

Request example

{
  "message": "A reparacao ja entrou em bancada."
}

Response example

{
  "data": {
    "id": "msg_1",
    "message": "A reparacao ja entrou em bancada.",
    "createdAt": "2026-04-05T13:00:00.000Z",
    "updatedAt": "2026-04-05T13:00:00.000Z"
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

/api/public/v1/repairs/{id}/messages

Editable JSON body

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/repairs/{id}/payments

List payments for a repair.

Required scope: payments.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 404Possible error: 429Possible error: 500

Path params

id=repairId

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "payment_1",
      "amount": 129.9,
      "currency": "eur",
      "status": "COMPLETED",
      "method": "woocommerce",
      "paymentMethodType": "card",
      "paymentMethodDetails": {
        "orderId": "WC-1001"
      },
      "platformFee": null,
      "shopAmount": null,
      "failureReason": null,
      "createdAt": "2026-04-05T14:00:00.000Z",
      "updatedAt": "2026-04-05T14:00:00.000Z",
      "releasedAt": null
    }
  ]
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

/api/public/v1/repairs/{id}/payments

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
POST/api/public/v1/repairs/{id}/payments

Register a payment for a repair.

Required scope: payments.writeAuth via API key
Expected success: 200Possible error: 400Possible error: 401Possible error: 403Possible error: 404Possible error: 429Possible error: 500

Path params

id=repairId

Request example

{
  "amount": 129.9,
  "currency": "EUR",
  "status": "COMPLETED",
  "method": "woocommerce",
  "paymentMethodType": "card",
  "details": {
    "orderId": "WC-1001"
  }
}

Response example

{
  "data": {
    "id": "payment_1",
    "amount": 129.9,
    "currency": "eur",
    "status": "COMPLETED",
    "method": "woocommerce",
    "createdAt": "2026-04-05T14:00:00.000Z",
    "repair": {
      "id": "repair_123",
      "status": "PAID"
    }
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

/api/public/v1/repairs/{id}/payments

Editable JSON body

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/repairs/{id}/events

Get the timeline of events for a repair.

Required scope: repairs.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Path params

id=repairId

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "hist_1",
      "type": "status_changed",
      "status": "IN_REPAIR",
      "notes": "Equipamento em bancada",
      "updatedBy": "shop_123",
      "updatedByType": "REPAIR_SHOP",
      "employee": null,
      "createdAt": "2026-04-05T14:10:00.000Z"
    }
  ]
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

/api/public/v1/repairs/{id}/events

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.

Customers and analytics

Read customer relationship data and aggregated operational indicators without leaving the public API channel.

GET/api/public/v1/customers

List the shop's customers with search, repair count, and last activity.

Required scope: customers.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Query Parameters:

limit=20 max 100offset=0search=name|email|phone

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "customer_1",
      "name": "Joao Silva",
      "email": "joao@example.com",
      "phone": "+351912345678",
      "nif": "123456789",
      "address": "Rua da Revolio 10",
      "city": "Lisboa",
      "postalCode": "1000-001",
      "country": "PT",
      "repairsCount": 3,
      "lastRepairAt": "2026-04-05T12:00:00.000Z"
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/customers?limit=20&offset=0

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/customers/{id}

Get customer detail plus recent repairs.

Required scope: customers.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 404Possible error: 429Possible error: 500

Path params

id=customerId

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": {
    "id": "customer_1",
    "name": "Joao Silva",
    "email": "joao@example.com",
    "phone": "+351912345678",
    "nif": "123456789",
    "address": "Rua da Revolio 10",
    "city": "Lisboa",
    "postalCode": "1000-001",
    "country": "PT",
    "repairsCount": 3,
    "recentRepairs": [
      {
        "id": "repair_123",
        "trackingCode": "REP-ABC123",
        "status": "PENDING_PAYMENT",
        "deviceDescription": "iPhone 14 Pro",
        "estimatedPrice": 129.9,
        "finalPrice": 129.9,
        "createdAt": "2026-04-05T12:00:00.000Z"
      }
    ],
    "createdAt": "2025-10-12T09:00:00.000Z",
    "updatedAt": "2026-04-05T12:00:00.000Z"
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

/api/public/v1/customers/{id}

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/stats

Get aggregated shop totals for repairs, customers, and revenue.

Required scope: repairs.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": {
    "repairs": {
      "total": 340,
      "thisMonth": 25,
      "lastMonth": 21,
      "byStatus": {
        "pending": 9,
        "inProgress": 7,
        "completed": 17
      }
    },
    "customers": {
      "total": 210
    },
    "revenue": {
      "total": 48210.5,
      "thisMonth": 3290.2
    },
    "generatedAt": "2026-04-05T12:00:00.000Z"
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/stats

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/analytics/repairs

Get aggregated repair analytics for a date range.

Required scope: repairs.readAuth via API key
Expected success: 200Possible error: 400Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Query Parameters:

from=ISO dateto=ISO date

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": {
    "range": {
      "from": "2026-03-01T00:00:00.000Z",
      "to": "2026-03-31T23:59:59.999Z"
    },
    "repairs": {
      "created": 25,
      "completed": 18,
      "byStatus": {
        "PAID": 4,
        "IN_REPAIR": 7,
        "COMPLETED": 10
      },
      "avgCompletionDays": 2.4
    },
    "customers": {
      "unique": 21
    },
    "revenue": {
      "total": 3290.2
    },
    "series": {
      "dailyCreatedRepairs": [
        {
          "date": "2026-03-01",
          "count": 2
        },
        {
          "date": "2026-03-02",
          "count": 1
        }
      ]
    }
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/analytics/repairs

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.

Parts, offers and suppliers

There are two parts layers in the API: the legacy `/parts` list and the expanded `/spare-parts` catalog with shipping, ordering, and offer comparison.

GET/api/public/v1/parts

List the legacy parts layer.

Required scope: parts.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Query Parameters:

limit=20 max 100offset=0search=name|skubrandId=brand_appledeviceId=device_123

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "part_1",
      "sku": "SCR-IPH14PRO",
      "name": "Ecra OLED",
      "description": "Ecra premium",
      "category": "Displays",
      "price": 79.9,
      "stock": 12,
      "images": [
        "https://cdn.revolio.io/parts/scr-iph14pro.png"
      ],
      "brand": {
        "id": "brand_apple",
        "name": "Apple"
      },
      "device": {
        "id": "device_123",
        "name": "iPhone 14 Pro"
      },
      "createdAt": "2026-04-05T12:00:00.000Z",
      "updatedAt": "2026-04-05T12:00:00.000Z"
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/parts?limit=20&offset=0

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/spare-parts

List parts with filters for brand, device, category, component, and free-text search.

Required scope: parts.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Query Parameters:

limit=20 max 100offset=0search=name|sku|descriptionbrandId=brand_appledeviceId=device_123categoryId=cat_phonecomponentTypeId=component_screensortBy=price_asc

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "spare_part_1",
      "sku": "SCR-IPH14PRO",
      "ean": "1234567890123",
      "name": "Ecra OLED",
      "description": "Ecra premium",
      "price": 74.9,
      "originalPrice": 79.9,
      "stock": 12,
      "images": [
        "https://cdn.revolio.io/parts/scr-iph14pro.png"
      ],
      "availability": true,
      "deliveryTime": 1,
      "category": {
        "id": "cat_phone",
        "name": "Smartphones"
      },
      "brand": {
        "id": "brand_apple",
        "name": "Apple",
        "logo": "https://cdn.revolio.io/brands/apple.svg"
      },
      "device": {
        "id": "dm_iphone_14_pro",
        "name": "iPhone 14 Pro",
        "image": "https://cdn.revolio.io/device-models/iphone-14-pro.png"
      },
      "componentType": {
        "id": "component_screen",
        "name": "Ecra"
      },
      "compatibility": [
        "iPhone 14 Pro"
      ],
      "createdAt": "2026-04-05T12:00:00.000Z",
      "offers": [
        {
          "source": "SPARE_PART",
          "partId": "spare_part_1",
          "supplierName": "Revolio",
          "isOfficialSupplier": true,
          "price": 79.9,
          "stock": 12,
          "availability": true,
          "deliveryTime": 1
        },
        {
          "source": "SUPPLIER_PRODUCT",
          "supplierProductId": "sup_prod_1",
          "supplierId": "supplier_1",
          "supplierName": "Distribuidor X",
          "supplierLogo": null,
          "isOfficialSupplier": false,
          "price": 74.9,
          "stock": 5,
          "availability": true,
          "deliveryTime": 2
        }
      ]
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/spare-parts?limit=20&offset=0

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
POST/api/public/v1/spare-parts/order

Create a parts order with stock validation, tax, and final total.

Required scope: parts.read + orders.writeAuth via API key
Expected success: 200Possible error: 400Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Request example

{
  "items": [
    {
      "partId": "spare_part_1",
      "quantity": 1
    }
  ],
  "notes": "Pedido para bancada 3"
}

Response example

{
  "data": {
    "id": "sp_order_1",
    "orderNumber": "SP1712323123ABCD",
    "status": "PENDING",
    "items": [
      {
        "id": "item_1",
        "name": "Ecra OLED",
        "sku": "SCR-IPH14PRO",
        "quantity": 1,
        "price": 79.9,
        "totalPrice": 79.9
      }
    ],
    "shippingCost": 5.5,
    "tax": 19.66,
    "total": 105.06,
    "currency": "EUR",
    "createdAt": "2026-04-05T15:00:00.000Z"
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/spare-parts/order

Editable JSON body

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
POST/api/public/v1/spare-parts/shipping

Calculate parts shipping cost before placing the order.

Required scope: parts.readAuth via API key
Expected success: 200Possible error: 400Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Request example

{
  "items": [
    {
      "partId": "spare_part_1",
      "quantity": 1
    }
  ]
}

Response example

{
  "ok": true,
  "data": {
    "shippingCost": 5.5,
    "breakdown": [
      {
        "supplierId": "REVOLIO",
        "cost": 5.5
      }
    ]
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/spare-parts/shipping

Editable JSON body

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
GET/api/public/v1/suppliers

List approved suppliers and filter them by search.

Required scope: suppliers.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Query Parameters:

limit=20 max 100offset=0search=name

Request example

This endpoint does not accept a JSON body.

Response example

{
  "data": [
    {
      "id": "supplier_1",
      "name": "Distribuidor X",
      "email": "comercial@distribuidorx.pt",
      "phone": "+351210000000",
      "website": "https://distribuidorx.pt",
      "taxId": "PT123456789",
      "address": "Av. Central 20",
      "city": "Porto",
      "postalCode": "4000-100",
      "country": "PT",
      "contactPerson": "Ana Costa",
      "paymentTerms": "30 dias",
      "rating": 4.8,
      "isReparia": false,
      "isActive": true,
      "createdAt": "2025-11-10T10:00:00.000Z",
      "updatedAt": "2026-04-05T11:00:00.000Z"
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0,
    "hasMore": false
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/suppliers?limit=20&offset=0

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.

WooCommerce and sync

Endpoints to connect a WooCommerce installation, sync customers, orders, and products, and promote scopes without reinstalling the key.

GET/api/public/v1/woocommerce/capabilities

Inspect what the current WooCommerce installation can sync with your current key.

Required scope: products.readAuth via API key
Expected success: 200Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Request example

This endpoint does not accept a JSON body.

Response example

{
  "ok": true,
  "data": {
    "repairShopId": "shop_123",
    "siteUrl": "https://lojaexemplo.pt",
    "integration": {
      "appId": "woocommerce",
      "installationId": "install_1",
      "status": "ACTIVE"
    },
    "apps": {
      "inventoryManager": true
    }
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/woocommerce/capabilities

Editable JSON body

This endpoint does not accept a JSON body.

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
POST/api/public/v1/woocommerce/connect

Connect a WooCommerce installation, generate credentials, and prepare sync webhooks.

Auth via email and password
Expected success: 200Possible error: 400Possible error: 401Possible error: 402Possible error: 403Possible error: 429Possible error: 500

Request example

{
  "email": "owner@lojaexemplo.pt",
  "password": "password-super-segura",
  "siteUrl": "https://lojaexemplo.pt",
  "installationName": "Woo principal"
}

Response example

{
  "ok": true,
  "data": {
    "installationId": "install_1",
    "webhookSecret": "whsec_xxxxxxxxxxxxxxxxx",
    "publicApiKey": {
      "token": "rvl_abcd_xxxxxxxxxxxxxxxxxxxxxx",
      "keyName": "WooCommerce",
      "scopes": [
        "repairs.read",
        "repairs.write",
        "customers.read",
        "products.write"
      ]
    }
  }
}

Try it out

This endpoint uses credentials in the body and does not send an API key in the header.

Executed URL

https://api.revolio.io/api/public/v1/woocommerce/connect

Editable JSON body

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
POST/api/public/v1/woocommerce/customers/upsert

Create or update customers coming from WooCommerce.

Required scope: customers.writeAuth via API key
Expected success: 200Possible error: 400Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Request example

{
  "siteUrl": "https://lojaexemplo.pt",
  "wooCustomerId": 501,
  "email": "cliente@example.com",
  "name": "Joao Silva",
  "phone": "+351912345678",
  "city": "Lisboa",
  "postalCode": "1000-001",
  "country": "PT"
}

Response example

{
  "ok": true,
  "data": {
    "revolioCustomerId": "customer_1"
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/woocommerce/customers/upsert

Editable JSON body

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
POST/api/public/v1/woocommerce/orders/upsert

Create or update orders coming from WooCommerce.

Required scope: orders.writeAuth via API key
Expected success: 200Possible error: 400Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Request example

{
  "siteUrl": "https://lojaexemplo.pt",
  "wooOrderId": 1001,
  "wooOrderNumber": "1001",
  "status": "processing",
  "customer": {
    "name": "Joao Silva",
    "email": "joao@example.com",
    "phone": "+351912345678",
    "nif": "123456789"
  },
  "currency": "EUR",
  "items": [
    {
      "name": "Ecra OLED",
      "sku": "SCR-IPH14PRO",
      "quantity": 1,
      "unitPrice": 79.9,
      "taxRate": 23
    }
  ]
}

Response example

{
  "ok": true,
  "data": {
    "posOrderId": "pos_order_1",
    "status": "PAID"
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/woocommerce/orders/upsert

Editable JSON body

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
POST/api/public/v1/woocommerce/products/upsert

Create or update products coming from WooCommerce.

Required scope: products.writeAuth via API key
Expected success: 200Possible error: 400Possible error: 401Possible error: 403Possible error: 429Possible error: 500

Request example

{
  "siteUrl": "https://lojaexemplo.pt",
  "wooProductId": 2001,
  "sku": "SCR-IPH14PRO",
  "name": "Ecra OLED",
  "description": "Ecra premium",
  "salePrice": 79.9,
  "stock": 12,
  "images": [
    "https://lojaexemplo.pt/wp-content/uploads/scr-iph14pro.png"
  ]
}

Response example

{
  "ok": true,
  "data": {
    "inventoryProductId": "inventory_1",
    "marketplaceProductId": "marketplace_1"
  }
}

Try it out

This request uses the authentication configuration defined at the top of the explorer.

Executed URL

https://api.revolio.io/api/public/v1/woocommerce/products/upsert

Editable JSON body

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.
POST/api/public/v1/woocommerce/upgrade-scopes

Promote an existing key with the scopes required by WooCommerce.

Auth via email and password
Expected success: 200Possible error: 400Possible error: 401Possible error: 402Possible error: 403Possible error: 404Possible error: 429Possible error: 500

Request example

{
  "email": "owner@lojaexemplo.pt",
  "password": "password-super-segura",
  "apiKey": "rvl_abcd_xxxxxxxxxxxxxxxxxxxxxx"
}

Response example

{
  "ok": true,
  "upgraded": true,
  "added": [
    "orders.write",
    "products.write"
  ],
  "scopes": [
    "repairs.read",
    "repairs.write",
    "orders.write",
    "products.write"
  ]
}

Try it out

This endpoint uses credentials in the body and does not send an API key in the header.

Executed URL

https://api.revolio.io/api/public/v1/woocommerce/upgrade-scopes

Editable JSON body

Live response

Run the request in this card to validate the real status, timing, and response body.

No request has been executed for this endpoint yet.

Governance

Access, artifacts, and support

The critical part of this API is not memorizing paths: it is controlling scopes, separating keys by system, and knowing when an integration needs technical support.

Scopes e principio do menor privilegio

Use least privilege: enable only the scopes your integration needs and keep separate keys per system or environment.

customers.readcustomers.writemessages.readmessages.writeorders.writeparts.readpayments.readpayments.writepricing.readproducts.readproducts.writerepairs.readrepairs.writesuppliers.read

Default keys start in a more conservative operational-read profile. If you need write access or deeper sync flows, adjust the scopes in the dashboard.

Artefactos e pontos de apoio

Keys are managed in the shop dashboard. If you need to adjust scopes, validate your integration, or discuss a specific flow, use the links below.

Changelog

Recent public contract changes

If you plan to integrate write flows, do not rely only on the date at the top of the page. Use this list to understand what changed recently in the public surface.

April 2026

OpenAPI and Postman generated from the current source of truth

Public artifacts are now generated from the same base that powers the reference on this page.

Need credentials or help with scopes?

Generate your key, validate `/health`, and talk to us if you need help mapping scopes, payloads, or a specific integration flow.