File upload

All workflows require at least one file to be processed. Our API endpoints expect you to provide an URL for the file. If you are unable to generate a URL for your files, you can use our temporary upload server to help getting you started. The upload flow looks like:

  • Request: You request an uploadUrl and an downloadUrl from our server.
  • Upload: You then proceed to upload your local file to the provided uploadUrl.
  • Use: Once your upload is completed, you can use the downloadUrl on any endpoint that requires a file

Requesting signed URLs

Let's go ahead and request our uploadUrl and a downloadUrl:

curl --request GET \
	--url https://developer-api.moises.ai/api/upload \
	--header 'Authorization: your-api-key-here'

Uploading a file

We can now start uploading our local file to the uploadUrl we received from the previous step:

curl --request PUT \
	--url https://storage.googleapis.com/upload/something \
	--header 'content-type: multipart/form-data' \
	--form filedata=@./track.mp3

Using the file

Since the upload is now completed, we can now use the downloadUrl we received from the first step on any endpoint that requires a file:

curl --request POST \
	--url https://developer-api.moises.ai/api/job \
	--header 'Authorization: your-api-key-here' \
	--header 'Content-Type: application/json' \
	--data '{
  "name": "My job 123",
  "workflow": "my-workflow-id",
  "params": {
    "inputUrl": "https://storage.googleapis.com/download/something"
  }
}'