Youbega Public API

RESTful API for managing products, locations, shipping methods, and orders

🔐 Authentication Required
All endpoints require the X-Api-Key header. View details →
▼ Click to expand

🔐 Authentication

API Key Authentication

All endpoints require authentication using an API key. You must include your API key in the request headers:

Header Name:
X-Api-Key

Example Request:

GET /products HTTP/1.1
Host: api.youbega.com
X-Api-Key: your-api-key-here

Content type per endpoint:

GET endpoints have no request body — do not send a Content-Type header.

POST /locations and POST /shippingMethods expect application/json.

POST /products and PUT /products expect multipart/form-data only. Any other content type returns 415 Unsupported Media Type.

⚠️ Important: You need to generate an API key from your account on the Youbega website before using this API.

How to get your API key:
  1. Log in to your Youbega account
  2. Navigate to your account settings
  3. Go to the "API Access" section
  4. Generate a new API key
  5. Copy and securely store your API key

Available Endpoints

Select an endpoint from the navigation menu on the left to view detailed documentation including request parameters, response formats, and examples.

GET/productsAuth Required

Description

Retrieves a list of products.

Authentication

This endpoint requires authentication via API key. Include your API key in the request headers.

Request Body

None

Response

JSON array of products.

[
  {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "name": "Product Name",
    "description": "Product description",
    "basePrice": 99.99,
    "maxPrice": 149.99,
    "quantity": 100,
    "currencyId": 1,
    "listingTypeId": 1,
    "priceTypeId": 1,
    "personalPickup": true,
    "categoriesIds": [1, 2, 3],
    "countryCodes": ["US", "UK"],
    "locationsIds": ["3fa85f64-5717-4562-b3fc-2c963f66afa6"],
    "shippingMethodsIds": ["3fa85f64-5717-4562-b3fc-2c963f66afa6"],
    "tags": ["new", "sale"],
    "parameters": [
      {
        "id": 1,
        "name": "Color",
        "value": "Red"
      }
    ]
  }
]

POST/productsAuth Required

Description

Add a new product to the system.

Authentication

This endpoint requires authentication via API key. Include your API key in the request headers.

Request Body

This endpoint accepts multipart/form-data only, because it carries file uploads. Sending application/json or application/x-www-form-urlencoded returns 415 Unsupported Media Type.

Name                    string    Product title.
Description             string    Product description. Always send it — an empty string is allowed.
BasePrice               decimal   Dot as decimal separator, e.g. 19.99
MaxPrice                decimal   Dot as decimal separator, e.g. 100.00
CurrencyId              integer
ListingTypeId           integer
PriceTypeId             integer
Quantity                integer
PersonalPickup          boolean   true / false
ItemCondition           enum      New | LikeNew | Used   (or 1 | 2 | 3)
TermsAndConditions      string    Always send it — an empty string is allowed.
ManufacturerInfo        string    Always send it — an empty string is allowed.
ResponsiblePersonInfo   string    Always send it — an empty string is allowed.
CategoriesIds[i]        integer   Max 3 ids. Each subsequent id is a nested category.
CountryCodes[i]         string    e.g. US, UK
LocationsIds[i]         guid
ShippingMethodsIds[i]   guid
Tags[i]                 string
PaymentCapabilities[i]  enum      Cash | Card | BankTransfer   (or 0 | 1 | 2)
Parameters[i].Name      string
Parameters[i].Value     string
AdvertisementFiles      file      Product photos. Repeat the field to send several files.
GpsrFiles               file      GPSR documents. Repeat the field to send several files.

Notes:

Do not set the Content-Type header by hand. Postman, Insomnia, curl and every HTTP client add multipart/form-data together with the required boundary on their own. A manually added Content-Type: application/json overrides it and the request fails with 415 Unsupported Media Type before any field is read — this is by far the most common cause of 415 on this endpoint.

• Field names are case-sensitive and unknown names are ignored silently. Mind the file fields: AdvertisementFiles and GpsrFiles (Gpsr, not Gspr).

• Arrays are sent either with an index — Tags[0], Tags[1] — or by repeating the same field name. A single comma-separated value such as CategoriesIds=1,2,3 is not supported and returns 400.

• Objects inside arrays use dot notation: Parameters[0].Name, Parameters[0].Value. Bracket notation Parameters[0][Name] does not bind — the request succeeds but the parameters are lost.

• Enum fields accept either the name or the numeric value. Any other value returns 400.

Description, TermsAndConditions, ManufacturerInfo and ResponsiblePersonInfo must be present in the request; omitting them returns 400.

