Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
061b1e2
fix(api): move RawScraperError to shared types
stainless-app[bot] May 15, 2026
9d881aa
docs(api): update instagram method docstrings
stainless-app[bot] May 15, 2026
8c8a2af
codegen metadata
stainless-app[bot] May 15, 2026
7a89dc4
codegen metadata
stainless-app[bot] May 15, 2026
6dff172
codegen metadata
stainless-app[bot] May 15, 2026
6619d0b
codegen metadata
stainless-app[bot] May 21, 2026
72b71e3
feat: honest cached /v1/posts video URLs + transcript read-through ca…
stainless-app[bot] May 27, 2026
17de04a
feat(api): add creator_emails resource with lookup method
stainless-app[bot] Jun 5, 2026
075fe17
codegen metadata
stainless-app[bot] Jun 8, 2026
6a2e780
codegen metadata
stainless-app[bot] Jun 10, 2026
ef29fd6
docs(api): clarify handle parameter format in youtube resource
stainless-app[bot] Jun 16, 2026
d894067
docs(api): clarify top_engagement calculation and pagination in posts…
stainless-app[bot] Jul 9, 2026
cd9a4dd
codegen metadata
stainless-app[bot] Jul 11, 2026
c640721
codegen metadata
stainless-app[bot] Jul 16, 2026
4af677d
feat(stlc): configurable CI runner and private-production-repo suppor…
stainless-app[bot] Jul 18, 2026
0565b01
feat(api): add location_unverified field to search response types
stainless-app[bot] Jul 18, 2026
83b9799
feat(api): add upstream_unavailable error value to RawScraperError
stainless-app[bot] Jul 18, 2026
07bd9f9
codegen metadata
stainless-app[bot] Jul 19, 2026
0b64f9c
docs(api): update pricing and limits documentation in instagram resource
stainless-app[bot] Jul 19, 2026
ef30fdf
docs(api): clarify transient upstream recovery in instagram batch pos…
stainless-app[bot] Jul 20, 2026
e6a5e0b
feat(api): add evidence/provenance fields to creator match responses
stainless-app[bot] Jul 22, 2026
0f95b69
docs(api): update evidence field documentation in match_info
stainless-app[bot] Jul 23, 2026
c42b9a3
release: 0.1.0
stainless-app[bot] Jul 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
lint:
timeout-minutes: 10
name: lint
runs-on: ${{ github.repository == 'stainless-sdks/influship-api-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: (github.event_name == 'push' || github.event.pull_request.head.repo.fork) && (github.event_name != 'push' || github.event.head_commit.message != 'codegen metadata')
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Expand All @@ -44,7 +44,7 @@ jobs:
permissions:
contents: read
id-token: write
runs-on: ${{ github.repository == 'stainless-sdks/influship-api-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

Expand Down Expand Up @@ -84,7 +84,7 @@ jobs:
test:
timeout-minutes: 10
name: test
runs-on: ${{ github.repository == 'stainless-sdks/influship-api-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }}
if: github.event_name == 'push' || github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Expand Down
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.0.1"
".": "0.1.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 19
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/inf-labs/influship-api-3a7359b6f1bc29e6ba39142f71e31055407138bc92aac108c9de72dc3b0604a5.yml
openapi_spec_hash: b5814219a0ab7727c3571b1bbfc14ce3
config_hash: 32cf7a70e5eb35a8bead35d220e1eedb
configured_endpoints: 20
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/inf-labs/influship-api-5716dacad114d07a1967928deb4f75c83b7f5c216869e71faa8a492d562d509e.yml
openapi_spec_hash: 378afd712f29b04c835460e80498f6cb
config_hash: 7ea006cb87abb30bfc76a6af984a7b88
78 changes: 78 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Changelog

## 0.1.0 (2026-07-23)

Full Changelog: [v0.0.1...v0.1.0](https://github.com/Influship/influship-sdk-python/compare/v0.0.1...v0.1.0)

### Features

* **api:** add audience, brand alignment, key facts, vibe fields to creator response ([4c7bf09](https://github.com/Influship/influship-sdk-python/commit/4c7bf09985211ae6cb5c9784e8c60e186cf1f58f))
* **api:** add creator_emails resource with lookup method ([17de04a](https://github.com/Influship/influship-sdk-python/commit/17de04a149b10c676fe01cdf338ee9af40ae1e57))
* **api:** add creator_kinds parameter to search.create method ([712759a](https://github.com/Influship/influship-sdk-python/commit/712759ae241285079b0060ff896dc25c5cb25237))
* **api:** add evidence/provenance fields to creator match responses ([e6a5e0b](https://github.com/Influship/influship-sdk-python/commit/e6a5e0b481569b120f0839ad73158c9f544b488a))
* **api:** add get_post/get_transcript methods to instagram, update post types ([c5d60ec](https://github.com/Influship/influship-sdk-python/commit/c5d60ec1b410ffcb49ece5ff68299d695ba9da36))
* **api:** add location_unverified field to search response types ([0565b01](https://github.com/Influship/influship-sdk-python/commit/0565b01e5bac87f98f458a342d9c44ed54244a83))
* **api:** add pagination to creators lookalike, extract MatchInfo type, fix cursor passing ([3be1022](https://github.com/Influship/influship-sdk-python/commit/3be10226051e066b82f26fd99170612908ddda3a))
* **api:** add raw resource with instagram/youtube endpoints ([d765413](https://github.com/Influship/influship-sdk-python/commit/d765413037084f7ad577d00b201a636a864c2f6b))
* **api:** add search_id/total fields, remove cursor param from search.create ([bbd32c2](https://github.com/Influship/influship-sdk-python/commit/bbd32c2e4391a9f31543862afed49f9fa9ca3d8a))
* **api:** add upstream_unavailable error value to RawScraperError ([83b9799](https://github.com/Influship/influship-sdk-python/commit/83b9799bdf57d481fdf60324137907e4d733d20e))
* **api:** remove source field from instagram transcript response types ([2c24026](https://github.com/Influship/influship-sdk-python/commit/2c240264f2abd9865713409ac1fb151f2479f261))
* **api:** update instagram profile and youtube channel/transcript responses ([8b83650](https://github.com/Influship/influship-sdk-python/commit/8b83650ce59ca2f00bb2b8c0f7f8005862a1849d))
* Fix Stainless pagination and model warnings in SDK config ([2ae3c29](https://github.com/Influship/influship-sdk-python/commit/2ae3c29275bfe74e3399f0ef0c0d950ae388531c))
* Fix timeout enforcement and migrate Instagram scraper to curl ([c1a121d](https://github.com/Influship/influship-sdk-python/commit/c1a121d337de698699c7dac5a1fb5814648083c9))
* honest cached /v1/posts video URLs + transcript read-through cache + discovery seeding ([72b71e3](https://github.com/Influship/influship-sdk-python/commit/72b71e36366b017314942b78436a0ea6e7fd1e24))
* **internal/types:** support eagerly validating pydantic iterators ([252fe69](https://github.com/Influship/influship-sdk-python/commit/252fe69b3d9652bb8ff9f2bf731d63006ec5b0af))
* **internal:** implement indices array format for query and form serialization ([b0fb922](https://github.com/Influship/influship-sdk-python/commit/b0fb922140eac09079b68be14a023d14a3f3a510))
* Remove app-level quota system and align billing/rate-limit enforcement with Stripe + Redis ([c7d8a60](https://github.com/Influship/influship-sdk-python/commit/c7d8a6012df2e31b92554e9a8374f1b3217bbe44))
* **stlc:** configurable CI runner and private-production-repo support in workflow templates ([4af677d](https://github.com/Influship/influship-sdk-python/commit/4af677d5378960b14f2aaeed804b62b2c200c446))


### Bug Fixes

* **api:** make include parameter optional in creators retrieve method ([7dc834c](https://github.com/Influship/influship-sdk-python/commit/7dc834c23ef1d68df710b2de3baa996510c97b0d))
* **api:** move RawScraperError to shared types ([061b1e2](https://github.com/Influship/influship-sdk-python/commit/061b1e27385b033eb8966ebf8a02815b7dde26e4))
* **client:** add missing f-string prefix in file type error message ([cdd7fdb](https://github.com/Influship/influship-sdk-python/commit/cdd7fdb4104a72d2be89f7c6b48517abdb4285f4))
* **client:** preserve hardcoded query params when merging with user params ([77f87f2](https://github.com/Influship/influship-sdk-python/commit/77f87f2cca5dbacc34e894cf2c69e3f8f208842c))
* **deps:** bump minimum typing-extensions version ([1ebf842](https://github.com/Influship/influship-sdk-python/commit/1ebf84221a6cc9da7c4bcb414f47c4455f9b2dbe))
* ensure file data are only sent as 1 parameter ([76674d4](https://github.com/Influship/influship-sdk-python/commit/76674d4a000df97be89864108b9bf3923b4604f3))
* **pydantic:** do not pass `by_alias` unless set ([dba41e9](https://github.com/Influship/influship-sdk-python/commit/dba41e990d67482fc211cf0674e547c310a8eb26))
* sanitize endpoint path params ([825e363](https://github.com/Influship/influship-sdk-python/commit/825e363c5eb9b02a3e5fc5baa994fb711ea5cdab))
* **types:** remove model and provider from instagram transcript response types ([8944d7f](https://github.com/Influship/influship-sdk-python/commit/8944d7f405ad6e3597f397bebce7f13bc0df6fe3))


### Performance Improvements

* **client:** optimize file structure copying in multipart requests ([eca9767](https://github.com/Influship/influship-sdk-python/commit/eca97676e9a6a75faf45ea3bea0b8eefeac55b8b))


### Chores

* **ci:** skip lint on metadata-only changes ([5ee4369](https://github.com/Influship/influship-sdk-python/commit/5ee43696849a917cf7a65f66a8b298ebbc4fa2e7))
* **ci:** skip uploading artifacts on stainless-internal branches ([2c985c8](https://github.com/Influship/influship-sdk-python/commit/2c985c8141c06115d531bc9293bb1291a3d04d45))
* **internal:** add request options to SSE classes ([fa680d0](https://github.com/Influship/influship-sdk-python/commit/fa680d005639f7836e614b03c165791f1c64c0b3))
* **internal:** codegen related update ([6ed3406](https://github.com/Influship/influship-sdk-python/commit/6ed3406334c705ae2278a09a040b916c0432d9ae))
* **internal:** codegen related update ([a7d0c03](https://github.com/Influship/influship-sdk-python/commit/a7d0c03f03bae935f64b076c211d283ad9069495))
* **internal:** make `test_proxy_environment_variables` more resilient ([1775e30](https://github.com/Influship/influship-sdk-python/commit/1775e30216baabb1affe64be26b9455a35bc7a30))
* **internal:** make `test_proxy_environment_variables` more resilient to env ([2042983](https://github.com/Influship/influship-sdk-python/commit/20429833fae8ecd9dbe6eee1d140cdb9e0763260))
* **internal:** more robust bootstrap script ([09db9ca](https://github.com/Influship/influship-sdk-python/commit/09db9caf00714de6ccb7eccd314c0a903b6ea55f))
* **internal:** refactor Instagram response types to shared models, fix address_json type ([1ce31a9](https://github.com/Influship/influship-sdk-python/commit/1ce31a9406b653b08e333139febfb5acb01ca641))
* **internal:** reformat pyproject.toml ([c63d362](https://github.com/Influship/influship-sdk-python/commit/c63d362a824ea0145bb90d8be4e493463d32028c))
* **internal:** regenerate SDK with no functional changes ([2f56132](https://github.com/Influship/influship-sdk-python/commit/2f561321662c817f965ff9d4ad61e3b13f15de38))
* **internal:** tweak CI branches ([5eea6ab](https://github.com/Influship/influship-sdk-python/commit/5eea6ab384a360852d54e5617e92e0d8d090a12e))
* **internal:** update gitignore ([a47bc6c](https://github.com/Influship/influship-sdk-python/commit/a47bc6c615c786a620fad78eafb31927cbecc718))
* update Stainless production repos to influship org ([f92ef39](https://github.com/Influship/influship-sdk-python/commit/f92ef39428d669160509c279e52deb10343e2b2c))


### Documentation

* **api:** add MCP tool references to creators/posts/profiles/search methods ([fb75a8e](https://github.com/Influship/influship-sdk-python/commit/fb75a8eedb6c1e86edb35b94e82d0eb27b9f4537))
* **api:** clarify handle parameter format in youtube resource ([ef29fd6](https://github.com/Influship/influship-sdk-python/commit/ef29fd64380a379c0589b4bec19996ae85da389a))
* **api:** clarify top_engagement calculation and pagination in posts list ([d894067](https://github.com/Influship/influship-sdk-python/commit/d894067fb7587dd74c15cb6cc8b334933bdf6bee))
* **api:** clarify transient upstream recovery in instagram batch post lookup ([ef30fdf](https://github.com/Influship/influship-sdk-python/commit/ef30fdf93c710133f13a7e5e2cf04c2bf89e2584))
* **api:** correct profile to channel terminology in youtube channel method ([a8f561f](https://github.com/Influship/influship-sdk-python/commit/a8f561fde0da698d26689d699c394cbcb3475f8d))
* **api:** update evidence field documentation in match_info ([0f95b69](https://github.com/Influship/influship-sdk-python/commit/0f95b698268b32586b8d14edcb09685c0ba027be))
* **api:** update instagram method docstrings ([9d881aa](https://github.com/Influship/influship-sdk-python/commit/9d881aadfbbc7d742d739042a96c973a9824573f))
* **api:** update pricing and limits documentation in instagram resource ([0b64f9c](https://github.com/Influship/influship-sdk-python/commit/0b64f9c09ff15d8c73309855f065aae49e1cb870))
* **api:** update pricing documentation across creators/posts/profiles/raw/search ([b82801e](https://github.com/Influship/influship-sdk-python/commit/b82801e0c5cc55dc0509e3a8ac412518ca9745ce))
* **internal:** update MCP server package name in installation links ([7d78559](https://github.com/Influship/influship-sdk-python/commit/7d78559d721175e453eea56d8fab60a0f4c9a229))
* update examples ([53aa0d6](https://github.com/Influship/influship-sdk-python/commit/53aa0d622795bdc2076f69d67ac51525b814f7d6))
15 changes: 13 additions & 2 deletions api.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Shared Types

```python
from influship.types import CreatorBasic, ProfileSummary
from influship.types import CreatorBasic, ProfileSummary, RawScraperError
```

# Health
Expand Down Expand Up @@ -69,6 +69,18 @@ Methods:
- <code title="get /v1/profiles/{platform}/{username}">client.profiles.<a href="./src/influship/resources/profiles.py">get</a>(username, \*, platform) -> <a href="./src/influship/types/profile_get_response.py">ProfileGetResponse</a></code>
- <code title="post /v1/profiles/lookup">client.profiles.<a href="./src/influship/resources/profiles.py">lookup</a>(\*\*<a href="src/influship/types/profile_lookup_params.py">params</a>) -> <a href="./src/influship/types/profile_lookup_response.py">ProfileLookupResponse</a></code>

# CreatorEmails

Types:

```python
from influship.types import CreatorEmailLookupResponse
```

Methods:

- <code title="post /v1/creator-emails/lookup">client.creator_emails.<a href="./src/influship/resources/creator_emails.py">lookup</a>(\*\*<a href="src/influship/types/creator_email_lookup_params.py">params</a>) -> <a href="./src/influship/types/creator_email_lookup_response.py">CreatorEmailLookupResponse</a></code>

# Posts

Types:
Expand All @@ -91,7 +103,6 @@ Types:
from influship.types.raw import (
InstagramSinglePostResponse,
InstagramTranscriptResponse,
RawScraperError,
InstagramGetPostResponse,
InstagramGetPostsResponse,
InstagramGetProfileResponse,
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "influship"
version = "0.0.1"
version = "0.1.0"
description = "The official Python library for the Influship API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
63 changes: 62 additions & 1 deletion src/influship/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,14 @@
)

if TYPE_CHECKING:
from .resources import raw, posts, health, search, creators, profiles
from .resources import raw, posts, health, search, creators, profiles, creator_emails
from .resources.posts import PostsResource, AsyncPostsResource
from .resources.health import HealthResource, AsyncHealthResource
from .resources.search import SearchResource, AsyncSearchResource
from .resources.raw.raw import RawResource, AsyncRawResource
from .resources.creators import CreatorsResource, AsyncCreatorsResource
from .resources.profiles import ProfilesResource, AsyncProfilesResource
from .resources.creator_emails import CreatorEmailsResource, AsyncCreatorEmailsResource

__all__ = [
"Timeout",
Expand Down Expand Up @@ -154,6 +155,16 @@ def profiles(self) -> ProfilesResource:

return ProfilesResource(self)

@cached_property
def creator_emails(self) -> CreatorEmailsResource:
"""Look up known creator email addresses by creator ID or social username.

Empty or unresolved results are not billable.
"""
from .resources.creator_emails import CreatorEmailsResource

return CreatorEmailsResource(self)

@cached_property
def posts(self) -> PostsResource:
"""
Expand Down Expand Up @@ -381,6 +392,16 @@ def profiles(self) -> AsyncProfilesResource:

return AsyncProfilesResource(self)

@cached_property
def creator_emails(self) -> AsyncCreatorEmailsResource:
"""Look up known creator email addresses by creator ID or social username.

Empty or unresolved results are not billable.
"""
from .resources.creator_emails import AsyncCreatorEmailsResource

return AsyncCreatorEmailsResource(self)

@cached_property
def posts(self) -> AsyncPostsResource:
"""
Expand Down Expand Up @@ -550,6 +571,16 @@ def profiles(self) -> profiles.ProfilesResourceWithRawResponse:

return ProfilesResourceWithRawResponse(self._client.profiles)

@cached_property
def creator_emails(self) -> creator_emails.CreatorEmailsResourceWithRawResponse:
"""Look up known creator email addresses by creator ID or social username.

Empty or unresolved results are not billable.
"""
from .resources.creator_emails import CreatorEmailsResourceWithRawResponse

return CreatorEmailsResourceWithRawResponse(self._client.creator_emails)

@cached_property
def posts(self) -> posts.PostsResourceWithRawResponse:
"""
Expand Down Expand Up @@ -607,6 +638,16 @@ def profiles(self) -> profiles.AsyncProfilesResourceWithRawResponse:

return AsyncProfilesResourceWithRawResponse(self._client.profiles)

@cached_property
def creator_emails(self) -> creator_emails.AsyncCreatorEmailsResourceWithRawResponse:
"""Look up known creator email addresses by creator ID or social username.

Empty or unresolved results are not billable.
"""
from .resources.creator_emails import AsyncCreatorEmailsResourceWithRawResponse

return AsyncCreatorEmailsResourceWithRawResponse(self._client.creator_emails)

@cached_property
def posts(self) -> posts.AsyncPostsResourceWithRawResponse:
"""
Expand Down Expand Up @@ -664,6 +705,16 @@ def profiles(self) -> profiles.ProfilesResourceWithStreamingResponse:

return ProfilesResourceWithStreamingResponse(self._client.profiles)

@cached_property
def creator_emails(self) -> creator_emails.CreatorEmailsResourceWithStreamingResponse:
"""Look up known creator email addresses by creator ID or social username.

Empty or unresolved results are not billable.
"""
from .resources.creator_emails import CreatorEmailsResourceWithStreamingResponse

return CreatorEmailsResourceWithStreamingResponse(self._client.creator_emails)

@cached_property
def posts(self) -> posts.PostsResourceWithStreamingResponse:
"""
Expand Down Expand Up @@ -721,6 +772,16 @@ def profiles(self) -> profiles.AsyncProfilesResourceWithStreamingResponse:

return AsyncProfilesResourceWithStreamingResponse(self._client.profiles)

@cached_property
def creator_emails(self) -> creator_emails.AsyncCreatorEmailsResourceWithStreamingResponse:
"""Look up known creator email addresses by creator ID or social username.

Empty or unresolved results are not billable.
"""
from .resources.creator_emails import AsyncCreatorEmailsResourceWithStreamingResponse

return AsyncCreatorEmailsResourceWithStreamingResponse(self._client.creator_emails)

@cached_property
def posts(self) -> posts.AsyncPostsResourceWithStreamingResponse:
"""
Expand Down
2 changes: 1 addition & 1 deletion src/influship/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "influship"
__version__ = "0.0.1" # x-release-please-version
__version__ = "0.1.0" # x-release-please-version
14 changes: 14 additions & 0 deletions src/influship/resources/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,14 @@
ProfilesResourceWithStreamingResponse,
AsyncProfilesResourceWithStreamingResponse,
)
from .creator_emails import (
CreatorEmailsResource,
AsyncCreatorEmailsResource,
CreatorEmailsResourceWithRawResponse,
AsyncCreatorEmailsResourceWithRawResponse,
CreatorEmailsResourceWithStreamingResponse,
AsyncCreatorEmailsResourceWithStreamingResponse,
)

__all__ = [
"HealthResource",
Expand All @@ -74,6 +82,12 @@
"AsyncProfilesResourceWithRawResponse",
"ProfilesResourceWithStreamingResponse",
"AsyncProfilesResourceWithStreamingResponse",
"CreatorEmailsResource",
"AsyncCreatorEmailsResource",
"CreatorEmailsResourceWithRawResponse",
"AsyncCreatorEmailsResourceWithRawResponse",
"CreatorEmailsResourceWithStreamingResponse",
"AsyncCreatorEmailsResourceWithStreamingResponse",
"PostsResource",
"AsyncPostsResource",
"PostsResourceWithRawResponse",
Expand Down
Loading
Loading