# Create subprocessor metadata

URL: /en/docs/api/v1/subprocessors/post
Last Updated: 2026-07-30T21:15:44.972Z

## Description
No description available.

## Available Actions
- Execute POST request
- View request parameters
- View response schema
- Get code examples
- Navigate to related topics
- View step-by-step instructions
- Get best practices

## Content
### POST /api/v1/subprocessors

**Create subprocessor metadata**

Create a subprocessor entry. Badge uploads are performed separately via `/api/v1/subprocessors/{id}/badge`.

**Authentication:** Bearer token (`Authorization: Bearer <token>`)

**Request body** (`application/json`) - required:

- `title` (string, required): Vendor display name
- `location` (string, required): Location of processing
- `description` (string)
- `description_markdown` (string)
- `template` (string)
- `type` (enum: required | optional): Leave unset to omit this field
- `featured` (boolean): Set to true to highlight the vendor on the Trust Center overview tab
- `variant_options` (array of string (uuid)): Variant option IDs to assign to this item (default locale only).

Example (new_vendor):

```json
{
  "title": "Global Email Relay",
  "location": "United States",
  "type": "optional",
  "description": "Transactional email provider.",
  "description_markdown": "Processes customer notification emails. No data stored at rest.",
  "template": "email-template-id",
  "featured": true
}
```

**Responses:**

- `201` - Subprocessor metadata created
  - `success` (boolean)
  - `data` (object)
    - `id` (string): Newly created subprocessor ID
    - `uploadUrls` (object)
      - `badge` (string): Endpoint to upload a badge asset

  Example (created):
  
  ```json
  {
  "success": true,
  "data": {
    "id": "vendor-789",
    "uploadUrls": {
      "badge": "/api/v1/subprocessors/vendor-789/badge"
    }
  }
}
  ```
- `400` - Validation error
  - `error` (string, required): Machine-readable error code
  - `details` (string): Human-readable error details

  Example (validation_error):
  
  ```json
  {
  "error": "validation_error",
  "details": "Missing required field: title"
}
  ```
- `401` - Unauthorized
  - `error` (string, required): Machine-readable error code
  - `details` (string): Human-readable error details

  Example (unauthorized):
  
  ```json
  {
  "error": "unauthorized",
  "details": "Missing or invalid bearer token"
}
  ```
- `500` - Internal server error
  - `error` (string, required): Machine-readable error code
  - `details` (string): Human-readable error details

  Example (server_error):
  
  ```json
  {
  "error": "server_error",
  "details": "Unexpected error occurred"
}
  ```

**Code samples:**

cURL:

```bash
curl -X POST "https://app.orbiqhq.com/api/v1/subprocessors" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Global Email Relay",
    "location": "United States",
    "type": "required",
    "description": "Transactional email provider.",
    "description_markdown": "- Sends password reset emails\n- No data stored at rest",
    "featured": true
  }'
```

JS (fetch):

```javascript
const res = await fetch("https://app.orbiqhq.com/api/v1/subprocessors", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    title: "Global Email Relay",
    location: "United States",
    type: "optional",
    description: "Transactional email provider.",
    description_markdown: "- Sends password reset emails\n- No data stored at rest",
    featured: true
  })
});
const { data } = await res.json();

```

