movepacketDocs
Docs / Technical reference

The API, in detail.

The implemented beta endpoints, generated from the same OpenAPI contract you can import into your development tools. These server endpoints require the appropriate bearer credential; project builder access and athlete-data access are separate. See API authentication.

Upload a FIT activity#

POST /v1/activities

Send raw FIT bytes, not multipart or JSON. Maximum 4 MiB. The same bytes in the same workspace reuse one activity. HTTP 202 means processing is pending; 200 means the returned activity is already ready or failed. Concurrent uploads converge on one ID; duplicate is advisory.

Body: raw FIT bytes, maximum 4 MiB. Content-Type: application/vnd.ant.fit or application/octet-stream.

HTTP Response
200 Existing terminal activity
202 Activity accepted for asynchronous processing
400 Invalid request
401 Missing, invalid, or revoked key
413 Input or result exceeds the endpoint limit
415 Unsupported media type
422 Input validation or analysis failed
503 Service or stored object unavailable; hosted beta may not be open

List activities#

GET /v1/activities

Workspace-scoped, newest first (created_at then id, both descending). Offset pages can shift when new activities are added. stats always describes the entire workspace, independent of filters.

Parameter Location Details
q query Case-sensitive activity ID substring; trimmed
status query processing combines received and queued Values: received, queued, processing, ready, failed.
limit query Range: 1–100. Default: 20.
offset query Range: 0–100000. Default: 0.
HTTP Response
200 Matching activities and workspace counts
400 Invalid request
401 Missing, invalid, or revoked key
503 Service or stored object unavailable; hosted beta may not be open

Read activity status#

GET /v1/activities/{id}

Parameter Location Details
id path · required Activity ID returned by upload
HTTP Response
200 Activity metadata; check status for processing state
401 Missing, invalid, or revoked key
404 Unknown resource or inaccessible workspace
503 Service or stored object unavailable; hosted beta may not be open

Retrieve decoded JSON#

GET /v1/activities/{id}/data

Available only for ready activities. FIT SDK field names and units are retained; source-dependent message fields are intentionally open.

Parameter Location Details
id path · required Activity ID returned by upload
HTTP Response
200 Decoded FIT messages
401 Missing, invalid, or revoked key
404 Unknown resource or inaccessible workspace
409 Conflicting request or resource still processing
503 Service or stored object unavailable; hosted beta may not be open

Download untouched original#

GET /v1/activities/{id}/original

Available even when decoding failed. Compare its SHA-256 with the activity metadata and your source.

Parameter Location Details
id path · required Activity ID returned by upload
HTTP Response
200 Exact uploaded FIT bytes
401 Missing, invalid, or revoked key
404 Unknown resource or inaccessible workspace
503 Service or stored object unavailable; hosted beta may not be open

Analyse a GPX course#

POST /v1/event-analyses

One continuous route with elevation, up to 3 MiB / 50,000 points. Saves a private derived result. 100 attempts per owner per UTC day; 1,000 shared. Raw GPX is not retained. No weather or athlete matching. See /docs/event-intelligence for retry and retention semantics.

Parameter Location Details
Idempotency-Key header Keep stable for retries; different input with the same key returns 409. If omitted, normalized input determines duplicate identity.

Body: JSON with gpx_xml and optional event. See Event Intelligence for input limits, output and retry behavior.

HTTP Response
200 Existing terminal attempt; inspect status
201 New completed analysis
202 Matching attempt is processing; retrieve links.self
400 Invalid request
401 Missing, invalid, or revoked key
409 Conflicting request or resource still processing
410 Result has been deleted
413 Input or result exceeds the endpoint limit
415 Unsupported media type
422 Input validation or analysis failed
429 Daily analysis allowance reached
503 Service or stored object unavailable; hosted beta may not be open

List route analyses#

GET /v1/event-analyses

Newest first, 20 per page. Deleted results are omitted. Offset pages can shift as new records arrive.

