curl --request PATCH \
--url https://api.meow.com/v1/cards/{card_id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"nickname": "<string>",
"spending_controls": {
"per_transaction_limit": 123,
"daily_limit": 500000000,
"weekly_limit": 500000000,
"monthly_limit": 500000000,
"yearly_limit": 500000000,
"all_time_limit": 500000000
},
"allowed_categories": [],
"spending_restriction": {
"merchants": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
}
'import requests
url = "https://api.meow.com/v1/cards/{card_id}"
payload = {
"nickname": "<string>",
"spending_controls": {
"per_transaction_limit": 123,
"daily_limit": 500000000,
"weekly_limit": 500000000,
"monthly_limit": 500000000,
"yearly_limit": 500000000,
"all_time_limit": 500000000
},
"allowed_categories": [],
"spending_restriction": { "merchants": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"] }
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
nickname: '<string>',
spending_controls: {
per_transaction_limit: 123,
daily_limit: 500000000,
weekly_limit: 500000000,
monthly_limit: 500000000,
yearly_limit: 500000000,
all_time_limit: 500000000
},
allowed_categories: [],
spending_restriction: {merchants: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']}
})
};
fetch('https://api.meow.com/v1/cards/{card_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.meow.com/v1/cards/{card_id}"
payload := strings.NewReader("{\n \"nickname\": \"<string>\",\n \"spending_controls\": {\n \"per_transaction_limit\": 123,\n \"daily_limit\": 500000000,\n \"weekly_limit\": 500000000,\n \"monthly_limit\": 500000000,\n \"yearly_limit\": 500000000,\n \"all_time_limit\": 500000000\n },\n \"allowed_categories\": [],\n \"spending_restriction\": {\n \"merchants\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.meow.com/v1/cards/{card_id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"nickname\": \"<string>\",\n \"spending_controls\": {\n \"per_transaction_limit\": 123,\n \"daily_limit\": 500000000,\n \"weekly_limit\": 500000000,\n \"monthly_limit\": 500000000,\n \"yearly_limit\": 500000000,\n \"all_time_limit\": 500000000\n },\n \"allowed_categories\": [],\n \"spending_restriction\": {\n \"merchants\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meow.com/v1/cards/{card_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"nickname\": \"<string>\",\n \"spending_controls\": {\n \"per_transaction_limit\": 123,\n \"daily_limit\": 500000000,\n \"weekly_limit\": 500000000,\n \"monthly_limit\": 500000000,\n \"yearly_limit\": 500000000,\n \"all_time_limit\": 500000000\n },\n \"allowed_categories\": [],\n \"spending_restriction\": {\n \"merchants\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n }\n}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.meow.com/v1/cards/{card_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'nickname' => '<string>',
'spending_controls' => [
'per_transaction_limit' => 123,
'daily_limit' => 500000000,
'weekly_limit' => 500000000,
'monthly_limit' => 500000000,
'yearly_limit' => 500000000,
'all_time_limit' => 500000000
],
'allowed_categories' => [
],
'spending_restriction' => [
'merchants' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}const url = 'https://api.meow.com/v1/cards/{card_id}';
const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
nickname: '<string>',
spending_controls: {
per_transaction_limit: 123,
daily_limit: 500000000,
weekly_limit: 500000000,
monthly_limit: 500000000,
yearly_limit: 500000000,
all_time_limit: 500000000
},
allowed_categories: [],
spending_restriction: {merchants: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));using RestSharp;
var options = new RestClientOptions("https://api.meow.com/v1/cards/{card_id}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-api-key", "<api-key>");
request.AddJsonBody("{\n \"nickname\": \"<string>\",\n \"spending_controls\": {\n \"per_transaction_limit\": 123,\n \"daily_limit\": 500000000,\n \"weekly_limit\": 500000000,\n \"monthly_limit\": 500000000,\n \"yearly_limit\": 500000000,\n \"all_time_limit\": 500000000\n },\n \"allowed_categories\": [],\n \"spending_restriction\": {\n \"merchants\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n }\n}", false);
var response = await client.PatchAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"nickname\": \"<string>\",\n \"spending_controls\": {\n \"per_transaction_limit\": 123,\n \"daily_limit\": 500000000,\n \"weekly_limit\": 500000000,\n \"monthly_limit\": 500000000,\n \"yearly_limit\": 500000000,\n \"all_time_limit\": 500000000\n },\n \"allowed_categories\": [],\n \"spending_restriction\": {\n \"merchants\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n }\n}")
val request = Request.Builder()
.url("https://api.meow.com/v1/cards/{card_id}")
.patch(body)
.addHeader("x-api-key", "<api-key>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"nickname": "<string>",
"spending_controls": [
"per_transaction_limit": 123,
"daily_limit": 500000000,
"weekly_limit": 500000000,
"monthly_limit": 500000000,
"yearly_limit": 500000000,
"all_time_limit": 500000000
],
"allowed_categories": [],
"spending_restriction": ["merchants": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"]]
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.meow.com/v1/cards/{card_id}")!
var request = URLRequest(url: url)
request.httpMethod = "PATCH"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"x-api-key": "<api-key>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))falsefalse$headers=@{}
$headers.Add("x-api-key", "<api-key>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api.meow.com/v1/cards/{card_id}' -Method PATCH -Headers $headers -ContentType 'application/json' -Body '{
"nickname": "<string>",
"spending_controls": {
"per_transaction_limit": 123,
"daily_limit": 500000000,
"weekly_limit": 500000000,
"monthly_limit": 500000000,
"yearly_limit": 500000000,
"all_time_limit": 500000000
},
"allowed_categories": [],
"spending_restriction": {
"merchants": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
}'{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"display_name": "<string>",
"last_four": "<string>",
"is_physical": true,
"cardholder": {
"name": "<string>",
"public_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"created_at": "2023-11-07T05:31:56Z",
"is_single_use": false,
"expiration": "2023-11-07T05:31:56Z",
"spending_restriction": {
"merchants": [
"<string>"
]
},
"allowed_categories": []
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Update Card
Updates a card you created via the API. Freeze or unfreeze it with the status field, replace its spend limits with spending_controls, or change its merchant restriction with spending_restriction and its allowed merchant categories. All fields are optional; omitted fields are left unchanged. Read the current limits back from Get Card Limits.
curl --request PATCH \
--url https://api.meow.com/v1/cards/{card_id} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"nickname": "<string>",
"spending_controls": {
"per_transaction_limit": 123,
"daily_limit": 500000000,
"weekly_limit": 500000000,
"monthly_limit": 500000000,
"yearly_limit": 500000000,
"all_time_limit": 500000000
},
"allowed_categories": [],
"spending_restriction": {
"merchants": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
}
'import requests
url = "https://api.meow.com/v1/cards/{card_id}"
payload = {
"nickname": "<string>",
"spending_controls": {
"per_transaction_limit": 123,
"daily_limit": 500000000,
"weekly_limit": 500000000,
"monthly_limit": 500000000,
"yearly_limit": 500000000,
"all_time_limit": 500000000
},
"allowed_categories": [],
"spending_restriction": { "merchants": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"] }
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
nickname: '<string>',
spending_controls: {
per_transaction_limit: 123,
daily_limit: 500000000,
weekly_limit: 500000000,
monthly_limit: 500000000,
yearly_limit: 500000000,
all_time_limit: 500000000
},
allowed_categories: [],
spending_restriction: {merchants: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']}
})
};
fetch('https://api.meow.com/v1/cards/{card_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.meow.com/v1/cards/{card_id}"
payload := strings.NewReader("{\n \"nickname\": \"<string>\",\n \"spending_controls\": {\n \"per_transaction_limit\": 123,\n \"daily_limit\": 500000000,\n \"weekly_limit\": 500000000,\n \"monthly_limit\": 500000000,\n \"yearly_limit\": 500000000,\n \"all_time_limit\": 500000000\n },\n \"allowed_categories\": [],\n \"spending_restriction\": {\n \"merchants\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.meow.com/v1/cards/{card_id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"nickname\": \"<string>\",\n \"spending_controls\": {\n \"per_transaction_limit\": 123,\n \"daily_limit\": 500000000,\n \"weekly_limit\": 500000000,\n \"monthly_limit\": 500000000,\n \"yearly_limit\": 500000000,\n \"all_time_limit\": 500000000\n },\n \"allowed_categories\": [],\n \"spending_restriction\": {\n \"merchants\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meow.com/v1/cards/{card_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"nickname\": \"<string>\",\n \"spending_controls\": {\n \"per_transaction_limit\": 123,\n \"daily_limit\": 500000000,\n \"weekly_limit\": 500000000,\n \"monthly_limit\": 500000000,\n \"yearly_limit\": 500000000,\n \"all_time_limit\": 500000000\n },\n \"allowed_categories\": [],\n \"spending_restriction\": {\n \"merchants\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n }\n}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.meow.com/v1/cards/{card_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'nickname' => '<string>',
'spending_controls' => [
'per_transaction_limit' => 123,
'daily_limit' => 500000000,
'weekly_limit' => 500000000,
'monthly_limit' => 500000000,
'yearly_limit' => 500000000,
'all_time_limit' => 500000000
],
'allowed_categories' => [
],
'spending_restriction' => [
'merchants' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}const url = 'https://api.meow.com/v1/cards/{card_id}';
const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
nickname: '<string>',
spending_controls: {
per_transaction_limit: 123,
daily_limit: 500000000,
weekly_limit: 500000000,
monthly_limit: 500000000,
yearly_limit: 500000000,
all_time_limit: 500000000
},
allowed_categories: [],
spending_restriction: {merchants: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));using RestSharp;
var options = new RestClientOptions("https://api.meow.com/v1/cards/{card_id}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-api-key", "<api-key>");
request.AddJsonBody("{\n \"nickname\": \"<string>\",\n \"spending_controls\": {\n \"per_transaction_limit\": 123,\n \"daily_limit\": 500000000,\n \"weekly_limit\": 500000000,\n \"monthly_limit\": 500000000,\n \"yearly_limit\": 500000000,\n \"all_time_limit\": 500000000\n },\n \"allowed_categories\": [],\n \"spending_restriction\": {\n \"merchants\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n }\n}", false);
var response = await client.PatchAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"nickname\": \"<string>\",\n \"spending_controls\": {\n \"per_transaction_limit\": 123,\n \"daily_limit\": 500000000,\n \"weekly_limit\": 500000000,\n \"monthly_limit\": 500000000,\n \"yearly_limit\": 500000000,\n \"all_time_limit\": 500000000\n },\n \"allowed_categories\": [],\n \"spending_restriction\": {\n \"merchants\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n }\n}")
val request = Request.Builder()
.url("https://api.meow.com/v1/cards/{card_id}")
.patch(body)
.addHeader("x-api-key", "<api-key>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"nickname": "<string>",
"spending_controls": [
"per_transaction_limit": 123,
"daily_limit": 500000000,
"weekly_limit": 500000000,
"monthly_limit": 500000000,
"yearly_limit": 500000000,
"all_time_limit": 500000000
],
"allowed_categories": [],
"spending_restriction": ["merchants": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"]]
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.meow.com/v1/cards/{card_id}")!
var request = URLRequest(url: url)
request.httpMethod = "PATCH"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"x-api-key": "<api-key>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))falsefalse$headers=@{}
$headers.Add("x-api-key", "<api-key>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api.meow.com/v1/cards/{card_id}' -Method PATCH -Headers $headers -ContentType 'application/json' -Body '{
"nickname": "<string>",
"spending_controls": {
"per_transaction_limit": 123,
"daily_limit": 500000000,
"weekly_limit": 500000000,
"monthly_limit": 500000000,
"yearly_limit": 500000000,
"all_time_limit": 500000000
},
"allowed_categories": [],
"spending_restriction": {
"merchants": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
}'{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"display_name": "<string>",
"last_four": "<string>",
"is_physical": true,
"cardholder": {
"name": "<string>",
"public_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"created_at": "2023-11-07T05:31:56Z",
"is_single_use": false,
"expiration": "2023-11-07T05:31:56Z",
"spending_restriction": {
"merchants": [
"<string>"
]
},
"allowed_categories": []
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Your Meow API key, sent in the x-api-key header for authentication.
Headers
Optional entity_id to scope requests to a specific entity.
Path Parameters
Card to act on. Use list_cards to find one.
Body
Set to inactive to freeze the card or active to unfreeze it.
active, inactive Rename the card's display name (max 30 characters).
1 - 30^[ -~]+$Replace the card's spend limits.
Show child attributes
Show child attributes
Restrict the card to these merchant categories. Pass null to clear all category restrictions.
Advertising, Airlines, Books and Newspapers, Car Rental, Charity, Clothing, Electronics, Entertainment, Facilities Expenses, Financial Institutions and Fees, Fuel, Furniture, Government Services, Grocery, Ground Transportation, Insurance, Legal, Lodging, Meals, Medical, Office Supplies, Parking, Political, Professional Services, Recruiting, Rent, Restaurants, Shipping, Software, Taxes, Taxis and Rideshare, Technology Infrastructure, Training and Education, Utilities, Vehicle Expenses Replace the card's merchant restriction. Pass null to clear it and allow any merchant.
Show child attributes
Show child attributes
Response
Successful Response
Unique card identifier.
Card name or nickname.
Last 4 digits of the card number.
Card status.
pending, active, suspended, closed, failed Whether this is a physical card.
Cardholder info.
Show child attributes
Show child attributes
When the card was created.
Whether this is a single-use card.
When the card expires.
Merchant spending restrictions.
Show child attributes
Show child attributes
Merchant categories the card is restricted to. Null means every category is allowed.
Advertising, Airlines, Books and Newspapers, Car Rental, Charity, Clothing, Electronics, Entertainment, Facilities Expenses, Financial Institutions and Fees, Fuel, Furniture, Government Services, Grocery, Ground Transportation, Insurance, Legal, Lodging, Meals, Medical, Office Supplies, Parking, Political, Professional Services, Recruiting, Rent, Restaurants, Shipping, Software, Taxes, Taxis and Rideshare, Technology Infrastructure, Training and Education, Utilities, Vehicle Expenses