Upload a file to a resource

Upload a file to a resource. This endpoint supports two modes:

Replace the main resource file (no language parameter):
Uploads a new file to replace the existing resource file. The resource's url is updated to point to the new file. You can optionally update other resource fields (name, metadata, etc.) in the same request.

Upload a translated file (?language={lang}):
Uploads a file as a translation of this resource. The main resource file is unchanged. The translated file is stored on the translation record for the specified language. You can pass name in the form data to set the translated title. The uploaded file must have the same extension as the main resource file.

Only document (type=1), image (type=2), and video (type=3) resources support file uploads. URL and dynamic resources will return 403.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
integer
required

Identifier

Query Params
string

Language code for translation file uploads (e.g., es, fr, de). When provided on the upload endpoint, the uploaded file is stored as a translation of the resource rather than replacing the main file.

string

Expand allows you to return additional fields that are not included in the default fields (comma-separated list).

Supported fields:

  • body: Extracted text body (for document resources)
  • keywords: Keywords used for search and GPT indexing
  • mvn_desc: Custom description providing context to GPT about this resource
  • mvn_prompt: Custom prompt/instruction for GPT when using this resource
  • translations: Translated versions of this resource
  • vis_app: Visibility in the mobile app
  • vis_mvn: Visibility to GPT
  • vis_web: Visibility on the web
string

Fields allows you to return a subset of the default fields (comma-separated list).

Supported fields:

  • asset_id: Associated asset ID (if the resource is scoped to a specific asset)
  • dependency: Dependency rules (conditions for when the resource appears)
  • download_url: Direct download URL
  • external_id: Customer's own identifier for this resource
  • guid: Resource GUID
  • id: Resource ID
  • metadata: Resource metadata (JSON)
  • mvn_status: GPT indexing status
  • name: Resource name
  • product_id: Product this resource belongs to
  • roles: Roles with access to this resource
  • status: 0 (inactive) or 1 (active)
  • step_id: Expertise step ID (if the resource is scoped to a specific step)
  • supplier_id: Supplier ID (populated if supplied)
  • tags: Tags
  • type: Resource type (1=document, 2=video, 3=image, 9=dynamic)
  • url: Resource URL
Body Params
string | null

Dynamic step body (Dynamic resources only)

string | null

Dependency filter expression for conditional resource visibility.
Format: "components.{product_id}.{data_dictionary_key} = {value}"
Controls which resources appear based on the user's data dictionary selections.
Example: Show documentation only when the user selects "duron_6__" as their model.

string | null

External ID (max 50 chars)

keywords
array of strings | null
keywords
metadata
object | null

Custom metadata as JSON object (e.g., version info, issue numbers)

string | null

Custom description providing additional context to GPT about this resource.
Provides additional context to the AI when this resource is retrieved during conversations.
This field is user-facing and editable via the web UI.

string | null

Custom prompt injected when this resource is used by GPT.
Controls how the AI should interpret or present information from this resource during conversations.
This field is user-facing and editable via the web UI.

integer | null
enum
Defaults to 0

GPT indexing mode. Controls how this resource is processed for AI-powered search and retrieval.

  • 0: DISABLED - Resource not indexed by GPT
  • 1: INDEX - Index only, no content parsing
  • 2: PARSE - Full content parsing with embeddings (default for documents/videos)

Note: Images and URLs default to DISABLED. Documents and videos default to PARSE.

Allowed:
string

Name

roles
array of integers | null

Array of user role IDs that can view this resource.

Valid role values:

  • 0: User (basic role)
  • 1: Tech (Tier 1)
  • 2: Tech2 (Tier 2)
  • 3: Tech3 (Tier 3)
  • 5: Expert
  • 7: User2
  • 8: User3

Important: Role values 4 and 6 do not exist and will be filtered out if provided.
If omitted, defaults to all roles [0, 1, 2, 3, 5, 7, 8].
Invalid role values are automatically filtered out during validation.

roles
integer
enum
Defaults to 1

Status (0=unpublished/inactive, 1=published/active)

Allowed:
tags
object | null

Resource tags (JSON object)

translations
object

Translations for the resource. Keys are language codes (e.g., 'fr', 'es', 'de').

Two ways to add translations:

  • Metadata only (no file): Use PATCH /resources/{id} with a translations object. Use this when the translation shares the English file (multilingual PDF) or when you only need to set the translated title.
  • With a translated file: Use POST /resources/{id}/upload?language={lang} with the file in a multipart form. This uploads the translated file and stores it on the translation record. You can also pass name in the form data to set the translated title.
integer
enum

Resource type:

  • 0: URL
  • 1: Document (PDF, DOC, etc.)
  • 2: Image (JPG, PNG, etc.)
  • 3: Video (MP4, MOV, etc.)
  • 4: Dynamic (for dynamic resources)
Allowed:
uri

URL

integer
enum
Defaults to 1

Visibility in mobile app (0=hidden, 1=visible)

Allowed:
integer
enum
Defaults to 1

Visibility to GPT chatbot (0=not indexed, 1=indexed for RAG).
When set to 0, this resource will not be used by the AI when answering questions.

Allowed:
integer
enum
Defaults to 1

Visibility on web platform (0=hidden, 1=visible)

Allowed:
file
required

File to upload

Responses

Language
Credentials
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json