Parameter Location Details
offset query Range: 0–100000. Default: 0.
HTTP Response
200 Private attempt summaries
400 Invalid request
401 Missing, invalid, or revoked key
503 Service or stored object unavailable; hosted beta may not be open

Retrieve a route analysis#

GET /v1/event-analyses/{id}

Parameter Location Details
id path · required
HTTP Response
200 Attempt status and result when ready
401 Missing, invalid, or revoked key
404 Unknown resource or inaccessible workspace
410 Result has been deleted
503 Service or stored object unavailable; hosted beta may not be open

Delete a saved route result#

DELETE /v1/event-analyses/{id}

Removes derived result and event name. Minimal usage and idempotency metadata remains. Does not purge backups or downloaded copies. Processing attempts cannot be deleted.

Parameter Location Details
id path · required
HTTP Response
204 Result removed
401 Missing, invalid, or revoked key
404 Unknown resource or inaccessible workspace
409 Conflicting request or resource still processing
503 Service or stored object unavailable; hosted beta may not be open

Read Event Intelligence usage#

GET /v1/event-analyses/usage

Current UTC month. Attempts count admissions, not validation failures or replays. Measured cost is unknown (null), never inferred as zero. Billing is off.

HTTP Response
200 Usage and current daily allowance
401 Missing, invalid, or revoked key
503 Service or stored object unavailable; hosted beta may not be open

Read combined individual uploads and bulk recordings#

GET /v1/library

Up to 50 rows ordered by ingestion time. Single-upload summaries are null; retrieve their decoded data for metrics. No storage data is rewritten or merged.

Parameter Location Details
athlete_id query Optional workspace filter; athlete-scoped credentials are always constrained to their athlete.
offset query Range: 0–100000. Default: 0.
HTTP Response
200 Private activity library
400 Invalid request
401 Missing, invalid, or revoked key
404 Unknown resource or inaccessible workspace
503 Service or stored object unavailable; hosted beta may not be open

Read the athlete connected to a private project#

GET /v1/project-data/{id}

Connection is configured in the signed-in workspace. Credential must authorise the workspace and, for athlete grants, the connected athlete. Disconnected projects return 404.

Parameter Location Details
id path · required
offset query Range: 0–100000. Default: 0.
HTTP Response
200 Connected athlete library
400 Invalid request
401 Missing, invalid, or revoked key
404 Unknown resource or inaccessible workspace
503 Service or stored object unavailable; hosted beta may not be open

List bulk-imported recordings#

GET /v1/recordings

Parameter Location Details
athlete_id query Optional workspace filter; athlete-scoped credentials are always constrained to their athlete.
offset query Range: 0–100000. Default: 0.
HTTP Response
200 Recording summaries
400 Invalid request
401 Missing, invalid, or revoked key
404 Unknown resource or inaccessible workspace
503 Service or stored object unavailable; hosted beta may not be open

Read a recording summary#

GET /v1/recordings/{id}

Parameter Location Details
id path · required
HTTP Response
200 Recording summary
401 Missing, invalid, or revoked key
404 Unknown resource or inaccessible workspace
503 Service or stored object unavailable; hosted beta may not be open

Read full decoded FIT messages#

GET /v1/recordings/{id}/data

Parameter Location Details
id path · required
HTTP Response
200 Decoded evidence
401 Missing, invalid, or revoked key
404 Unknown resource or inaccessible workspace
503 Service or stored object unavailable; hosted beta may not be open

Download the first uploaded source unchanged#

GET /v1/recordings/{id}/original

May be FIT or FIT.GZ; preserves the original container bytes.

Parameter Location Details
id path · required
HTTP Response
200 Original file
401 Missing, invalid, or revoked key
404 Unknown resource or inaccessible workspace
503 Service or stored object unavailable; hosted beta may not be open

Read app status and current version#

GET /v1/software/{app_id}

