Update Vimeo Connection
curl --request PUT \
--url https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid} \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"version": 123,
"name": "<string>",
"description": "<string>",
"enabled": true,
"clientIdentifier": "<string>",
"clientSecret": "<string>",
"accessToken": "<string>"
}
'import requests
url = "https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid}"
payload = {
"version": 123,
"name": "<string>",
"description": "<string>",
"enabled": True,
"clientIdentifier": "<string>",
"clientSecret": "<string>",
"accessToken": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
version: 123,
name: '<string>',
description: '<string>',
enabled: true,
clientIdentifier: '<string>',
clientSecret: '<string>',
accessToken: '<string>'
})
};
fetch('https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'version' => 123,
'name' => '<string>',
'description' => '<string>',
'enabled' => true,
'clientIdentifier' => '<string>',
'clientSecret' => '<string>',
'accessToken' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid}"
payload := strings.NewReader("{\n \"version\": 123,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"enabled\": true,\n \"clientIdentifier\": \"<string>\",\n \"clientSecret\": \"<string>\",\n \"accessToken\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid}")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"version\": 123,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"enabled\": true,\n \"clientIdentifier\": \"<string>\",\n \"clientSecret\": \"<string>\",\n \"accessToken\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"version\": 123,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"enabled\": true,\n \"clientIdentifier\": \"<string>\",\n \"clientSecret\": \"<string>\",\n \"accessToken\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"connectionId": "20251222155613307xv0nodhitf9cd0f",
"name": "Updated Vimeo Connection Name",
"description": "Updated description for testing PUT endpoint",
"clientIdentifier": "updated_client_id_456",
"type": "VIMEO",
"enabled": false,
"createdDate": "2025-12-22T15:56:12.309Z",
"updatedDate": "2025-12-22T16:19:16.058Z",
"version": 4
}
{
"code": "INVALID_REQUEST_BODY",
"message": "Request body validation failed.",
"fields": [
{
"name": "version",
"errors": "version is required"
}
]
}
{
"code": "DUPLICATE_CONNECTION",
"message": "Connection with same name or account/region already exist.",
"fields": []
}
{
"message": "Unauthorized"
}
{
"message": "Connection not found"
}
{
"error": {
"code": "INTERNAL_ERROR",
"message": "An unexpected error occurred"
}
}
Vimeo Integration
Update Vimeo Connection
Update an existing Vimeo connection configuration
PUT
/
pictoryapis
/
v1
/
vimeo-connections
/
{connectionid}
Update Vimeo Connection
curl --request PUT \
--url https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid} \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"version": 123,
"name": "<string>",
"description": "<string>",
"enabled": true,
"clientIdentifier": "<string>",
"clientSecret": "<string>",
"accessToken": "<string>"
}
'import requests
url = "https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid}"
payload = {
"version": 123,
"name": "<string>",
"description": "<string>",
"enabled": True,
"clientIdentifier": "<string>",
"clientSecret": "<string>",
"accessToken": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
version: 123,
name: '<string>',
description: '<string>',
enabled: true,
clientIdentifier: '<string>',
clientSecret: '<string>',
accessToken: '<string>'
})
};
fetch('https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'version' => 123,
'name' => '<string>',
'description' => '<string>',
'enabled' => true,
'clientIdentifier' => '<string>',
'clientSecret' => '<string>',
'accessToken' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid}"
payload := strings.NewReader("{\n \"version\": 123,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"enabled\": true,\n \"clientIdentifier\": \"<string>\",\n \"clientSecret\": \"<string>\",\n \"accessToken\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid}")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"version\": 123,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"enabled\": true,\n \"clientIdentifier\": \"<string>\",\n \"clientSecret\": \"<string>\",\n \"accessToken\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"version\": 123,\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"enabled\": true,\n \"clientIdentifier\": \"<string>\",\n \"clientSecret\": \"<string>\",\n \"accessToken\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"connectionId": "20251222155613307xv0nodhitf9cd0f",
"name": "Updated Vimeo Connection Name",
"description": "Updated description for testing PUT endpoint",
"clientIdentifier": "updated_client_id_456",
"type": "VIMEO",
"enabled": false,
"createdDate": "2025-12-22T15:56:12.309Z",
"updatedDate": "2025-12-22T16:19:16.058Z",
"version": 4
}
{
"code": "INVALID_REQUEST_BODY",
"message": "Request body validation failed.",
"fields": [
{
"name": "version",
"errors": "version is required"
}
]
}
{
"code": "DUPLICATE_CONNECTION",
"message": "Connection with same name or account/region already exist.",
"fields": []
}
{
"message": "Unauthorized"
}
{
"message": "Connection not found"
}
{
"error": {
"code": "INTERNAL_ERROR",
"message": "An unexpected error occurred"
}
}
Overview
Update an existing Vimeo connection configuration including name, description, enabled status, and authentication credentials. The version number must be provided to prevent concurrent modification conflicts. When updating the connection name, it must remain unique within your account.You need a valid API key to use this endpoint. Get your API key from the API Access page in your Pictory dashboard.
API Endpoint
PUT https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connectionid}
Request Parameters
Headers
string
required
API key for authentication (starts with
pictai_)Authorization: YOUR_API_KEY
Path Parameters
string
required
The unique identifier of the Vimeo connection to updateExample:
"20251222155613307xv0nodhitf9cd0f"Body Parameters
integer
required
Current version number of the connection. Must match the version in the database to prevent conflicts from concurrent updates. Update fails if the version does not match.Example:
1string
Updated display name for the Vimeo connection. Must be unique within your account and can only contain letters, numbers, spaces, underscores, and hyphens.Maximum length: 100 charactersExample:
"Updated Vimeo Account"string
Updated description explaining the connection’s purpose or usage.Maximum length: 250 charactersExample:
"Updated description for marketing videos"boolean
Whether the connection should be active. Set to
true to enable, or false to disable. Disabling prevents usage but retains all configuration.Example: falsestring
Updated Vimeo application Client ID from your Vimeo app settings. Changes which Vimeo application this connection uses for authentication.Maximum length: 500 charactersExample:
"updated_client_id_123"string
Updated Vimeo application client secret from your app settings. Use this to rotate credentials. Keep this value secure.Maximum length: 500 charactersExample:
"updated_secret_xyz789"string
Updated Vimeo access token for API authentication. Use this to refresh or change the token when it expires or when changing permissions scope.Maximum length: 500 charactersExample:
"updated_token_1234567890abcdef"Response
Returns the updated Vimeo connection object with all current configuration details. Theversion number is automatically incremented with each successful update for optimistic locking. The response includes connectionId, name, description, clientIdentifier, type, enabled status, and timestamps. For security, sensitive credentials (clientSecret and accessToken) are never returned in API responses - you will only see the clientIdentifier.
Response Examples
{
"connectionId": "20251222155613307xv0nodhitf9cd0f",
"name": "Updated Vimeo Connection Name",
"description": "Updated description for testing PUT endpoint",
"clientIdentifier": "updated_client_id_456",
"type": "VIMEO",
"enabled": false,
"createdDate": "2025-12-22T15:56:12.309Z",
"updatedDate": "2025-12-22T16:19:16.058Z",
"version": 4
}
{
"code": "INVALID_REQUEST_BODY",
"message": "Request body validation failed.",
"fields": [
{
"name": "version",
"errors": "version is required"
}
]
}
{
"code": "DUPLICATE_CONNECTION",
"message": "Connection with same name or account/region already exist.",
"fields": []
}
{
"message": "Unauthorized"
}
{
"message": "Connection not found"
}
{
"error": {
"code": "INTERNAL_ERROR",
"message": "An unexpected error occurred"
}
}
Code Examples
Replace
YOUR_API_KEY with your actual API key that starts with pictai_# Update a Vimeo connection
# Replace YOUR_API_KEY with your actual API key
# Replace CONNECTION_ID with the actual connection ID
# Partial update - update only description
curl --request PUT \
--url https://api.pictory.ai/pictoryapis/v1/vimeo-connections/CONNECTION_ID \
--header 'Authorization: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"description": "Updated description",
"version": 1
}'
# Full update - update multiple fields
curl --request PUT \
--url https://api.pictory.ai/pictoryapis/v1/vimeo-connections/CONNECTION_ID \
--header 'Authorization: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"name": "Updated Connection Name",
"description": "Updated description for marketing videos",
"enabled": false,
"clientIdentifier": "new_client_id_456",
"clientSecret": "new_secret_xyz789",
"accessToken": "new_token_1234567890",
"version": 1
}' | python -m json.tool
// Replace 'YOUR_API_KEY' with your actual API key
const updateVimeoConnection = async (apiKey, connectionId, updates) => {
const response = await fetch(`https://api.pictory.ai/pictoryapis/v1/vimeo-connections/${connectionId}`, {
method: 'PUT',
headers: {
'Authorization': `${apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(updates)
});
if (!response.ok) {
const error = await response.json();
throw new Error(`Failed: ${error.message}`);
}
return await response.json();
};
// Usage - Partial update
try {
const connectionId = '20251222155613307xv0nodhitf9cd0f';
// First, get current connection to retrieve version
const getResponse = await fetch(`https://api.pictory.ai/pictoryapis/v1/vimeo-connections/${connectionId}`, {
headers: { 'Authorization': 'YOUR_API_KEY' }
});
const currentConnection = await getResponse.json();
// Partial update - only update description
const partialUpdate = await updateVimeoConnection('YOUR_API_KEY', connectionId, {
description: 'Updated description',
version: currentConnection.version
});
console.log('Partial Update Result:', partialUpdate);
// Full update - update multiple fields
const fullUpdate = await updateVimeoConnection('YOUR_API_KEY', connectionId, {
name: 'Updated Connection Name',
description: 'Updated description for marketing videos',
enabled: false,
clientIdentifier: 'new_client_id_456',
clientSecret: 'new_secret_xyz789',
accessToken: 'new_token_1234567890',
version: partialUpdate.version // Use updated version
});
console.log('Full Update Result:', fullUpdate);
console.log('New Version:', fullUpdate.version);
} catch (error) {
console.error('Error:', error.message);
}
# Replace 'YOUR_API_KEY' with your actual API key
import requests
def update_vimeo_connection(api_key, connection_id, updates):
"""Update a Vimeo connection"""
url = f"https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connection_id}"
headers = {
"Authorization": api_key,
"Content-Type": "application/json"
}
response = requests.put(url, headers=headers, json=updates)
response.raise_for_status()
return response.json()
# Usage
try:
connection_id = "20251222155613307xv0nodhitf9cd0f"
# First, get current connection to retrieve version
get_url = f"https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{connection_id}"
get_response = requests.get(get_url, headers={"Authorization": "YOUR_API_KEY"})
current_connection = get_response.json()
# Partial update - only update description
partial_update = update_vimeo_connection("YOUR_API_KEY", connection_id, {
"description": "Updated description",
"version": current_connection["version"]
})
print(f"Partial Update Result: {partial_update}")
# Full update - update multiple fields
full_update = update_vimeo_connection("YOUR_API_KEY", connection_id, {
"name": "Updated Connection Name",
"description": "Updated description for marketing videos",
"enabled": False,
"clientIdentifier": "new_client_id_456",
"clientSecret": "new_secret_xyz789",
"accessToken": "new_token_1234567890",
"version": partial_update["version"] # Use updated version
})
print(f"Full Update Result: {full_update}")
print(f"New Version: {full_update['version']}")
except requests.exceptions.HTTPError as e:
error = e.response.json()
print(f"Error: {error.get('message', 'Request failed')}")
<?php
// Replace 'YOUR_API_KEY' with your actual API key
function updateVimeoConnection($apiKey, $connectionId, $updates) {
$url = "https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{$connectionId}";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: ' . $apiKey,
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($updates));
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode !== 200) {
$error = json_decode($response, true);
throw new Exception($error['message'] ?? 'Request failed');
}
return json_decode($response, true);
}
// Usage
try {
$connectionId = '20251222155613307xv0nodhitf9cd0f';
// First, get current connection to retrieve version
$getUrl = "https://api.pictory.ai/pictoryapis/v1/vimeo-connections/{$connectionId}";
$ch = curl_init($getUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: YOUR_API_KEY']);
$currentConnection = json_decode(curl_exec($ch), true);
curl_close($ch);
// Partial update - only update description
$partialUpdate = updateVimeoConnection('YOUR_API_KEY', $connectionId, [
'description' => 'Updated description',
'version' => $currentConnection['version']
]);
echo "Partial Update Result:\n";
print_r($partialUpdate);
// Full update - update multiple fields
$fullUpdate = updateVimeoConnection('YOUR_API_KEY', $connectionId, [
'name' => 'Updated Connection Name',
'description' => 'Updated description for marketing videos',
'enabled' => false,
'clientIdentifier' => 'new_client_id_456',
'clientSecret' => 'new_secret_xyz789',
'accessToken' => 'new_token_1234567890',
'version' => $partialUpdate['version'] // Use updated version
]);
echo "Full Update Result:\n";
print_r($fullUpdate);
echo "New Version: " . $fullUpdate['version'] . "\n";
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
}
?>
// Replace "YOUR_API_KEY" with your actual API key
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
type VimeoConnectionUpdate struct {
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
Enabled *bool `json:"enabled,omitempty"`
ClientIdentifier string `json:"clientIdentifier,omitempty"`
ClientSecret string `json:"clientSecret,omitempty"`
AccessToken string `json:"accessToken,omitempty"`
Version int `json:"version"`
}
type VimeoConnectionResponse struct {
ConnectionID string `json:"connectionId"`
Name string `json:"name"`
Description string `json:"description"`
ClientIdentifier string `json:"clientIdentifier"`
Type string `json:"type"`
Enabled bool `json:"enabled"`
CreatedDate string `json:"createdDate"`
UpdatedDate string `json:"updatedDate"`
Version int `json:"version"`
}
func updateVimeoConnection(apiKey string, connectionId string, updates VimeoConnectionUpdate) (*VimeoConnectionResponse, error) {
url := fmt.Sprintf("https://api.pictory.ai/pictoryapis/v1/vimeo-connections/%s", connectionId)
jsonData, err := json.Marshal(updates)
if err != nil {
return nil, err
}
req, err := http.NewRequest("PUT", url, bytes.NewBuffer(jsonData))
if err != nil {
return nil, err
}
req.Header.Set("Authorization", apiKey)
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
if resp.StatusCode != http.StatusOK {
return nil, fmt.Errorf("request failed (status %d): %s", resp.StatusCode, string(body))
}
var result VimeoConnectionResponse
if err := json.Unmarshal(body, &result); err != nil {
return nil, err
}
return &result, nil
}
// Usage
func main() {
connectionId := "20251222155613307xv0nodhitf9cd0f"
// First, get current connection to retrieve version
// (Assuming a getCurrentConnection function exists)
currentVersion := 1 // Replace with actual version from GET request
// Partial update - only update description
partialUpdate := VimeoConnectionUpdate{
Description: "Updated description",
Version: currentVersion,
}
result, err := updateVimeoConnection("YOUR_API_KEY", connectionId, partialUpdate)
if err != nil {
panic(err)
}
fmt.Printf("Partial Update Result: %+v\n", result)
fmt.Printf("New Version: %d\n", result.Version)
// Full update - update multiple fields
enabled := false
fullUpdate := VimeoConnectionUpdate{
Name: "Updated Connection Name",
Description: "Updated description for marketing videos",
Enabled: &enabled,
ClientIdentifier: "new_client_id_456",
ClientSecret: "new_secret_xyz789",
AccessToken: "new_token_1234567890",
Version: result.Version, // Use updated version
}
fullResult, err := updateVimeoConnection("YOUR_API_KEY", connectionId, fullUpdate)
if err != nil {
panic(err)
}
fmt.Printf("Full Update Result: %+v\n", fullResult)
fmt.Printf("New Version: %d\n", fullResult.Version)
}
Optimistic Locking
This endpoint uses optimistic locking to prevent conflicts from concurrent updates:- Get Current Version: Retrieve the connection using the Get Vimeo Connection by ID endpoint to get the current version number
- Include Version: Include the current
versionnumber in your update request - Version Check: The API verifies the version matches before applying changes
- Version Increment: On successful update, the version number is automatically incremented
- Conflict Handling: If another update occurred between your GET and PUT requests, the version will not match and the update fails
# Step 1: Get current connection
GET https://api.pictory.ai/pictoryapis/v1/vimeo-connections/abc123
# Response includes: "version": 5
# Step 2: Update with current version
PUT https://api.pictory.ai/pictoryapis/v1/vimeo-connections/abc123
{
"name": "New Name",
"version": 5
}
# Response includes: "version": 6 (incremented)
Error Handling
400 Bad Request - Missing Version Field
400 Bad Request - Missing Version Field
Cause: The required
version field is missing from the request bodySolution:- Always include the current
versionnumber in your update request - Get the current version using the Get Vimeo Connection by ID endpoint
- The
versionfield is required for optimistic locking to prevent concurrent update conflicts
400 Bad Request - Duplicate Connection Name
400 Bad Request - Duplicate Connection Name
Cause: A connection with the specified name already exists in your accountSolution:
- Choose a unique name for your connection
- Keep the current name if you are only updating other fields
- Use the Get Vimeo Connections endpoint to see existing connection names
400 Bad Request - Version Conflict
400 Bad Request - Version Conflict
Cause: The version number does not match the current version (someone else updated the connection)Solution:
- Get the latest connection details using the Get Vimeo Connection by ID endpoint
- Use the current
versionnumber from that response - Review the changes made by the other update before proceeding
- Retry your update request with the new version number
401 Unauthorized
401 Unauthorized
Cause: Invalid or missing API keySolution:
- Verify your API key is correct and starts with
pictai_ - Check the
Authorizationheader is properly formatted:YOUR_API_KEY - Ensure your API key hasn’t expired
- Get a new API key from the API Access page
404 Not Found
404 Not Found
Cause: The connection ID does not exist or you do not have access to itSolution:
- Verify the connection ID is correct and complete
- Ensure the connection belongs to your account
- Check if the connection has been deleted
- Connection IDs are case-sensitive - confirm the exact casing
- Use the Get Vimeo Connections endpoint to list all your connections
Update Strategies
Partial Updates
Only include theversion field and the fields you want to update. All other fields remain unchanged.
Example - Update only description:
{
"description": "New description",
"version": 1
}
Full Updates
Update multiple fields in a single request: Example - Update multiple fields:{
"name": "New Connection Name",
"description": "New description",
"enabled": false,
"clientIdentifier": "new_client_id",
"clientSecret": "new_client_secret",
"accessToken": "new_access_token",
"version": 1
}
Credential Rotation
When rotating Vimeo credentials (client secret or access token):- Obtain new credentials from the Vimeo Developer Portal
- Get the current version of the connection
- Update with the new credentials and current version
- Test the connection to ensure the new credentials work
- Revoke the old credentials in Vimeo if needed
Disabling Connections: Setting
enabled: false prevents the connection from being used for Vimeo operations, but all configuration is retained. Re-enable it later by setting enabled: true.Was this page helpful?
