openapi: 3.0.3 info: title: 17TRACK Tracking API description: REST API for registering and tracking shipments across 3,300+ global carriers. Provides real-time shipment status updates delivered via webhook push notifications. All requests use HTTP POST with UTF-8 encoded JSON. version: v1 contact: name: 17TRACK API Support email: apisupport@17track.net url: https://www.17track.net/en/api termsOfService: https://www.17track.net/en/terms license: name: Proprietary url: https://www.17track.net/en/terms externalDocs: description: 17TRACK API Documentation url: https://asset.17track.net/api/document/v1_en/index.html servers: - url: https://api.17track.net/track/v1 description: 17TRACK Tracking API v1 Production security: - ApiKeyAuth: [] paths: /register: post: summary: Register Tracking Numbers description: Register one or more tracking numbers for monitoring. Quota is consumed upon registration. Auto carrier identification covers 80%+ of shipments when carrier is not specified. operationId: registerTracking tags: - Tracking requestBody: required: true content: application/json: schema: type: array maxItems: 40 items: $ref: '#/components/schemas/RegisterRequest' example: - number: "1Z999AA10123456784" carrier: 100003 responses: '200': description: Request processed. Check accepted/rejected arrays in response. content: application/json: schema: $ref: '#/components/schemas/BatchResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimitExceeded' '500': $ref: '#/components/responses/InternalServerError' '503': $ref: '#/components/responses/ServiceUnavailable' /gettrackinfo: post: summary: Get Tracking Information description: Retrieve detailed tracking information for one or more registered tracking numbers including current status and event history. operationId: getTrackInfo tags: - Tracking requestBody: required: true content: application/json: schema: type: array maxItems: 40 items: $ref: '#/components/schemas/TrackNumberRequest' example: - number: "1Z999AA10123456784" responses: '200': description: Tracking information retrieved successfully. content: application/json: schema: $ref: '#/components/schemas/TrackInfoResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimitExceeded' '500': $ref: '#/components/responses/InternalServerError' /gettracklist: post: summary: Get Tracking List description: Retrieve a filtered list of tracking numbers registered to your account with optional filters by status, date range, and pagination. operationId: getTrackList tags: - Tracking requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TrackListRequest' responses: '200': description: Tracking list retrieved successfully. content: application/json: schema: $ref: '#/components/schemas/BatchResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimitExceeded' '500': $ref: '#/components/responses/InternalServerError' /stoptrack: post: summary: Stop Tracking description: Halt tracking operations for one or more tracking numbers to stop quota consumption for completed or cancelled shipments. operationId: stopTrack tags: - Tracking requestBody: required: true content: application/json: schema: type: array maxItems: 40 items: $ref: '#/components/schemas/TrackNumberRequest' responses: '200': description: Tracking stopped successfully. content: application/json: schema: $ref: '#/components/schemas/BatchResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimitExceeded' '500': $ref: '#/components/responses/InternalServerError' /retrack: post: summary: Reactivate Tracking description: Reactivate tracking for previously stopped tracking numbers. operationId: retrack tags: - Tracking requestBody: required: true content: application/json: schema: type: array maxItems: 40 items: $ref: '#/components/schemas/TrackNumberRequest' responses: '200': description: Tracking reactivated successfully. content: application/json: schema: $ref: '#/components/schemas/BatchResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimitExceeded' '500': $ref: '#/components/responses/InternalServerError' /deletetrack: post: summary: Delete Tracking Numbers description: Remove one or more tracking numbers from your account permanently. operationId: deleteTrack tags: - Tracking requestBody: required: true content: application/json: schema: type: array maxItems: 40 items: $ref: '#/components/schemas/TrackNumberRequest' responses: '200': description: Tracking numbers deleted successfully. content: application/json: schema: $ref: '#/components/schemas/BatchResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimitExceeded' '500': $ref: '#/components/responses/InternalServerError' /changecarrier: post: summary: Change Carrier description: Modify the carrier assignment for one or more registered tracking numbers. operationId: changeCarrier tags: - Tracking requestBody: required: true content: application/json: schema: type: array maxItems: 40 items: $ref: '#/components/schemas/ChangeCarrierRequest' responses: '200': description: Carrier updated successfully. content: application/json: schema: $ref: '#/components/schemas/BatchResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimitExceeded' '500': $ref: '#/components/responses/InternalServerError' /changeinfo: post: summary: Update Tracking Metadata description: Update metadata associated with one or more registered tracking numbers such as order reference or customer information. operationId: changeInfo tags: - Tracking requestBody: required: true content: application/json: schema: type: array maxItems: 40 items: $ref: '#/components/schemas/ChangeInfoRequest' responses: '200': description: Tracking metadata updated successfully. content: application/json: schema: $ref: '#/components/schemas/BatchResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimitExceeded' '500': $ref: '#/components/responses/InternalServerError' /push: post: summary: Manually Trigger Push Notification description: Manually trigger webhook push notifications for one or more tracking numbers to re-deliver the latest and historical tracking data to your webhook endpoint. operationId: pushNotification tags: - Webhooks requestBody: required: true content: application/json: schema: type: array maxItems: 40 items: $ref: '#/components/schemas/TrackNumberRequest' responses: '200': description: Push notification triggered successfully. content: application/json: schema: $ref: '#/components/schemas/BatchResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimitExceeded' '500': $ref: '#/components/responses/InternalServerError' components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: 17token description: API access key obtained from Management Console > Settings > Security > Access Key. Key updates take effect within 5 minutes. schemas: RegisterRequest: type: object required: - number properties: number: type: string minLength: 5 maxLength: 50 pattern: '^[a-zA-Z0-9]{5,50}$' description: Tracking number (5-50 alphanumeric characters) example: 1Z999AA10123456784 carrier: type: integer description: Carrier numeric ID. If omitted, auto-detection is used (covers 80%+ of shipments). example: 100003 TrackNumberRequest: type: object required: - number properties: number: type: string minLength: 5 maxLength: 50 pattern: '^[a-zA-Z0-9]{5,50}$' description: Tracking number (5-50 alphanumeric characters) example: 1Z999AA10123456784 ChangeCarrierRequest: type: object required: - number - carrier properties: number: type: string minLength: 5 maxLength: 50 description: Tracking number example: 1Z999AA10123456784 carrier: type: integer description: New carrier numeric ID to assign example: 100003 ChangeInfoRequest: type: object required: - number properties: number: type: string minLength: 5 maxLength: 50 description: Tracking number example: 1Z999AA10123456784 tag: type: string description: Custom tag or order reference for the tracking number example: ORDER-12345 TrackListRequest: type: object properties: status: type: integer description: Filter by tracking status code page: type: integer description: Page number for pagination default: 1 page_size: type: integer description: Number of results per page default: 40 maximum: 40 BatchResponse: type: object properties: code: type: integer description: Response status code (0 for success) example: 0 data: type: object properties: accepted: type: array description: Successfully processed items items: type: object properties: number: type: string description: Tracking number rejected: type: array description: Items that could not be processed with error details items: type: object properties: number: type: string description: Tracking number error: type: object properties: code: type: integer description: Error code message: type: string description: Error description TrackInfoResponse: type: object properties: code: type: integer description: Response status code (0 for success) example: 0 data: type: object properties: accepted: type: array items: type: object properties: number: type: string description: Tracking number carrier: type: integer description: Carrier ID track: type: object properties: z0: type: object description: Latest tracking event properties: z: type: integer description: Main status code (0-8) s: type: integer description: Sub-status code a: type: string description: Event location c: type: string description: Event description d: type: string description: Event date and time z1: type: array description: Historical tracking events in chronological order items: type: object properties: z: type: integer description: Main status code s: type: integer description: Sub-status code a: type: string description: Event location c: type: string description: Event description d: type: string description: Event date and time rejected: type: array items: type: object properties: number: type: string error: type: object properties: code: type: integer message: type: string responses: Unauthorized: description: Unauthorized. Invalid API key, IP not whitelisted, or account disabled. content: application/json: schema: type: object properties: code: type: integer example: 401 message: type: string example: Unauthorized RateLimitExceeded: description: Rate limit exceeded. Maximum 3 requests per second allowed. content: application/json: schema: type: object properties: code: type: integer example: 429 message: type: string example: Too Many Requests InternalServerError: description: Internal server error. Retry after a brief delay. content: application/json: schema: type: object properties: code: type: integer example: 500 message: type: string example: Internal Server Error ServiceUnavailable: description: Service temporarily unavailable. content: application/json: schema: type: object properties: code: type: integer example: 503 message: type: string example: Service Unavailable tags: - name: Tracking description: Core tracking operations for registering, retrieving, and managing shipment tracking numbers. - name: Webhooks description: Webhook push notification management for receiving automatic tracking updates.