Parameter Location Details
app_id path · required
HTTP Response
200 Owned app status
400 Invalid request
401 Missing, invalid, or revoked key
402 Active Core subscription required for customer writes
403 Browser access or processing restriction
404 Unknown resource or inaccessible workspace
409 Conflicting request or resource still processing
429 Daily analysis allowance reached
503 Service or stored object unavailable; hosted beta may not be open

Inspect supported runtime, limits and access#

GET /v1/software/{app_id}/inspect

Parameter Location Details
app_id path · required
HTTP Response
200 Builder capability contract
400 Invalid request
401 Missing, invalid, or revoked key
402 Active Core subscription required for customer writes
403 Browser access or processing restriction
404 Unknown resource or inaccessible workspace
409 Conflicting request or resource still processing
429 Daily analysis allowance reached
503 Service or stored object unavailable; hosted beta may not be open

Download verified current public source#

GET /v1/software/{app_id}/source

Returns the static package or a legacy generated-page object, plus current version. Does not include provider credentials or private records.

Parameter Location Details
app_id path · required
HTTP Response
200 Current source
400 Invalid request
401 Missing, invalid, or revoked key
402 Active Core subscription required for customer writes
403 Browser access or processing restriction
404 Unknown resource or inaccessible workspace
409 Conflicting request or resource still processing
429 Daily analysis allowance reached
503 Service or stored object unavailable; hosted beta may not be open

List up to 200 app-owned releases#

GET /v1/software/{app_id}/releases

Parameter Location Details
app_id path · required
HTTP Response
200 Versions and active pointer
400 Invalid request
401 Missing, invalid, or revoked key
402 Active Core subscription required for customer writes
403 Browser access or processing restriction
404 Unknown resource or inaccessible workspace
409 Conflicting request or resource still processing
429 Daily analysis allowance reached
503 Service or stored object unavailable; hosted beta may not be open

Publish a verified static browser app#

PUT /v1/software/{app_id}/deploy-static

Maximum 6 MiB JSON request. Use a stable new UUID for retries and public:true after reviewing all files. Storage verification precedes atomic activation. Retries can return active:false if a later version is live; do not present that as a successful current publish. 30 releases/day and 200 retained rows per app, including failed attempts. No server code execution.

Parameter Location Details
app_id path · required
If-Match header · required Exact current version ID, without quotes. A different current version returns 409.

Body: JSON. See the OpenAPI contract for required fields and AI tools for the builder workflow.

HTTP Response
200 Release outcome; check active
400 Invalid request
401 Missing, invalid, or revoked key
402 Active Core subscription required for customer writes
403 Browser access or processing restriction
404 Unknown resource or inaccessible workspace
409 Conflicting request or resource still processing
429 Daily analysis allowance reached
503 Service or stored object unavailable; hosted beta may not be open

Save a private static update without changing the live app#

PUT /v1/software/{app_id}/stage

Parameter Location Details
app_id path · required
If-Match header · required Exact current version ID, without quotes. A different current version returns 409.

Body: JSON. See the OpenAPI contract for required fields and AI tools for the builder workflow.

HTTP Response
200 Saved candidate and base version
400 Invalid request
401 Missing, invalid, or revoked key
402 Active Core subscription required for customer writes
403 Browser access or processing restriction
404 Unknown resource or inaccessible workspace
409 Conflicting request or resource still processing
429 Daily analysis allowance reached
503 Service or stored object unavailable; hosted beta may not be open

Retrieve verified app-owned candidate files for a local preview#

GET /v1/software/{app_id}/release-source/{version}

Parameter Location Details
app_id path · required
version path · required
HTTP Response
200 Private candidate package and base version
400 Invalid request
401 Missing, invalid, or revoked key
402 Active Core subscription required for customer writes
403 Browser access or processing restriction
404 Unknown resource or inaccessible workspace
409 Conflicting request or resource still processing
429 Daily analysis allowance reached
503 Service or stored object unavailable; hosted beta may not be open

Review changes and check evidence for a saved static update#

GET /v1/software/{app_id}/review/{version}