Example Request

curl -X POST https://api.youbega.com/products \
  -H "X-Api-Key: your-api-key-here" \
  -F "Name=My product" \
  -F "Description=Product description" \
  -F "BasePrice=19.99" \
  -F "MaxPrice=100.00" \
  -F "CurrencyId=1" \
  -F "ListingTypeId=1" \
  -F "PriceTypeId=1" \
  -F "Quantity=10" \
  -F "PersonalPickup=false" \
  -F "ItemCondition=New" \
  -F "TermsAndConditions=" \
  -F "ManufacturerInfo=" \
  -F "ResponsiblePersonInfo=" \
  -F "CategoriesIds[0]=1" \
  -F "CategoriesIds[1]=2" \
  -F "CountryCodes[0]=US" \
  -F "LocationsIds[0]=00000000-0000-0000-0000-000000000000" \
  -F "ShippingMethodsIds[0]=00000000-0000-0000-0000-000000000000" \
  -F "Tags[0]=new" \
  -F "PaymentCapabilities[0]=Card" \
  -F "Parameters[0].Name=Color" \
  -F "Parameters[0].Value=Red" \
  -F "AdvertisementFiles=@photo.png;type=image/png" \
  -F "GpsrFiles=@safety.pdf;type=application/pdf"

Response

Returns the newly created ProductId.

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

PUT/productsAuth Required

Description

Update an existing product.

Authentication

This endpoint requires authentication via API key. Include your API key in the request headers.

Request Body

This endpoint accepts multipart/form-data only, because it carries file uploads. Sending application/json or application/x-www-form-urlencoded returns 415 Unsupported Media Type.

Id                      guid      Id of the product to update. Required.
Name                    string    Product title.
Description             string    Product description. Always send it — an empty string is allowed.
BasePrice               decimal   Dot as decimal separator, e.g. 19.99
MaxPrice                decimal   Dot as decimal separator, e.g. 100.00
CurrencyId              integer
ListingTypeId           integer
PriceTypeId             integer
Quantity                integer
PersonalPickup          boolean   true / false
ItemCondition           enum      New | LikeNew | Used   (or 1 | 2 | 3)
TermsAndConditions      string    Always send it — an empty string is allowed.
ManufacturerInfo        string    Always send it — an empty string is allowed.
ResponsiblePersonInfo   string    Always send it — an empty string is allowed.
CategoriesIds[i]        integer   Max 3 ids. Each subsequent id is a nested category.
CountryCodes[i]         string    e.g. US, UK
LocationsIds[i]         guid
ShippingMethodsIds[i]   guid
Tags[i]                 string
PaymentCapabilities[i]  enum      Cash | Card | BankTransfer   (or 0 | 1 | 2)
Parameters[i].Id        integer   Id of an existing parameter. Omit it to add a new one.
Parameters[i].Name      string
Parameters[i].Value     string
AdvertisementFiles      file      Product photos. Repeat the field to send several files.
GpsrFiles               file      GPSR documents. Repeat the field to send several files.

Notes:

Do not set the Content-Type header by hand. Postman, Insomnia, curl and every HTTP client add multipart/form-data together with the required boundary on their own. A manually added Content-Type: application/json overrides it and the request fails with 415 Unsupported Media Type before any field is read — this is by far the most common cause of 415 on this endpoint.

• Field names are case-sensitive and unknown names are ignored silently. Mind the file fields: AdvertisementFiles and GpsrFiles (Gpsr, not Gspr).

• Arrays are sent either with an index — Tags[0], Tags[1] — or by repeating the same field name. A single comma-separated value such as CategoriesIds=1,2,3 is not supported and returns 400.

• Objects inside arrays use dot notation: Parameters[0].Name, Parameters[0].Value. Bracket notation Parameters[0][Name] does not bind — the request succeeds but the parameters are lost.

• Enum fields accept either the name or the numeric value. Any other value returns 400.

Description, TermsAndConditions, ManufacturerInfo and ResponsiblePersonInfo must be present in the request; omitting them returns 400.

Response

Returns the updated ProductId.

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

GET/products/categoriesAuth Required

Description

Retrieves a hierarchical list of product categories.

Authentication

This endpoint requires authentication via API key. Include your API key in the request headers.

Request Body

None

Response

JSON array of categories with nested subcategories.

[
  {
    "id": "1",
    "categoryCode": "string",
    "subCategories": [
      {
        "id": "2",
        "categoryCode": "string",
        "subCategories": [...more subcategories]
      }
    ]
  }
]

