Axsync API v2

Imports

Bring notes in from Markdown folders, Evernote ENEX, or Notion exports.

The import object

FieldTypeDescription
idstringUnique identifier, prefixed with im_.
source requiredstringmarkdown, enex or notion.
statusstringqueued, running, done or failed.
importedintegerNotes created so far.
errorsobject[]Per-file problems.
created_attimestampCreation time, RFC 3339 in UTC.

Example

{
  "id": "im_8f3k2Q9xLm",
  "source": "enex",
  "status": "running",
  "imported": 120,
  "errors": [],
  "created_at": "2026-09-14T08:21:07Z"
}

GET /imports

List imports. Returns a paginated list of imports.

Required scope: import:read

Query parameters

FieldTypeDescription
limitintegerPage size, 1–100. Default 25.
cursorstringCursor from the previous page.
sortstringField to sort by, prefix - for descending.
filterstringFilter expression, see Filtering and sorting.

Request

curl -X GET "https://api.axnode.net/v2/imports" \
  -H "Authorization: Bearer $AXSYNC_TOKEN"
const res = await fetch('https://api.axnode.net/v2/imports', {
  method: 'GET',
  headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();
import requests

res = requests.get(
    'https://api.axnode.net/v2/imports',
    headers={'Authorization': f'Bearer {token}'},
)
data = res.json()

Response 200

{
  "data": [
    {
      "id": "im_8f3k2Q9xLm",
      "source": "enex",
      "status": "running",
      "imported": 120,
      "errors": [],
      "created_at": "2026-09-14T08:21:07Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

POST /imports

Create an import. Creates an import.

Required scope: import:write

Body parameters

FieldTypeDescription
source requiredstringmarkdown, enex or notion.
statusstringqueued, running, done or failed.
importedintegerNotes created so far.
errorsobject[]Per-file problems.

Request

curl -X POST "https://api.axnode.net/v2/imports" \
  -H "Authorization: Bearer $AXSYNC_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"source": "enex"}'
const res = await fetch('https://api.axnode.net/v2/imports', {
  method: 'POST',
  headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({"source": "enex"})
});
const data = await res.json();
import requests

res = requests.post(
    'https://api.axnode.net/v2/imports',
    headers={'Authorization': f'Bearer {token}'}, json={"source": "enex"},
)
data = res.json()

Response 201

{
  "id": "im_8f3k2Q9xLm",
  "source": "enex",
  "status": "running",
  "imported": 120,
  "errors": [],
  "created_at": "2026-09-14T08:21:07Z"
}

GET /imports/{id}

Retrieve an import. Retrieves an import by its identifier.

Required scope: import:read

Request

curl -X GET "https://api.axnode.net/v2/imports/im_8f3k2Q9xLm" \
  -H "Authorization: Bearer $AXSYNC_TOKEN"
const res = await fetch('https://api.axnode.net/v2/imports/im_8f3k2Q9xLm', {
  method: 'GET',
  headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();
import requests

res = requests.get(
    'https://api.axnode.net/v2/imports/im_8f3k2Q9xLm',
    headers={'Authorization': f'Bearer {token}'},
)
data = res.json()

Response 200

{
  "id": "im_8f3k2Q9xLm",
  "source": "enex",
  "status": "running",
  "imported": 120,
  "errors": [],
  "created_at": "2026-09-14T08:21:07Z"
}