Returns a private hosted preview URL, exact saved content hash, file change summary and scoped check results. The preview requires the owner’s MovePacket sign-in even for a public project. Manual functional review and unconfigured independent review are not marked passed.

Parameter Location Details
app_id path · required
version path · required
HTTP Response
200 Saved-version review evidence
400 Invalid request
401 Missing, invalid, or revoked key
402 Active Core subscription required for customer writes
403 Browser access or processing restriction
404 Unknown resource or inaccessible workspace
409 Conflicting request or resource still processing
429 Daily analysis allowance reached
503 Service or stored object unavailable; hosted beta may not be open

Publish the exact saved candidate after owner review#

POST /v1/software/{app_id}/publish-candidate

Requires the live version to still match the candidate base. Does not apply database changes.

Parameter Location Details
app_id path · required
If-Match header · required Exact current version ID, without quotes. A different current version returns 409.

Body: JSON. See the OpenAPI contract for required fields and AI tools for the builder workflow.

HTTP Response
200 Published candidate
400 Invalid request
401 Missing, invalid, or revoked key
402 Active Core subscription required for customer writes
403 Browser access or processing restriction
404 Unknown resource or inaccessible workspace
409 Conflicting request or resource still processing
429 Daily analysis allowance reached
503 Service or stored object unavailable; hosted beta may not be open

Restore an app-owned verified release#

POST /v1/software/{app_id}/rollback

Parameter Location Details
app_id path · required
If-Match header · required Exact current version ID, without quotes. A different current version returns 409.

Body: JSON. See the OpenAPI contract for required fields and AI tools for the builder workflow.

HTTP Response
200 Restored version
400 Invalid request
401 Missing, invalid, or revoked key
402 Active Core subscription required for customer writes
403 Browser access or processing restriction
404 Unknown resource or inaccessible workspace
409 Conflicting request or resource still processing
429 Daily analysis allowance reached
503 Service or stored object unavailable; hosted beta may not be open

Discover Data Connect capabilities#

GET /v1/software/{app_id}/data-connect

Parameter Location Details
app_id path · required
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

List athletes explicitly granted to this app#

GET /v1/software/{app_id}/data-connect/athletes

Parameter Location Details
app_id path · required
before query
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Discover this athlete’s app permissions#

GET /v1/software/{app_id}/data-connect/athletes/{athlete_id}

Parameter Location Details
app_id path · required
athlete_id path · required
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Read athlete identity#

GET /v1/software/{app_id}/data-connect/athletes/{athlete_id}/identity

Requires the corresponding current athlete grant. No provider activation or automatic coaching. Activities include quality status; memory and observations retain separate source semantics.

Parameter Location Details
app_id path · required
athlete_id path · required
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Read athlete activities#

GET /v1/software/{app_id}/data-connect/athletes/{athlete_id}/activities

Requires the corresponding current athlete grant. No provider activation or automatic coaching. Activities include quality status; memory and observations retain separate source semantics.

Parameter Location Details
app_id path · required
athlete_id path · required
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Read athlete memory#

GET /v1/software/{app_id}/data-connect/athletes/{athlete_id}/memory

Requires the corresponding current athlete grant. No provider activation or automatic coaching. Activities include quality status; memory and observations retain separate source semantics.

Parameter Location Details
app_id path · required
athlete_id path · required
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Promote a selected app record field into athlete memory#

POST /v1/software/{app_id}/data-connect/athletes/{athlete_id}/memory

Uses the existing single-athlete app record promotion contract documented in Records. No arbitrary memory value is accepted.

Parameter Location Details
app_id path · required
athlete_id path · required

Body: JSON. See the OpenAPI contract for required fields and AI tools for the builder workflow.

HTTP Response
200 Authorised result
201 Promoted evidence ID
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Withdraw supplied memory evidence#

DELETE /v1/software/{app_id}/data-connect/athletes/{athlete_id}/memory

Parameter Location Details
app_id path · required
athlete_id path · required