GET/locationsAuth Required

Description

Retrieves a list of locations.

Authentication

This endpoint requires authentication via API key. Include your API key in the request headers.

Response

JSON array of locations.

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "address": "string",
    "countryCode": "string"
  }
]

POST/locationsAuth Required

Description

Creates a new location.

Authentication

This endpoint requires authentication via API key. Include your API key in the request headers.

Request Body

{
  "name": "string",
  "address": "string",
  "city": "string",
  "zip": "string"
}

Response

Returns the newly created location Id.

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

GET/shippingMethodsAuth Required

Description

Retrieves a list of shipping methods for the authenticated user.

Authentication

This endpoint requires authentication via API key. Include your API key in the request headers.

Request Body

None

Response

JSON array of shipping methods associated with the authenticated user.

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "name": "string",
    "description": "string",
    "cost": 0.0,
    "estimatedDeliveryDays": 5
  }
]

POST/shippingMethodsAuth Required

Description

Creates a new shipping method for the authenticated user.

Authentication

This endpoint requires authentication via API key. Include your API key in the request headers.

Request Body

JSON object containing the shipping method details:

{
  "name": "string",
  "description": "string",
  "cost": 0.0,
  "estimatedDeliveryDays": 5,
  "isActive": true
}

Response

Returns the newly created shipping method Id.

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

GET/ordersAuth Required

Description

Retrieves a paginated list of the authenticated seller's orders for synchronization with external systems (ERP, accounting, marketplaces). Each order includes the customer's shipping and invoice addresses, line items, and order totals.

Authentication

This endpoint requires authentication via API key. Include your API key in the request headers.

Query Parameters

page       integer   Zero-based page index.            Default: 0
pageSize   integer   Number of orders per page.        Default: 20
startDate  string    ISO-8601 date-time (optional).    Only orders modified on/after this instant.
endDate    string    ISO-8601 date-time (optional).    Only orders modified on/before this instant.

Notes:

• Use startDate for incremental sync — pass the timestamp of your last successful pull to fetch only changed orders.

• Only orders where the authenticated user is the seller are returned.

Request Body

None

Example Request

GET /orders?page=0&pageSize=20&startDate=2026-01-01T00:00:00Z HTTP/1.1
Host: api.youbega.com
X-Api-Key: your-api-key-here

Response

JSON object with the paginated orders and a total count.

{
  "orders": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "clusteredId": 12345,
      "displayId": "20260115-12345",
      "orderStatus": 3,
      "orderStatusName": "Payment Received",
      "modifiedOn": "2026-01-15T10:30:00+00:00",
      "summarizedPrice": 149.99,
      "currencyId": 1,
      "shippingAddress": {
        "firstName": "John",
        "lastName": "Doe",
        "companyName": null,
        "street": "Main Street",
        "streetNumber": "10",
        "houseNumber": "5",
        "city": "Warsaw",
        "district": null,
        "postalCode": "00-001",
        "province": "Mazowieckie",
        "countryCode": "PL",
        "phoneNumber": "+48123456789",
        "taxpayerNumber": null
      },
      "invoiceAddress": {
        "firstName": "John",
        "lastName": "Doe",
        "companyName": "Doe Ltd.",
        "street": "Main Street",
        "streetNumber": "10",
        "houseNumber": "5",
        "city": "Warsaw",
        "district": null,
        "postalCode": "00-001",
        "province": "Mazowieckie",
        "countryCode": "PL",
        "phoneNumber": "+48123456789",
        "taxpayerNumber": "PL1234567890"
      },
      "items": [
        {
          "productId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "name": "Product Name",
          "urlSlug": "product-name",
          "quantity": 2,
          "pricePerPiece": 74.99,
          "currencyId": 1
        }
      ]
    }
  ],
  "pageNumber": 0,
  "pageSize": 1,
  "totalCount": 137
}

Notes:

shippingAddress and invoiceAddress may be null if the order has no such address.

pageSize in the response reflects the number of orders actually returned on this page; totalCount is the total number of matching orders.

• All orders are returned regardless of status (including unpaid). Use orderStatus / orderStatusName to filter on your side (see the Order Statuses table below).

Order Statuses

The orderStatus field is a numeric code; orderStatusName is its human-readable label.

orderStatus orderStatusName
1Unpaid
2Payment Dispatched
3Payment Received
4Shipped
5Delivered
6Cancelled
7PaymentProcessing
8Refund
9Completed
10Shipping Label Created
11Dispute Opened