Nuvemshop / Tiendanube Scripts API

Custom JavaScript injected into the storefront.

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-scripts-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-scripts-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Nuvemshop / Tiendanube Admin Categories Scripts 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: Scripts
  description: Custom JavaScript injected into the storefront.
paths:
  /scripts:
    get:
      operationId: listScripts
      tags:
      - Scripts
      summary: List scripts
      description: Retrieve a list of script-store associations with pagination.
      responses:
        '200':
          description: A list of scripts.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Script'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createScript
      tags:
      - Scripts
      summary: Create a script association
      description: Create a script-store association for a non-autoinstallable script.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScriptInput'
      responses:
        '201':
          description: The created script association.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Script'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/ValidationError'
  /scripts/{id}:
    parameters:
    - $ref: '#/components/parameters/Id'
    get:
      operationId: getScript
      tags:
      - Scripts
      summary: Get a script
      description: Retrieve details for a specific script association by id.
      responses:
        '200':
          description: The requested script association.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Script'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateScript
      tags:
      - Scripts
      summary: Update a script
      description: Modify an existing script-store association.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScriptInput'
      responses:
        '200':
          description: The updated script association.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Script'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteScript
      tags:
      - Scripts
      summary: Delete a script
      description: Remove a script association with the store.
      responses:
        '200':
          description: Deletion confirmation (empty object).
          content:
            application/json:
              schema:
                type: object
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    Id:
      name: id
      in: path
      required: true
      description: The numeric resource id.
      schema:
        type: integer
        format: int64
  schemas:
    Error:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        description:
          type: string
      additionalProperties: true
    ScriptInput:
      type: object
      required:
      - src
      - event
      properties:
        src:
          type: string
          format: uri
          description: URL of the JavaScript file to inject.
        event:
          type: string
          description: When to load the script (e.g. onload).
        where:
          type: string
          description: Where to inject the script (e.g. store, checkout).
      additionalProperties: true
    Script:
      allOf:
      - type: object
        properties:
          id:
            type: integer
            format: int64
      - $ref: '#/components/schemas/ScriptInput'
  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'
  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.'