Body: JSON. See the OpenAPI contract for required fields and AI tools for the builder workflow.

HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Read athlete observations#

GET /v1/software/{app_id}/data-connect/athletes/{athlete_id}/observations

Requires the corresponding current athlete grant. No provider activation or automatic coaching. Activities include quality status; memory and observations retain separate source semantics.

Parameter Location Details
app_id path · required
athlete_id path · required
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Read an athlete activity#

GET /v1/software/{app_id}/data-connect/athletes/{athlete_id}/activities/{activity_id}

Parameter Location Details
app_id path · required
athlete_id path · required
activity_id path · required
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Download original or decoded athlete activity#

GET /v1/software/{app_id}/data-connect/athletes/{athlete_id}/activities/{activity_id}/{part}

Parameter Location Details
app_id path · required
athlete_id path · required
activity_id path · required
part path · required Values: original, data.
HTTP Response
200 Original FIT/FIT.GZ or decoded JSON
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Read dated source records and history#

GET /v1/software/{app_id}/data-connect/athletes/{athlete_id}/records/{domain}

50 records/page, opaque ID cursor. Current is latest effective record per app/domain/record_key/schema version, preserving distinct producers. RetainedSyntheticPlanV2 is an internal synthetic provider-plan read variant requiring current named operation grants as well as Foundation read grants; version-1 records cannot supersede or withdraw it. as_of filters effective dates under current permissions; it is not a reconstruction of what was known at that time. Local-only measurements use capture time for selection and retain the unzoned measurement date separately.

Parameter Location Details
app_id path · required
athlete_id path · required
domain path · required Values: measurements, coaching_relationship, goals, events, constraints, availability, history, performance_targets, subjective_feedback, coach_observations, decisions, interventions, outcomes, current_priorities, prescriptions.
before query
view query Values: history, current. Default: history.
as_of query
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Supply one immutable athlete record#

POST /v1/software/{app_id}/data-connect/athletes/{athlete_id}/records/{domain}

Version 1 only; internal provider-plan receipts cannot be supplied here. 32 KiB maximum. Server app key plus per-athlete/domain supply grant and paid writes. Source rights are caller assertions, not provider authorisation. Same request_id and identical body replay safely; changed body conflicts. No direct provider calls.

Parameter Location Details
app_id path · required
athlete_id path · required
domain path · required Values: measurements, coaching_relationship, goals, events, constraints, availability, history, performance_targets, subjective_feedback, coach_observations, decisions, interventions, outcomes, current_priorities, prescriptions.

Body: JSON. See the OpenAPI contract for required fields and AI tools for the builder workflow.

HTTP Response
200 Authorised result
201 Created record with permanent ID
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Read a retained domain record#

GET /v1/software/{app_id}/data-connect/athletes/{athlete_id}/records/{domain}/{record_id}

Parameter Location Details
app_id path · required
athlete_id path · required
domain path · required Values: measurements, coaching_relationship, goals, events, constraints, availability, history, performance_targets, subjective_feedback, coach_observations, decisions, interventions, outcomes, current_priorities, prescriptions.
record_id path · required
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Withdraw this app’s version-1 domain record#

DELETE /v1/software/{app_id}/data-connect/athletes/{athlete_id}/records/{domain}/{record_id}

Parameter Location Details
app_id path · required
athlete_id path · required
domain path · required Values: measurements, coaching_relationship, goals, events, constraints, availability, history, performance_targets, subjective_feedback, coach_observations, decisions, interventions, outcomes, current_priorities, prescriptions.
record_id path · required
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

List this app’s imports for the athlete#

GET /v1/software/{app_id}/data-connect/athletes/{athlete_id}/imports

Parameter Location Details
app_id path · required
athlete_id path · required
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Create an athlete FIT import manifest#

POST /v1/software/{app_id}/data-connect/athletes/{athlete_id}/imports

