Get card metadata | Moov Documentation

Get card metadata

Look up metadata for a card without linking it to a Moov account.

Only use this endpoint if you have provided Moov with a copy of your PCI attestation of compliance.

To access this endpoint using an access token you'll need to specify the /card-metadata.read scope.

Request Format

POST

/card-metadata

Example Request

curl -X POST "https://api.moov.io/card-metadata" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.07.00" \
  -d '{
  "cardNumber": "4111111111111111"
}'

Code Examples

JavaScript

import { Moov } from "@moovio/sdk";

const moov = new Moov({
  security: {
    username: "",
    password: "",
  },
});

async function run() {
  const result = await moov.cards.getMetadata({
    cardNumber: "4111111111111111",
  });

console.log(result);
}

run();

PHP

declare(strict_types=1);

require 'vendor/autoload.php';

use Moov\MoovPhp;
use Moov\MoovPhp\Models\Components;

$sdk = MoovPhp\Moov::builder()
    ->setSecurity(
        new Components\Security(
            username: '',
            password: '',
        )
    )
    ->build();

$request = new Components\CardMetadataRequest(
    cardNumber: '4111111111111111',
);

$response = $sdk->cards->getMetadata(
    request: $request
);

if ($response->cardMetadata !== null) {
    // handle response
}

Java

package hello.world;

import io.moov.sdk.Moov;
import io.moov.sdk.models.components.CardMetadataRequest;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.errors.CardMetadataRequestError;
import io.moov.sdk.models.errors.GenericError;
import io.moov.sdk.models.operations.GetCardMetadataResponse;
import java.lang.Exception;

public class Application {

public static void main(String[] args) throws GenericError, CardMetadataRequestError, Exception {

Moov sdk = Moov.builder()
                .security(Security.builder()
                    .username("")
                    .password("")
                    .build())
            .build();

CardMetadataRequest req = CardMetadataRequest.builder()
                .cardNumber("4111111111111111")
                .build();

GetCardMetadataResponse res = sdk.cards().getMetadata()
                .request(req)
                .call();

if (res.cardMetadata().isPresent()) {
            System.out.println(res.cardMetadata().get());
        }
    }
}

Python

from moovio_sdk import Moov
from moovio_sdk.models import components

with Moov(
    security=components.Security(
        username="",
        password="",
    ),
) as moov:

res = moov.cards.get_metadata(e2ee={
        "token": "eyJhbGciOiJFQ0RILUVTK0EyNTZLVyIsImVuYyI6IkEyNTZHQ00iLCJlcGsiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTUyMSIsIngiOiJBS0NYVDM1WVdvTm8wbzExNy1SU0dqUGg3alN1NjFmLUhnYkx1dW0xVG1ueTRlcW5yX2hyU0hpY0w1d3gwODRCWDBRZjVTdEtkRUoydzY2ZUJqWHprRV9OIiwieSI6IkFIMEJfT2RaYTQtbG43dGJ4M3VBdlc1NDNQRE9HUXBCTDloRFFNWjlTQXNfOW05UWN3dnhRd1hrb1VrM3VzT1FnVV9ySVFrNFRoZ1NTUzV4UlhKcm5ZaTkifSwia2lkIjoiYmRvV3pLekpKUGw0TVFIaENDa05WYTZlZ1dmYi02V1haSjZKTFZqQ0hWMD0ifQ.HalyoHsfufBJEODd2lD9ThQvvVWw3b2kgWDLHGxmHhMv8rODyLL_Ug.rpQP178t8Ed_pUU2.Sn9UFeVoegAxiMUv11q7l3M0y9YHSLYi2n_JB7n7Pc777_47-icfaxstJemT0IC81w.akkq1EBxzWkBr4vEomSpWA",
    }, card_number="4111111111111111")

# Handle response
    print(res)

Ruby

require 'moov_ruby'

Models = ::Moov::Models
s = ::Moov::Client.new(
  security: Models::Components::Security.new(
    username: '',
    password: ''
  )
)

req = Models::Components::CardMetadataRequest.new(
  card_number: '4111111111111111'
)
res = s.cards.get_metadata(request: req)

unless res.card_metadata.nil?
  # handle response
end

C#

using Moov.Sdk;
using Moov.Sdk.Models.Components;

var sdk = new MoovClient(security: new Security() {
    Username = "",
    Password = "",
});

CardMetadataRequest req = new CardMetadataRequest() {
    CardNumber = "4111111111111111",
};

var res = await sdk.Cards.GetMetadataAsync(req);

// handle response

Example Response

{
  "bin": "411111",
  "brand": "Visa",
  "cardCategory": "CLASSIC",
  "cardType": "credit",
  "commercial": false,
  "domesticPullFromCard": "supported",
  "domesticPushToCard": "standard",
  "issuer": "GRINGOTTS BANK",
  "issuerCountry": "US",
  "issuerPhone": "8185551212",
  "issuerURL": "HTTPS://WWW.EXAMPLE.COM/",
  "regulated": false
}

Error Responses

Example of an error response:

{
  "error": "string"
}

Note

Set this header to v2026.07.00 to use the API described in this specification. When omitted, the server defaults to v2024.01.00, which may not match the behavior documented here.