Nekoweb API

Download OpenAPI specification:Download

License: Proprietary

The API allows you to interact with nekoweb server programmatically. You can use it to automate tasks like updating, creating and deleting files, and more.

Site

Site related endpoints.

/site/info/:username

Get information about a user's site. Replace :username with the username of the user. This endpoint doesn't require auth if requested from Nekoweb site.

Returns a JSON object with id, username, title, updates, followers, views, created_at and updated_at properties.

⚠ Note: no need to provide an API key fro this request as the endpoint is public.

Authorizations:
ApiKeyAuth
path Parameters
username
required
string
Example: fairfruit

Responses

Request samples

const fetch = require('node-fetch');

let url = 'https://nekoweb.org/api/site/info/fairfruit';

let options = {
  method: 'GET'
};

fetch(url, options)
  .then(res => res)
  .then(json => console.log(json))
  .catch(err => console.error('error:' + err));

Response samples

Content type
application/json
{
  • "id": 1855,
  • "username": "fairfruit",
  • "title": "Welcome to Fairfruit",
  • "updates": 5,
  • "followers": 0,
  • "views": 209,
  • "created_at": 1709235724576,
  • "updated_at": 1709597947291
}

Files

File related endpoints.

/files/create

Create a new file or folder.

Authorizations:
ApiKeyAuth
header Parameters
Authorization
string
Example: 177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d
Request Body schema: application/x-www-form-urlencoded
isFolder
boolean
pathname
string

Responses

Request samples

const { URLSearchParams } = require('url');
const fetch = require('node-fetch');
const encodedParams = new URLSearchParams();

encodedParams.set('isFolder', 'true');
encodedParams.set('pathname', 'test');

let url = 'https://nekoweb.org/api/files/create';

let options = {
  method: 'POST',
  headers: {
    Authorization: '177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d',
    'content-type': 'application/x-www-form-urlencoded'
  },
  body: encodedParams
};

fetch(url, options)
  .then(res => res)
  .then(json => console.log(json))
  .catch(err => console.error('error:' + err));

Response samples

Content type
text/plain
Folder created

/files/upload

Upload a file or files. This will overwrite old files. Max 100MB.

Authorizations:
ApiKeyAuth
header Parameters
Authorization
string
Example: 177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d
Request Body schema: multipart/form-data
pathname
string
files
string <binary>

Responses

Request samples

const FormData = require('form-data');
const fetch = require('node-fetch');
const formData = new FormData();

formData.append('pathname', '/test');
formData.append('files', 'test.txt', { filepath: './test.txt' });

let url = 'https://nekoweb.org/api/files/upload';

let options = {
  method: 'POST',
  headers: {
    Authorization: '177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d'
  }
};

options.body = formData;

fetch(url, options)
  .then(res => res)
  .then(json => console.log(json))
  .catch(err => console.error('error:' + err));

Response samples

Content type
text/plain
Files uploaded

/files/delete

Delete a file or folder.

Authorizations:
ApiKeyAuth
header Parameters
Authorization
string
Example: 177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d
Request Body schema: application/x-www-form-urlencoded
pathname
string

Responses

Request samples

const { URLSearchParams } = require('url');
const fetch = require('node-fetch');
const encodedParams = new URLSearchParams();

encodedParams.set('pathname', 'test');

let url = 'https://nekoweb.org/api/files/delete';

let options = {
  method: 'POST',
  headers: {
    Authorization: '177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d',
    'content-type': 'application/x-www-form-urlencoded'
  },
  body: encodedParams
};

fetch(url, options)
  .then(res => res)
  .then(json => console.log(json))
  .catch(err => console.error('error:' + err));

Response samples

Content type
text/plain
File/folder deleted

/files/rename

Rename/Move a file or folder.

Authorizations:
ApiKeyAuth
header Parameters
Authorization
string
Example: 177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d
Request Body schema: application/x-www-form-urlencoded
pathname
string
newpathname
string

Responses

Request samples

const { URLSearchParams } = require('url');
const fetch = require('node-fetch');
const encodedParams = new URLSearchParams();

encodedParams.set('pathname', 'test');
encodedParams.set('newpathname', 'test2');

let url = 'https://nekoweb.org/api/files/rename';

let options = {
  method: 'POST',
  headers: {
    Authorization: '177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d',
    'content-type': 'application/x-www-form-urlencoded'
  },
  body: encodedParams
};

fetch(url, options)
  .then(res => res)
  .then(json => console.log(json))
  .catch(err => console.error('error:' + err));

Response samples

Content type
text/plain
File/folder renamed

/files/edit

Edit a file.

