Get Upload File Metadata

Retrieve the knowledge item associated with an uploaded file using the upload file metadata ID. This is useful for tracking files after upload and finding their corresponding knowledge items.

Endpoint

GET /v1/workspaces/{workspaceId}/upload-file-metadata/{uploadFileMetadataId}

Authentication

This endpoint requires a Bearer token obtained through the two-step authentication flow:

  1. First, generate an access token using your API key
  2. Use that access token in the Authorization header

See Authentication for the complete authentication flow.

Path Parameters

ParameterTypeRequiredDescription
workspaceIdstring (UUID)YesThe ID of your workspace
uploadFileMetadataIdstring (UUID)YesThe ID of the upload file metadata

Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer token with access token
organizationidstring (UUID)YesYour organization ID

Response

Success Response

Status Code: 200 OK

Body:

{
  "knowledge": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "metadata": {
      "title": "Product Guide",
      "author": "John Doe",
      "version": "2.0"
    }
  },
  "spaceKnowledge": null
}

Response Fields

FieldTypeDescription
knowledgeobject | nullThe workspace-level knowledge item associated with this file
knowledge.idstring (UUID)Knowledge item ID
knowledge.metadataobjectCustom metadata for the knowledge item
spaceKnowledgeobject | nullThe space-level knowledge item (if uploaded to a space)
spaceKnowledge.idstring (UUID)Space knowledge item ID
spaceKnowledge.metadataobjectCustom metadata for the space knowledge item

Examples

Basic Request

# Step 1: Generate access token (do this once, reuse for multiple requests)
ACCESS_TOKEN=$(curl -s -X POST \
  'https://api.sharely.ai/workspaces/your-workspace-id/generate-access-key-token' \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: sk-sharely-your-api-key' \
  -d '{}' | jq -r '.token')
 
# Step 2: Get upload file metadata
curl -X GET \
  'https://api.sharely.ai/v1/workspaces/your-workspace-id/upload-file-metadata/upload-metadata-id' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H 'organizationid: your-organization-id'

JavaScript Example

const API_KEY = 'sk-sharely-your-api-key';
const WORKSPACE_ID = 'your-workspace-id';
const ORGANIZATION_ID = 'your-organization-id';
const API_BASE_URL = 'https://api.sharely.ai';
 
// Step 1: Generate access token
async function getAccessToken() {
  const response = await fetch(
    `${API_BASE_URL}/workspaces/${WORKSPACE_ID}/generate-access-key-token`,
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'x-api-key': API_KEY
      },
      body: JSON.stringify({})
    }
  );
  const data = await response.json();
  return data.token;
}
 
// Step 2: Get upload file metadata
async function getUploadFileMetadata(accessToken, uploadFileMetadataId) {
  const response = await fetch(
    `${API_BASE_URL}/v1/workspaces/${WORKSPACE_ID}/upload-file-metadata/${uploadFileMetadataId}`,
    {
      headers: {
        'Authorization': `Bearer ${accessToken}`,
        'organizationid': ORGANIZATION_ID
      }
    }
  );
 
  if (!response.ok) {
    throw new Error(`Failed to get metadata: ${response.statusText}`);
  }
 
  return await response.json();
}
 
// Usage
const accessToken = await getAccessToken();
const result = await getUploadFileMetadata(accessToken, 'upload-metadata-id');
 
if (result.knowledge) {
  console.log('Workspace Knowledge ID:', result.knowledge.id);
  console.log('Metadata:', result.knowledge.metadata);
}
 
if (result.spaceKnowledge) {
  console.log('Space Knowledge ID:', result.spaceKnowledge.id);
}

Track File After Upload

// After uploading a file, use the returned metadata ID to track it
async function uploadAndTrack(accessToken, file) {
  // Upload the file
  const formData = new FormData();
  formData.append('file', file);
  formData.append('status', 'BACKGROUND_START');
 
  const uploadResponse = await fetch(
    `${API_BASE_URL}/v1/workspaces/${WORKSPACE_ID}/knowledge/file`,
    {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${accessToken}`,
        'organizationid': ORGANIZATION_ID
      },
      body: formData
    }
  );
 
  const uploadResult = await uploadResponse.json();
 
  // Later, retrieve the knowledge item using the upload metadata ID
  const metadata = await getUploadFileMetadata(
    accessToken,
    uploadResult.uploadFileMetadataId
  );
 
  return {
    uploadId: uploadResult.uploadFileMetadataId,
    knowledgeId: metadata.knowledge?.id,
    metadata: metadata.knowledge?.metadata
  };
}

Error Responses

401 Unauthorized

{
  "error": "Unauthorized",
  "message": "Invalid or missing access token"
}

404 Not Found

Upload file metadata not found:

{
  "error": "Error",
  "message": "Upload file metadata with ID {id} not found"
}

Related Endpoints