Skip to main content

API Versioning

SDD Classification: L3-Technical Authority: Engineering Team Review Cycle: Quarterly
This guide covers Materi’s API versioning strategy, backward compatibility policies, and migration guidance.

Versioning Strategy

Materi uses URL-based versioning with a commitment to backward compatibility:
https://api.materi.dev/v1/documents
https://api.materi.dev/v2/documents  (future)

Current Version

PropertyValue
Current Versionv1
StatusStable
Base URLhttps://api.materi.dev/v1
Released2024-Q3

Version in Request

URL Path (Required)

GET https://api.materi.dev/v1/documents
POST https://api.materi.dev/v1/documents

Accept Header (Optional)

For fine-grained version control within a major version:
Accept: application/vnd.materi.v1+json
Accept: application/vnd.materi.v1.1+json

Backward Compatibility

What We Consider Backward Compatible

These changes are made without version bumps:
Change TypeExample
Adding new endpointsPOST /api/v1/templates
Adding optional fieldsNew metadata field in response
Adding new enum valuesNew status: "archived" option
Relaxing validationIncreasing max title length
Adding new query parameters?include_deleted=true
New response headersX-Request-Duration

What Requires New Version

These changes require a new API version:
Change TypeExample
Removing endpointsRemoving DELETE /users
Removing fieldsRemoving legacy_id from response
Changing field typesid from integer to string
Renaming fieldsuser_id to owner_id
Changing validationStricter email validation
Changing default behaviorDifferent default sort order

Deprecation Policy

Timeline

PhaseDurationActions
AnnouncementDay 0Changelog, email, docs update
Migration Period12 monthsBoth versions supported
Sunset Warning6 monthsDeprecation headers, warnings
End of LifeAfter 18 monthsOld version returns 410 Gone

Deprecation Headers

When using deprecated features:
HTTP/1.1 200 OK
Deprecation: true
Sunset: Sat, 01 Jul 2026 00:00:00 GMT
Link: <https://docs.materi.dev/migration/v1-to-v2>; rel="deprecation"

Version Migration

Checking Your Version

GET /api/v1/version
Response:
{
  "version": "v1",
  "build": "2025.01.07.1234",
  "deprecation": {
    "is_deprecated": false,
    "sunset_date": null,
    "migration_guide": null
  }
}

Feature Flags

Request specific features within a version:
X-Materi-Features: new-editor,beta-ai

SDK Version Compatibility

SDKAPI v1 SupportNotes
JavaScript 1.xCurrent
JavaScript 2.xCurrent
Python 1.xCurrent
Go 1.xCurrent

Changelog

v1.1 (2025-01-07)

Added:
  • POST /ai/analyze - Document analysis endpoint
  • metadata field on document responses
  • include_deleted query parameter
Changed:
  • Increased rate limits for Professional tier

v1.0 (2024-09-15)

Initial Release:
  • Document CRUD operations
  • Workspace management
  • User authentication
  • AI content generation
  • Real-time collaboration

Migration Guides

When a new version is released, migration guides will be available:

API Status

Health Endpoints

# API health check
GET /health

# API readiness (includes dependencies)
GET /ready

# API version info
GET /api/v1/version

Status Page

Monitor API status and planned maintenance:

Best Practices

For API Consumers

  1. Pin to a specific version in production
  2. Subscribe to changelog for updates
  3. Test against staging before production
  4. Handle deprecation headers in your code
  5. Plan migrations early during migration period

Version Detection

class MateriClient {
  constructor(config) {
    this.version = config.apiVersion || 'v1';
    this.baseUrl = `https://api.materi.dev/${this.version}`;
  }

  async checkDeprecation(response) {
    if (response.headers.get('Deprecation') === 'true') {
      const sunset = response.headers.get('Sunset');
      const guide = response.headers.get('Link');

      console.warn(`API version deprecated. Sunset: ${sunset}`);
      console.warn(`Migration guide: ${guide}`);
    }
  }
}


Document Status: Complete Version: 2.0