Authorizations:
ApiKeyAuth
header Parameters
Authorization
string
Example: 177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d
Request Body schema: multipart/form-data
pathname
string
content
string

Responses

Request samples

const FormData = require('form-data');
const fetch = require('node-fetch');
const formData = new FormData();

formData.append('pathname', 'test/test.txt');
formData.append('content', 'Hello world');

let url = 'https://nekoweb.org/api/files/edit';

let options = {
  method: 'POST',
  headers: {
    Authorization: '177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d'
  }
};

options.body = formData;

fetch(url, options)
  .then(res => res)
  .then(json => console.log(json))
  .catch(err => console.error('error:' + err));

Response samples

Content type
text/plain
File edited

/files/readfolder

Read a folder.

Returns a JSON array with objects like this: {name: String, dir: Boolean}

Authorizations:
ApiKeyAuth
query Parameters
pathname
string
Example: pathname=test
header Parameters
Authorization
string
Example: 177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d

Responses

Request samples

const fetch = require('node-fetch');

let url = 'https://nekoweb.org/api/files/readfolder?pathname=test';

let options = {
  method: 'GET',
  headers: {
    Authorization: '177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d'
  }
};

fetch(url, options)
  .then(res => res)
  .then(json => console.log(json))
  .catch(err => console.error('error:' + err));

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Big Files

Big file related endpoints.

/files/big/create

Create upload for a big file. Allows you to upload files larger than 100MB.

Authorizations:
ApiKeyAuth
header Parameters
Authorization
string
Example: 177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d

Responses

Request samples

const fetch = require('node-fetch');

let url = 'https://nekoweb.org/api/files/big/create';

let options = {
  method: 'GET',
  headers: {
    Authorization: '177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d'
  }
};

fetch(url, options)
  .then(res => res)
  .then(json => console.log(json))
  .catch(err => console.error('error:' + err));

Response samples

Content type
application/json
{
  • "id": "fnc8orbox7dk71y1kzwke"
}

/files/big/append

Append a chunk to a big file upload.

⚠ Note: you'll need to call /files/big/move or /files/import/:bigid to persist the file.

Authorizations:
ApiKeyAuth
header Parameters
Authorization
string
Example: 177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d
Request Body schema: multipart/form-data
id
string
file
string <binary>

Responses

Request samples

const FormData = require('form-data');
const fetch = require('node-fetch');
const formData = new FormData();

formData.append('id', 'fnc8orbox7dk71y1kzwke');
formData.append('file', 'test.txt', { filepath: './test.txt' });

let url = 'https://nekoweb.org/api/files/big/append';

let options = {
  method: 'POST',
  headers: {
    Authorization: '177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d'
  }
};

options.body = formData;

fetch(url, options)
  .then(res => res)
  .then(json => console.log(json))
  .catch(err => console.error('error:' + err));

Response samples

Content type
text/plain
Appended

/files/big/move

Move a big file upload to the final location.

Authorizations:
ApiKeyAuth
header Parameters
Authorization
string
Example: 177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d
Request Body schema: application/x-www-form-urlencoded
id
string
pathname
string

Responses

Request samples

const { URLSearchParams } = require('url');
const fetch = require('node-fetch');
const encodedParams = new URLSearchParams();

encodedParams.set('id', 'fnc8orbox7dk71y1kzwke');
encodedParams.set('pathname', 'test.txt');

let url = 'https://nekoweb.org/api/files/big/move';

let options = {
  method: 'POST',
  headers: {
    Authorization: '177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d',
    'content-type': 'application/x-www-form-urlencoded'
  },
  body: encodedParams
};

fetch(url, options)
  .then(res => res)
  .then(json => console.log(json))
  .catch(err => console.error('error:' + err));

Response samples

Content type
text/plain
Moved

/files/import/:bigid

Import a zip file from a big file upload. Replace :bigid with the id of the big file upload.

⚠ Note: should be called after calling /files/big/append to upload the archive, with the same id.

Authorizations:
ApiKeyAuth
path Parameters
bigid
required
string
Example: il4w31f9m1aqqqe8op7hp
header Parameters
Authorization
string
Example: 177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d

Responses

Request samples

const fetch = require('node-fetch');

let url = 'https://nekoweb.org/api/files/import/il4w31f9m1aqqqe8op7hp';

let options = {
  method: 'POST',
  headers: {
    Authorization: '177e9b41e8b35b5e3cf90dd4a1ce90b9c8d1e6aa79863c0ebfd9c1e5dbb4d24d'
  }
};

fetch(url, options)
  .then(res => res)
  .then(json => console.log(json))
  .catch(err => console.error('error:' + err));

Response samples

Content type
text/plain
Imported