Skip to content
96Astro API

API reference

Palm reading

AI readings of a palm photo: hand type, lines, mounts, and life themes. Photos are not stored.

  • 18 endpoints
  • POST JSON body
  • Bearer key

18 endpoints. Every endpoint is POST with a JSON body and your key in the Authorization header. Request schemas and examples come from the OpenAPI document; each example response was captured from the live engine, and each endpoint says where its data fields come from: a hand-written contract, a schema measured from several real answers, or the one example.

Palm: Lines Traced

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-lines-image

The life, head, heart and fate lines traced on a photo of the palm, with confidence for each, and an SVG overlay to lay over your copy. The photo is not stored or sent back.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • lines · array of object
  • overlay_svg · string
  • coordinate_space · object
  • notice · string
  • tier · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "lines": [
      {
        "name": "life",
        "points": [
          [
            420,
            380
          ],
          [
            360,
            520
          ],
          [
            380,
            700
          ],
          [
            470,
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Whole Palm Reading

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-reading

Every section of a palm reading from one photo, for the price of one call: hand type, fingers, lines, mounts and life themes.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "personality": {
        "observed": [
          "An example observation about personality."
        ],
        "reading": "An example reading of personality, based on what the photo shows.",
        "advice": "One practical sentence."
      },
      "career": {
        "observed": [
          "An example observation about career."
        ],
        "reading": "An example reading of career, based on what the photo shows.",
        "advice": "One practical sentence."
      },
      "love": {
        "observed": [
          "An example observation about love."
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Hand Type

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-hand-type

The hand's shape by the elements. Read from one photo of the palm by a vision model; the photo is not stored.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "hand_type": {
        "observed": [
          "An example observation about hand type."
        ],
        "reading": "An example reading of hand type, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Fingers

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-fingers

Each finger and the thumb. Read from one photo of the palm by a vision model; the photo is not stored.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "fingers": {
        "observed": [
          "An example observation about fingers."
        ],
        "reading": "An example reading of fingers, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Major Lines

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-major-lines

The life, head, heart and fate lines. Read from one photo of the palm by a vision model; the photo is not stored.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "major_lines": {
        "observed": [
          "An example observation about major lines."
        ],
        "reading": "An example reading of major lines, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Minor Lines

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-minor-lines

The Sun, health, marriage and travel lines. Read from one photo of the palm by a vision model; the photo is not stored.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "minor_lines": {
        "observed": [
          "An example observation about minor lines."
        ],
        "reading": "An example reading of minor lines, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Mounts

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-mounts

Which mounts are full and which flat. Read from one photo of the palm by a vision model; the photo is not stored.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "mounts": {
        "observed": [
          "An example observation about mounts."
        ],
        "reading": "An example reading of mounts, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Special Marks

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-special-features

Stars, crosses, islands and other marks, if visible. Read from one photo of the palm by a vision model; the photo is not stored.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "special_features": {
        "observed": [
          "An example observation about special features."
        ],
        "reading": "An example reading of special features, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Personality

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-personality

Character and temperament. Read from one photo of the palm by a vision model; the photo is not stored.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "personality": {
        "observed": [
          "An example observation about personality."
        ],
        "reading": "An example reading of personality, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Career

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-career

Work and calling. Read from one photo of the palm by a vision model; the photo is not stored.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "career": {
        "observed": [
          "An example observation about career."
        ],
        "reading": "An example reading of career, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Money

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-money

Money and how it is handled. Read from one photo of the palm by a vision model; the photo is not stored.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "money": {
        "observed": [
          "An example observation about money."
        ],
        "reading": "An example reading of money, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Love

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-love

Love and affection. Read from one photo of the palm by a vision model; the photo is not stored.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "love": {
        "observed": [
          "An example observation about love."
        ],
        "reading": "An example reading of love, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Marriage

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-marriage

Marriage and long partnership. Read from one photo of the palm by a vision model; the photo is not stored.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "marriage": {
        "observed": [
          "An example observation about marriage."
        ],
        "reading": "An example reading of marriage, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Vitality

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-health

General vitality and habits, never a diagnosis. Read from one photo of the palm by a vision model; the photo is not stored.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "health": {
        "observed": [
          "An example observation about health."
        ],
        "reading": "An example reading of health, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Challenges

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-challenges

Difficulties to prepare for. Read from one photo of the palm by a vision model; the photo is not stored.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "challenges": {
        "observed": [
          "An example observation about challenges."
        ],
        "reading": "An example reading of challenges, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Luck

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-luck

Fortune and timing. Read from one photo of the palm by a vision model; the photo is not stored.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "luck": {
        "observed": [
          "An example observation about luck."
        ],
        "reading": "An example reading of luck, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
    "credits_used": 0,
    "warnings": [],
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm: Ask a Question

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-question

One question of your own, up to 300 characters, answered from a photo of the palm, with the full reading it draws on.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

questionstringRequired

One question to answer from the palm.

Limits: 3 to 300 characters

Example: What does my head line say about how I make decisions?

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string
  • question · string
  • answer · string

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "personality": {
        "observed": [
          "An example observation about personality."
        ],
        "reading": "An example reading of personality, based on what the photo shows.",
        "advice": "One practical sentence."
      }
    },
    "question": "What does my head line say about how I make decisions?",
    "answer": "An example answer based on what the photo shows.",
    "notice": "For reflection, not fact. This reading is not medical, legal or financial advice.",
    "tier": "fast",
    "language": "en"
  },
  "meta": {
    "request_id": "req_00000000000000000000",
    "api_version": "v1",
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.

Palm Compatibility

POSTAvailable

POSThttps://api.96astroapi.com/v1/palmistry/palm-compatibility

How two people connect, how their lives fit and what guidance follows, from a photo of each palm.

Credits
Metered, from 15 credits
Input
A photo
Output
JSON
Delivery
Direct response
Languages
26 languages; translated term names with labels
Headers
HeaderValue and description
AuthorizationRequiredBearer YOUR_API_KEY

Your sandbox (sk_test_...) or live (sk_live_...) key. X-API-Key: <key> is accepted instead.

Content-TypeRequiredapplication/json

The body is JSON.

Idempotency-KeyOptional<unique string>

Makes retries safe: a repeated key with the same body replays the stored response and is never charged twice. (1 to 200 characters)

Body · application/json
FieldDescription
image_base64stringRequired

The floor-plan image file, base64-encoded (a `data:image/...;base64,` prefix is accepted). PNG, JPEG or WebP; at most 3.75 MiB decoded and 8000 px a side.

Limits: 1 to 5400000 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

mime_typestring | nullOptional

The image's type. Required unless image_base64 is a data: URI; must match the file.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

tierstringOptional

fast (Claude Haiku) or balanced (Sonnet). Sets the price range.

Default: fast

Allowed values: fastbalanced

Example: fast

consentbooleanRequired

Must be true: the person in the photo agreed to this reading, and is an adult or has a guardian's agreement.

Allowed value: true

Example: true

languagestringOptional

Output language (ISO 639-1). The values listed are the ones this capability supports; any other is refused with 422 unsupported_language. Identifiers, enum values and numbers never change with language.

Default: en

Allowed values: enasbndeesfrguhiitjaknkomlmrnenlorpaplptrusitatetrur

second_image_base64stringRequired

The second person's palm, as image_base64.

Limits: at least 1 characters

Example: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAAgklEQVR42u3bQQoAIAgEQP//6fpCBsFWs2fBEbyJNcJTgICAgIDXACspgIeAp/aouvWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgGsN0+/F4cCNgQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE7QA/QbwMzAwgICPg7cAJxuHlDZty0owAAAABJRU5ErkJggg==

second_mime_typestring | nullOptional

The second photo's type, if it cannot be told from the data.

Default: null

Allowed values: image/pngimage/jpegimage/webp

Example: image/png

labelsstringOptional

Optional. Adds `meta.labels`: translated display names for the identifiers in the answer. `data` is unchanged. Free. Any other code is refused with 422 unsupported_language.

Allowed values: asbndeesfrguhiitknkomlmrnenlorpaplptrusitatetrur

Response · fields in data

The response contract: required fields are always present.

  • sections · object
  • notice · string
  • tier · string
  • language · string
  • compatibility · object

Try in Playground →Capability overview

Example request

Example response (illustrative)

200application/json
{
  "data": {
    "sections": {
      "connection": {
        "observed": [
          "An example observation about connection."
        ],
        "reading": "An example reading of connection, based on what the photo shows.",
        "advice": "One practical sentence."
      },
      "life": {
        "observed": [
          "An example observation about life."
        ],
        "reading": "An example reading of life, based on what the photo shows.",
        "advice": "One practical sentence."
      },
      "guidance": {
        "observed": [
          "An example observation about guidance."
  …

Written by hand from the documented shape: AI readings are not captured automatically. Real text, token counts and credits differ.

Error responses

  • 400invalid_request
  • 401invalid_key, expired_key
  • 402payment_required
  • 403account_suspended, plan_upgrade_required, plan_family_not_included, key_scope_denied, ip_not_allowed, origin_not_allowed, publishable_key_not_allowed
  • 404not_found
  • 409idempotency_conflict
  • 413payload_too_large
  • 422invalid_request, unsupported_language
  • 429rate_limited, quota_exhausted, spend_cap_reached, project_budget_exceeded
  • 500computation_failed
  • 502unavailable
  • 503unavailable, maintenance, temporarily_unavailable
  • 504deadline_exceeded

Errors are never charged. What each status means and what to do: errors.