Nuvemshop / Tiendanube Orders API

Customer purchases and their lifecycle.

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/nuvemshop-orders-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

nuvemshop-orders-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Nuvemshop / Tiendanube Admin Categories Orders API
  description: 'Store-scoped REST Admin API for the Nuvemshop (Tiendanube) e-commerce platform. This document models a grounded, representative subset of the public API - products, product variants, product images, categories, orders, customers, coupons, webhooks, scripts, and store - as documented at https://tiendanube.github.io/api-documentation/.


    Every path is relative to a per-store base that embeds the store id, for example `https://api.tiendanube.com/2025-03/{store_id}`. The Brazilian mirror `https://api.nuvemshop.com.br/2025-03/{store_id}` serves the same API, and the long-standing `v1` path (`https://api.tiendanube.com/v1/{store_id}`) remains available as the legacy equivalent.


    Authentication is OAuth 2 (authorization code grant). The resulting non-expiring access token is sent in a NON-STANDARD header named `Authentication` with a lowercase `bearer` prefix (`Authentication: bearer ACCESS_TOKEN`) - using `Authorization` or a different case returns 401. Every request must also send a descriptive `User-Agent` header identifying the app and a contact (name/email or URL); omitting it returns 400.


    NOTE ON MODELING: endpoint paths, methods, and the auth/header/rate-limit behavior below are grounded in the live documentation. Request and response body schemas are simplified representative models (marked with additionalProperties) rather than the provider''s full field-level schema.'
  version: 2025-03
  contact:
    name: Nuvemshop / Tiendanube Developers
    url: https://tiendanube.github.io/api-documentation/
  license:
    name: MIT (documentation)
    url: https://github.com/TiendaNube
servers:
- url: https://api.tiendanube.com/2025-03/{store_id}
  description: Tiendanube (Spanish-speaking markets)
  variables:
    store_id:
      default: '0'
      description: The numeric store id (user_id) returned during OAuth authorization.
- url: https://api.nuvemshop.com.br/2025-03/{store_id}
  description: Nuvemshop (Brazil)
  variables:
    store_id:
      default: '0'
      description: The numeric store id (user_id) returned during OAuth authorization.
security:
- authenticationHeader: []
tags:
- name: Orders
  description: Customer purchases and their lifecycle.
paths:
  /orders:
    get:
      operationId: listOrders
      tags:
      - Orders
      summary: List orders
      description: Receive a paginated list of all orders.
      parameters:
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PerPage'
      - name: status
        in: query
        required: false
        description: Filter by order status (e.g. open, closed, cancelled, any).
        schema:
          type: string
      responses:
        '200':
          description: A list of orders.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Order'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
    post:
      operationId: createOrder
      tags:
      - Orders
      summary: Create an order
      description: Create a new order.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderInput'
      responses:
        '201':
          description: The created order.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/ValidationError'
  /orders/{id}:
    parameters:
    - $ref: '#/components/parameters/Id'
    get:
      operationId: getOrder
      tags:
      - Orders
      summary: Get an order
      description: Receive a single order by its id.
      responses:
        '200':
          description: The requested order.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateOrder
      tags:
      - Orders
      summary: Update an order
      description: Change order attributes and/or update status.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderInput'
      responses:
        '200':
          description: The updated order.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /orders/{id}/history/values:
    parameters:
    - $ref: '#/components/parameters/Id'
    get:
      operationId: getOrderValueHistory
      tags:
      - Orders
      summary: Get order value history
      description: Receive the value-alteration history of an order.
      responses:
        '200':
          description: The order value history.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /orders/{id}/history/editions:
    parameters:
    - $ref: '#/components/parameters/Id'
    get:
      operationId: getOrderEditionHistory
      tags:
      - Orders
      summary: Get order edition history
      description: Receive the edition history of an order.
      responses:
        '200':
          description: The order edition history.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /orders/{id}/subscriptions:
    parameters:
    - $ref: '#/components/parameters/Id'
    get:
      operationId: getOrderSubscriptions
      tags:
      - Orders
      summary: Get order subscriptions
      description: Receive the subscriptions associated with an order.
      responses:
        '200':
          description: The order subscriptions.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /orders/{id}/close:
    parameters:
    - $ref: '#/components/parameters/Id'
    post:
      operationId: closeOrder
      tags:
      - Orders
      summary: Close an order
      description: Close an order.
      responses:
        '200':
          description: The closed order.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /orders/{id}/open:
    parameters:
    - $ref: '#/components/parameters/Id'
    post:
      operationId: openOrder
      tags:
      - Orders
      summary: Re-open an order
      description: Re-open a previously closed order.
      responses:
        '200':
          description: The re-opened order.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /orders/{id}/cancel:
    parameters:
    - $ref: '#/components/parameters/Id'
    post:
      operationId: cancelOrder
      tags:
      - Orders
      summary: Cancel an order
      description: Cancel an order.
      responses:
        '200':
          description: The cancelled order.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Customer:
      allOf:
      - type: object
        properties:
          id:
            type: integer
            format: int64
          created_at:
            type: string
            format: date-time
      - $ref: '#/components/schemas/CustomerInput'
    OrderInput:
      type: object
      properties:
        status:
          type: string
          enum:
          - open
          - closed
          - cancelled
        payment_status:
          type: string
        shipping_status:
          type: string
        owner_note:
          type: string
        products:
          type: array
          items:
            type: object
            additionalProperties: true
      additionalProperties: true
    CustomerInput:
      type: object
      properties:
        name:
          type: string
        email:
          type: string
          format: email
        phone:
          type: string
        identification:
          type: string
        note:
          type: string
        addresses:
          type: array
          items:
            type: object
            additionalProperties: true
      additionalProperties: true
    Error:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        description:
          type: string
      additionalProperties: true
    Order:
      allOf:
      - type: object
        properties:
          id:
            type: integer
            format: int64
          number:
            type: integer
          token:
            type: string
          currency:
            type: string
          total:
            type: string
          customer:
            $ref: '#/components/schemas/Customer'
          created_at:
            type: string
            format: date-time
      - $ref: '#/components/schemas/OrderInput'
  parameters:
    Id:
      name: id
      in: path
      required: true
      description: The numeric resource id.
      schema:
        type: integer
        format: int64
    PerPage:
      name: per_page
      in: query
      required: false
      description: Results per page (max 200).
      schema:
        type: integer
        default: 30
        maximum: 200
    Page:
      name: page
      in: query
      required: false
      description: Page number for pagination.
      schema:
        type: integer
        default: 1
  responses:
    ValidationError:
      description: The request payload failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing or malformed `Authentication` header, or invalid token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Too many requests - the per-store leaky bucket overflowed. Inspect the x-rate-limit-limit, x-rate-limit-remaining, and x-rate-limit-reset headers and back off.
      headers:
        x-rate-limit-limit:
          schema:
            type: integer
          description: Total requests the bucket can hold.
        x-rate-limit-remaining:
          schema:
            type: integer
          description: Remaining capacity before the bucket fills.
        x-rate-limit-reset:
          schema:
            type: integer
          description: Milliseconds remaining to completely empty the bucket.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    authenticationHeader:
      type: apiKey
      in: header
      name: Authentication
      description: 'NON-STANDARD auth header. Send the OAuth 2 access token as `Authentication: bearer ACCESS_TOKEN` - the header name must be `Authentication` (not `Authorization`) and the `bearer` prefix must be lowercase, or the API returns 401. A descriptive `User-Agent` header is also required on every request.'