Requires training_data.supply, paid account and activated Core app. Maximum 200 files, 4 MiB/file, 200 MiB/batch. Uses existing manifest validation, idempotency and limits. Accepted work belongs to the workspace.

Parameter Location Details
app_id path · required
athlete_id path · required

Body: JSON. See the OpenAPI contract for required fields and AI tools for the builder workflow.

HTTP Response
200 Authorised result
201 Import session ID
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Read this app’s import status#

GET /v1/software/{app_id}/data-connect/athletes/{athlete_id}/imports/{session_id}

Parameter Location Details
app_id path · required
athlete_id path · required
session_id path · required
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Upload an original FIT or FIT.GZ file#

PUT /v1/software/{app_id}/data-connect/athletes/{athlete_id}/imports/{session_id}/items/{item_id}

Parameter Location Details
app_id path · required
athlete_id path · required
session_id path · required
item_id path · required

Body: raw FIT bytes, maximum 4 MiB. Content-Type: application/vnd.ant.fit or application/octet-stream.

HTTP Response
200 Authorised result
202 File accepted for processing
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Retry eligible failed file processing#

POST /v1/software/{app_id}/data-connect/athletes/{athlete_id}/imports/{session_id}/items/{item_id}/retry

Parameter Location Details
app_id path · required
athlete_id path · required
session_id path · required
item_id path · required
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Download an original from this app’s import#

GET /v1/software/{app_id}/data-connect/athletes/{athlete_id}/imports/{session_id}/items/{item_id}/original

Also requires training_data.read.

Parameter Location Details
app_id path · required
athlete_id path · required
session_id path · required
item_id path · required
HTTP Response
200 Authorised result
400 Invalid or unsupported input
401 Invalid or expired server app credential
403 Permission, entitlement or current resource access denied
404 Resource unavailable
409 Conflict, changed state or capacity limit

Discover current connection capabilities and intake limits#

GET /v1/workspace-builder

HTTP Response
200 Current capability flags, links and limits
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

Find explicitly selected active athletes by name#

GET /v1/workspace-builder/athletes

Returns only id, name and status. Names do not establish permission or a unique identity. Resolve ambiguity before uploading. Current selections are paginated in pages of 50.

Parameter Location Details
q query
offset query Range: 0–100000. Default: 0.
HTTP Response
200 Selected athletes, offset and has_more
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

Create and select one athlete with explicit athlete-create permission#

POST /v1/workspace-builder/athletes

Permission defaults off. Reuse the same request_id and exact payload after interruption. Conflicting reuse returns 409. A removed selection cannot be restored by replay. Active paid subscription required; at most 100 new intake athlete requests per day, 1000 retained per workspace and 50 selected athletes per connection. Limit or lost access returns 403. This creates an Athlete record, not a login or provider connection.

Body: JSON. See the OpenAPI contract for required fields and AI tools for the builder workflow.

HTTP Response
200 Identical creation replay
201 Created athlete ID
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

List this connection’s latest 50 imports for a selected athlete#

GET /v1/workspace-builder/athletes/{athlete_id}/imports

Parameter Location Details
athlete_id path · required
HTTP Response
200 Scoped import sessions
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

Admit a bounded FIT/FIT.GZ import manifest#

POST /v1/workspace-builder/athletes/{athlete_id}/imports

Requires import permission, current athlete selection and an active paid subscription. Body athlete_id must match the path. Reuse request_id and the exact manifest to resume. Maximum 200 files, 4 MiB per file and expanded FIT, 200 MiB per batch, 100 manifests per UTC day and 1000 retained per workspace. Limit or lost access returns 403. Only this connection can use this credential to read its import status and originals; no existing athlete ride-history access is added. Already stored files continue processing under current workspace, athlete and privacy restrictions after connection revocation. No ZIP archive support.

Parameter Location Details
athlete_id path · required

Body: JSON. See the OpenAPI contract for required fields and AI tools for the builder workflow.

HTTP Response
200 Replayed import session
201 New import session
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

Read this connection’s import items and states#

