DELETE
/
api
/
v1
/
matches
/
{matchId}
/
save
Unsave match
curl --request DELETE \
  --url https://api.example.com/api/v1/matches/{matchId}/save
import requests

url = "https://api.example.com/api/v1/matches/{matchId}/save"

response = requests.delete(url)

print(response.text)
const options = {method: 'DELETE'};

fetch('https://api.example.com/api/v1/matches/{matchId}/save', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/v1/matches/{matchId}/save",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.example.com/api/v1/matches/{matchId}/save"

req, _ := http.NewRequest("DELETE", url, nil)

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.delete("https://api.example.com/api/v1/matches/{matchId}/save")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.example.com/api/v1/matches/{matchId}/save")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)

response = http.request(request)
puts response.read_body

Overview

Removes the matched property from the caller’s saved list by clearing the caller’s own save slot (savedByA if the caller is userA, savedByB otherwise). The other participant’s slot is never touched. Idempotent: unsaving a match that is not currently saved is a no-op and still returns 200 with savedAt: null.

Authentication

Bearer <accessToken> required. Scope: user. Requires completed onboarding + approved tenancy (requireOnboarded).

Path parameters

ParamTypeNotes
matchIdstring24-char ObjectId of the match. 400 if malformed.

Query parameters

None.

Request body

None.

Response — 200 OK

FieldTypeNotes
matchIdstringEcho of the match id.
savedAtnullAlways null after an unsave.

Example response

{
  "matchId": "66400a8f1c2b4d5e6f7a8e00",
  "savedAt": null
}

Error responses

StatusCodeMeaning
400VALIDATION_FAILEDmatchId is not a 24-char ObjectId.
401UNAUTHENTICATEDMissing, malformed, or expired access token.
404NOT_FOUNDNo such match, or the caller is not a participant.

Side effects

Clears the caller’s own savedByA / savedByB slot on the matches row.

See also

curl

curl -X DELETE https://api.swappr.co.uk/api/v1/matches/66400a8f1c2b4d5e6f7a8e00/save \
  -H "Authorization: Bearer $ACCESS_TOKEN"