GET /v1/workspace-builder/athletes/{athlete_id}/imports/{session_id}

Parameter Location Details
athlete_id path · required
session_id path · required
HTTP Response
200 Import session and items
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

Upload original file bytes matching the admitted item hash and size#

PUT /v1/workspace-builder/athletes/{athlete_id}/imports/{session_id}/items/{item_id}

Parameter Location Details
athlete_id path · required
session_id path · required
item_id path · required

Body: raw FIT bytes, maximum 4 MiB. Content-Type: application/vnd.ant.fit or application/octet-stream.

HTTP Response
200 Previously stored item
202 Stored and queued
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
415 Send application/octet-stream
429 Workspace or release limit
503 Storage unavailable

Explicitly retry an eligible processing failure#

POST /v1/workspace-builder/athletes/{athlete_id}/imports/{session_id}/items/{item_id}/retry

Parameter Location Details
athlete_id path · required
session_id path · required
item_id path · required
HTTP Response
202 Queued for processing
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

Download this connection’s exact stored original#

GET /v1/workspace-builder/athletes/{athlete_id}/imports/{session_id}/items/{item_id}/original

Parameter Location Details
athlete_id path · required
session_id path · required
item_id path · required
HTTP Response
200 Private original bytes
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

List up to 50 Projects currently granted to this connection#

GET /v1/workspace-builder/projects

HTTP Response
200 Selected Projects only
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

Create an internal Project and grant this connection access#

POST /v1/workspace-builder/projects

Uses the canonical paid creation transition. Reuse the same request_key and payload for retries. Up to 50 workspace setup records. Does not call a model, provision external hosting, buy infrastructure or publish. Removing Project access prevents a creation replay from restoring it.

Body: JSON. See the OpenAPI contract for required fields and AI tools for the builder workflow.

HTTP Response
200 Replayed Project
201 Created Project
202 Saved; preparation needs attention
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

Inspect Project state and allowed operations#

GET /v1/workspace-builder/projects/{project_id}/inspect

Parameter Location Details
project_id path · required
HTTP Response
200 Project-scoped result
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

Read the active source#

GET /v1/workspace-builder/projects/{project_id}/source

Parameter Location Details
project_id path · required
HTTP Response
200 Project-scoped result
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

Read the selected working source#

GET /v1/workspace-builder/projects/{project_id}/working-source

Parameter Location Details
project_id path · required
HTTP Response
200 Project-scoped result
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

List saved versions#

GET /v1/workspace-builder/projects/{project_id}/releases

Parameter Location Details
project_id path · required
HTTP Response
200 Project-scoped result
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

Read saved-version review evidence#

GET /v1/workspace-builder/projects/{project_id}/review/{version}

Parameter Location Details
project_id path · required
version path · required
HTTP Response
200 Project-scoped result
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

Read a saved private candidate#

GET /v1/workspace-builder/projects/{project_id}/release-source/{version}

Parameter Location Details
project_id path · required
version path · required
HTTP Response
200 Project-scoped result
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

Save a private static candidate for owner review#

PUT /v1/workspace-builder/projects/{project_id}/stage

Same limits and immutable release validation as app-specific stage. Never publishes. Reuses a stable release_id for retries. Existing live and working versions must match.

Parameter Location Details
project_id path · required
If-Match header · required
If-Working-Match header · required Working version UUID followed by colon and generation

Body: JSON. See the OpenAPI contract for required fields and AI tools for the builder workflow.

HTTP Response
200 Saved version and private preview URL
400 Invalid bounded input
401 Invalid proof
402 Subscription required
403 Current permission denies access
404 Project or operation unavailable
409 State changed or preparation incomplete
413 Package too large
429 Workspace or release limit
503 Storage unavailable

Response schemas#

See the data model for field meanings and the OpenAPI JSON for complete machine-readable response schemas. The downloadable contract includes only implemented server endpoints.

Your software. A managed foundation. MovePacket · Private beta
Search across the MovePacket guides · Esc to close